【问题标题】:Row number partition by to POWER BI DAX query按到 POWER BI DAX 查询的行号分区
【发布时间】:2020-07-26 15:42:41
【问题描述】:

有人可以帮我将 sql 字符串转换为 Dax 吗?

row_number() p over(按日期、客户、按天排序)enter image description here

行号是我想要的输出。

【问题讨论】:

    标签: powerbi dax rownum


    【解决方案1】:

    假设您的数据如下表所示:

    Sample
    +------------+----------+---------+--------+
    |    Date    | Customer | Product | Gender |
    +------------+----------+---------+--------+
    | 01/01/2018 |     1234 | P2      | F      |
    | 01/01/2018 |     1234 | P2      | M      |
    | 03/01/2018 |     1235 | P1      | F      |
    | 03/01/2018 |     1235 | P2      | F      |
    +------------+----------+---------+--------+
    

    我使用 RANKX 和 FILTER 函数创建了一个名为 Rank 的计算列。

    计算的第一部分是在 FILTER 函数范围之外创建变量。第二部分使用带有表达式值的 RANKX(在本例中为 Gender)对值进行排序。

    Rank = 
    VAR _currentdate = 'Sample'[Date]
    VAR _customer = 'Sample'[Customer]
    var _product = 'Sample'[Product]
    
    return
    RANKX(FILTER('Sample',
    [Date]=_currentdate &&
    [Customer] = _customer &&
    [Product] = _product),[Gender],,ASC)
    

    输出是

    我将输出与等效的 SQL 进行了对比。

    select 
    *, 
    row_number() over(partition by Date,Customer,Product order by Gender) 
    from (
    select '2018-01-01' as Date,1234 as CUSTOMER,'P2' AS PRODUCT, 'M' Gender union
    select '2018-01-01' as Date,1234,'P2','F' UNION
    select '2018-01-03' as Date,1235,'P1','F' UNION
      select '2018-01-03' as Date,1235,'P2','F' 
    )t1
    
    

    【讨论】:

    • PARTITION BY 将是您的过滤器,而您的 ORDER BY 将是表达式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2021-09-05
    • 1970-01-01
    • 2019-11-08
    相关资源
    最近更新 更多