在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结合使用,但这并不适合,因为计算列对切片器的过滤没有响应。即我想找到每个客户端的最大日期,如上图所示,用于切片器控制的过滤日期范围,而不是用于计算列所做的完整数据集。这样的措施可行吗?
答案 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;