首页 > 解决方案 > 如何将 SQL 查询转换为 Power BI DAX 查询?

问题描述

期望的输出

嗨,我想将我的 sql 查询转换为 DAX 度量,以便过滤所有仅具有 Rank 1 的度量。我一直在尝试使用 RankX(Filter) 但我得到了重复的排名。谢谢

row_number() over(按日期分区,客户,按天输入订单)

 
┌──────────┬──────────┬──────┬──────┬────────────── ┬
│ 天 │ 客户 │ 天 │ 类型 │ 期望排名 │
├──────────┼──────────┼──────┼──────┼──────────────
│ 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 │
└──────────────────────┴──────┴──────┴────────────── ┘

标签: sqlpowerbidaxrankrow-number

解决方案


按照以下步骤来实现您所需的输出。

步骤 1:转到Power Query 编辑器并向表中添加索引列,如下图所示。这是必需的,因为您在日期、客户、类型组合的多行中具有相同的值。我试过但发现意外的 RANKX 正在生成,因为在一个组的所有行中具有相同的值。为此,创建了索引列。

创建索引列是为了在每一行中保持不同的值。本专栏没有其他目的。

在此处输入图像描述

第 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
)

这个技巧应该适合你。


推荐阅读