通过DAX衡量的最大分区等效吗?

时间:2018-07-11 09:51:56

标签: sql powerbi dax

在DAX / Power BI中,我想知道是否可以对数据集中的数据子集创建汇总计算。

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

turn

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

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

等效的SQL类似于-

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

在DAX / Power BI中,我意识到可以将计算列与EARLIER结合使用,但这并不适合,因为计算列对切片器的过滤没有响应。即我想找到每个客户端的最大日期,如上图所示,用于切片器控制的过滤日期范围,而不是用于计算列所做的完整数据集。这样的措施可行吗?

2 个答案:

答案 0 :(得分:1)

您将需要这样的度量:

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])的度量。

答案 1 :(得分:0)

您可以使用subquery

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