按客户计算最早与最晚日期——DAX技术问题求助
解决DAX计算客户最早/最晚日期的问题
你的公式返回日期表全局最早日期的原因是:ALLEXCEPT(FctTrc, FctTrc[Customer])仅对事实表FctTrc施加了筛选(保留当前客户的所有记录),但DimDate[Date]的上下文并未被限制为该客户对应的交易日期,因此MIN(DimDate[Date])会直接返回整个日期表的最小值。
以下是两种可行的修正方案:
方案1:直接使用事实表中的日期列
如果FctTrc本身存储了交易日期(比如FctTrc[TransactionDate]),直接基于该列计算:
First Contact Column = CALCULATE ( MIN(FctTrc[TransactionDate]), ALLEXCEPT(FctTrc, FctTrc[Customer]) )
方案2:通过关联日期表获取对应日期
如果FctTrc仅存日期外键(如FctTrc[DateKey]关联DimDate[DateKey]),需要将日期表的范围限制在当前客户的交易记录内:
First Contact Column = MINX ( CALCULATETABLE(FctTrc, ALLEXCEPT(FctTrc, FctTrc[Customer])), RELATED(DimDate[Date]) )
或者用CALCULATE结合RELATEDTABLE实现:
First Contact Column = CALCULATE ( MIN(DimDate[Date]), RELATEDTABLE(FctTrc), ALLEXCEPT(FctTrc, FctTrc[Customer]) )
补充说明
- 上述公式针对计算列场景,会为每个客户行返回对应的最早日期;如果是创建度量值,逻辑类似,但需注意报表上下文的筛选差异。
- 确保
FctTrc和DimDate之间的关联关系正确(通常是1对多,DimDate为1端)。
内容的提问来源于stack exchange,提问作者Error 1004
相关产品推荐
相关产品推荐

