如何使用DAX公式计算两个筛选操作的日期天数差?
问题背景
我不确定这个问题是否已经在论坛上被提出,但我还没找到答案。我有如下数据表格:
| Transaction | Operation number | Opération number_2 | Date opération |
|---|---|---|---|
| 1223 | 080 | 080 | 11/02/2023 |
| 1223 | 010 | 010 | 07/04/2022 |
| 1223 | 020 | 020 | 20/04/2022 |
| 1223 | 0150 | 0150 | 12/08/2023 |
需求是:用户通过两个筛选器(分别对应Operation number和Opération number_2)选择不同操作,计算所选两个操作的日期天数差。例如,当筛选Operation number=080、Opération number_2=010时,需要计算11/02/2023 - 07/04/2022的天数差。需要用DAX公式实现这个计算。
DAX实现方案
通过定义度量值即可实现该需求,核心逻辑是提取两个筛选器选中操作对应的日期,再计算天数差:
度量值公式
Date Difference = VAR SelectedOp1 = SELECTEDVALUE('你的表名'[Operation number]) VAR SelectedOp2 = SELECTEDVALUE('你的表名'[Opération number_2]) VAR DateOp1 = CALCULATE(MAX('你的表名'[Date opération]), '你的表名'[Operation number] = SelectedOp1) VAR DateOp2 = CALCULATE(MAX('你的表名'[Date opération]), '你的表名'[Opération number_2] = SelectedOp2) RETURN IF(NOT(ISBLANK(DateOp1)) && NOT(ISBLANK(DateOp2)), DATEDIFF(DateOp2, DateOp1, DAY), BLANK() )
公式说明
- 变量定义:
SelectedOp1/SelectedOp2:分别获取两个筛选器选中的操作编号DateOp1/DateOp2:根据选中的操作编号,提取对应的唯一日期(用MAX是因为同一操作编号对应唯一日期,MIN/VALUES也可替代)
- 差值计算:
- 用
DATEDIFF计算天数差,参数顺序为(开始日期, 结束日期, DAY),匹配示例中“Op1日期减Op2日期”的逻辑 - 用
IF判断两个日期均不为空时才返回结果,避免无筛选或筛选无效时出现错误
- 用
使用注意事项
- 替换公式中的
你的表名为实际数据表名称 - 确保
Date opération列的数据类型为日期/时间,否则DATEDIFF无法正常运行 - 两个筛选器需分别绑定到
Operation number和Opération number_2列,且每次各选中一个操作值
内容的提问来源于stack exchange,提问作者Juji
相关产品推荐
相关产品推荐

