如何将SQL查询转换为Power BI DAX查询?

时间:2020-08-10 07:19:57

标签: sql powerbi dax rank row-number

Desired Output

您好,我想将我的sql查询转换为DAX措施,以仅过滤具有等级1的所有数据。我一直在尝试使用RankX(Filter),但是我得到了重复的排名。谢谢

row_number()以上(按日期分区,客户,按日期键入订单)

 
┌──────────┬──────────┬─────┬──────┬──────────────┬
│ Day      │ Customer │ Day │ Type │ Desired Rank │
├──────────┼──────────┼─────┼──────┼──────────────
│ 6/1/2020 │ DDD      │   1 │ D    │            1 │
│ 6/1/2020 │ DDD      │   0 │ M    │            1 │
│ 6/1/2020 │ DDD      │   1 │ D    │            2 │
│ 6/1/2020 │ DDD      │   0 │ M    │            3 │
│ 6/1/2020 │ FFF      │   0 │ M    │            1 │
│ 6/1/2020 │ FFF      │   0 │ M    │            2 │
│ 6/1/2020 │ FFF      │   0 │ M    │            3 │
│ 6/1/2020 │ FFF      │   0 │ M    │            4 │
│ 6/1/2020 │ BBB      │   1 │ D    │            1 │
│ 6/1/2020 │ BBB      │   0 │ M    │            1 │
│ 6/1/2020 │ BBB      │ 0   │ M    │            2 │ 
│ 6/1/2020 │ BBB      │ 0   │ M    │            3 │
│ 6/2/2020 │ FFF      │ 2   │ D    │            1 │
│ 6/2/2020 │ BBB      │ 2   │ D    │            1 │
│ 6/3/2020 │ FFF      │ 3   │ D    │            1 │ 
│ 6/3/2020 │ FFF      │ 3   │ D    │            2 │
│ 6/3/2020 │ FFF      │ 3   │ D    │            3 │
│ 6/4/2020 │ DDD      │ 4   │ D    │            1 │
│ 6/4/2020 │ DDD      │ 4   │ D    │            2 │
│ 6/4/2020 │ DDD      │ 4   │ D    │            3 │
│ 6/4/2020 │ FFF      │ 4   │ D    │            1 │
│ 6/4/2020 │ FFF      │ 4   │ D    │            2 │
│ 6/5/2020 │ EEE      │ 5   │ D    │            1 │
│ 6/5/2020 │ EEE      │ 5   │ D    │            2 │
│ 6/5/2020 │ DDD      │ 5   │ D    │            1 │
│ 6/5/2020 │ DDD      │ 5   │ D    │            2 │
│ 6/5/2020 │ DDD      │ 5   │ D    │            3 │
│ 6/5/2020 │ FFF      │ 5   │ D    │            1 │
└─────────────────────┴─────┴──────┴──────────────┘

1 个答案:

答案 0 :(得分:0)

请按照以下步骤操作,以实现所需的输出。

第1步::转到 Power Query Editor (电源查询编辑器),然后将索引列添加到表中,如下图所示。这是必需的,因为您在日期,客户,类型组合的多行中具有相同的值。我尝试过,但发现意外的RANKX生成的一组组的所有行都具有相同的值。因此,创建了索引列。

创建索引列以仅在每行中保留不同的值。此列没有其他用途。

enter image description here

第2步::点击“关闭并应用”按钮,返回到您的报告。

步骤3:现在,使用以下代码在表中创建自定义列-

group_wise_rank = 

RANKX (
    FILTER (
        'your_table_name',
        'your_table_name'[Date] = EARLIER ('your_table_name'[Date])
            && 'your_table_name'[Customer] = EARLIER ('your_table_name'[Customer])
            && 'your_table_name'[Type] = EARLIER ('your_table_name'[Type])
    ),
    'your_table_name'[Index],
    ,
    ASC
)

这个技巧应该对您有用。