excel - DAX:在选择中运行计数不同
问题描述
我的 Power Query 模型中有一个数据表,如下所示:
日期 | 客户ID | 类别1 | 类别2 |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 1 | 1 | 2 |
3 | 4 | 2 | 3 |
1 | 2 | 2 | 2 |
2 | 2 | 1 | 3 |
3 | 4 | 1 | 1 |
1 | 2 | 2 | 2 |
2 | 3 | 2 | 1 |
3 | 5 | 1 | 3 |
1 | 1 | 1 | 1 |
2 | 3 | 2 | 3 |
3 | 6 | 2 | 2 |
1 | 2 | 1 | 3 |
2 | 2 | 1 | 2 |
3 | 5 | 1 | 1 |
我有一个计算出不同 customer_id 的度量:
Distinct_cust:=DISTINCTCOUNT(Table1[customer_id]))
此措施在数据透视表中效果很好 - 它可以正确计算我添加到数据透视表和所有小计的任何和所有字段的所有插入。
现在我想要一个可以在给定交集范围内工作但考虑到以前的日期值的测量 - 它应该返回与 custeomer_id 不同的运行计数,但仅适用于当前数据透视表中的天数。
现在我有这样的东西,几乎可以正常工作:
Cumulative_Distinct_cust:=CALCULATE (
[Distinct_cust];
FILTER (
ALL ( 'Table1'[date] );
'Table1'[date] <= MAX ('Table1'[date])
)
)
这将返回正确运行的不同计数,但前提是未在我的数据透视表中过滤掉所有日期。一旦我从枢轴中删除第 nr 1 天,如果还考虑了第 1 天,它仍然显示第 2 天和第 3 天的运行计数不同:
我想出的蛮力解决方案是在 FILTER 语句中手动添加日过滤器,它将日期限制为仅第 2 天和第 3 天:
Cumulative_Distinct_cust:=CALCULATE (
[Distinct_cust];
FILTER (
ALL ( 'Table1'[date] );
AND(
'Table1'[date] >= 2; <-- added this to filter
'Table1'[date] <= MAX ( 'Table1'[date])
)
))
(您可以在标记为 1 的列中看到差异)
但显然,每次我想更改日期范围时,这都是丑陋和麻烦的。是否有任何方法可以传递日期字段的当前可用值以进行此计算?
解决方案
你可以这样做:
Cumulative_Distinct_cust:=VAR _date = MAX(Table1[date])
VAR _dates = CALCULATETABLE(VALUES(Table1[date]); ALLSELECTED())
VAR _rt_dates = FILTER(_dates; Table1[date]<= _date)
RETURN
CALCULATE([Distinct_cust];_rt_dates)
推荐阅读
- r - 如何在保留矩阵结构的情况下在 R 中创建热图矩阵?
- c++ - 为什么不能实例化原子对?
- javascript - 检查自 NodeJS 中上次间隔以来更改的属性
- c# - C# 检查字符串是否等于 const name
- python - 我无法在 Mac 上使用 Python3 安装 Psycopg2。我已经安装了 Python3 和 pip3
- ios - 使用 Button 生成 FlexBox 布局
- javascript - 测试方法被过度指定
- mule - Define global dataweave function in mule 3
- c - 默认情况下,局部变量中有什么?
- python - Tokenisation with Spacy - how to get left and right tokens