在表格SSAS模型中,我试图计算在YTD时间范围内购买给定产品的不同客户的数量 . 该表包含非显式总和的度量,因此无论销售情况如何,我都会获得每个客户的所有产品的笛卡尔积 . 我试图通过过滤YTD Sales = 0的客户/产品组合来限制计数 . 但是,我无法让FILTER识别DATESYTD上下文 . 它只根据所选日历月内存在的销售额进行过滤 . 我试过每个方向都插入ALL函数 .
这就是我到目前为止所拥有的 .
Measure:
CALCULATE (
DISTINCTCOUNT ( Fact[Customer] ),
DATESYTD ( Calendar[Date] ),
FILTER ( Fact,
CALCULATE ( [Sum of Sales], DATESYTD ( Calendar[Date] ) ) <> 0
)
)
例如,如果明确选择了第5个月,则该措施将计算在第5个月购买产品的不同客户 . 但是,它不会包括在同一个月的第2个月购买该项目的客户 .
1 回答
我认为以下DAX应该可以解决这个问题:
另外,请确保'Calendar'表已标记为日期表 . 如果由于某种原因,您不希望将其标记为日期表,请将上述DAX重写为:
Edit: 您的事实表中是否有
[Sum of Sales]
为0的记录?如果没有,那么您可以通过编写以下内容来大大简化并提高性能:同样,如果您没有't marked your '日历'表作为日期表,请添加
ALL(Calendar)
以删除特定日历列上的过滤器 .