首页 文章

DAX最大分区测量等效?

提问于
浏览
1

在DAX / Power BI中,我想知道是否可以在数据集中的数据子集上创建聚合计算 .

我有一段时间的客户分数列表,例如

date,   customer, score
-----------------------
1.1.17, A,        12
2.1.17, A,        16
4.1.17, B,        10
5.1.17, B,        14

我想确定每个客户的最大日期,例如 .

date,   customer, score, max date per client
-------------------------------------------
1.1.17, A,        12,    2.1.17
2.1.17, A,        11,    2.1.17
4.1.17, B,        10,    5.1.17
5.1.17, B,        14,    5.1.17

SQL等价物会像 -

MAX(date) OVER (PARTITION BY customer).

在DAX / Power BI中,我意识到计算列可以与EARLIER结合使用,但这不合适,因为计算列不响应从切片器过滤 . I.e我想找到每个客户端的MAX日期,如上所示,是从切片器控制的过滤日期范围,而不是计算列所做的完整数据集 . 这样的措施可能吗?

3 回答

  • 0

    你会想要一个像这样的措施:

    Max Date by Customer = 
        CALCULATE(
            MAX(Table1[Date]),
            FILTER(
                ALLSELECTED(Table1),
                Table1[customer] = MAX(Table1[customer])
             )
         )
    

    ALLSELECTED 删除了本地过滤器上下文,同时保留了任何切片器过滤 .

    过滤器 Table1[customer] = MAX(Table1[customer]) 基本上是计算列中 Table1[customer] = EARLIER(Table1[customer]) 的度量值 .

  • 0

    你可以使用 subquery

    select *, (select max(t1.date) 
               from table t1 
               where t1.customer = t.customer
              ) as max_date_per_client
    from table t;
    
  • 1

    假设您的表名是“Table” . 首先,为最大日期创建一个度量(而不是列):

    Max Date = MAX(Table[Date])
    

    其次,创建另一个按客户重新计算最大日期的度量:

    Max Date by Customer =
    CALCULATE ( [ Max Date], ALL ( Table ), VALUES ( Table[Customer] ) )
    

相关问题