我需要创建一个基于两个不同日期列对行进行计数的度量,其中日期位于该日期期间月份。 使用 10/1/2023 作为参考示例,这应该返回 4 条记录。 工作日期为 <= 10/1/2023 and the Paid Date is >= 10/1/2023 如果我使用 11/1/2023 它应该返回 5 条记录。
在 Excel 中,通过添加过滤器,然后为两个日期列输入“自定义日期”,可以轻松完成此操作。 测试数据:
Excel 中的日期过滤器:
例如,在 Excel 中,自定义过滤器选项:工作日期早于或等于 10/1/2023,付费日期晚于或等于 10/1/2023
添加自定义过滤器 Excel :
数据模型同时使用活动和非活动关系。 我如何将其转换为 DAX?
订购日期 | 订单结束月份 | 叉子 | 餐巾 | 工作日期 | 付费日期 |
---|---|---|---|---|---|
2023年2月13日 | 2023 年 2 月 1 日 | 1 | 0 | ||
2023 年 2 月 23 日 | 2023 年 2 月 1 日 | 1 | 0 | ||
2023 年 3 月 2 日 | 2023 年 3 月 1 日 | 1 | 0 | 2023 年 3 月 1 日 | 2023年6月12日 |
2019/10/22 | 2019年10月1日 | 1 | 0 | 2019年10月1日 | 2023年11月26日 |
2019/10/29 | 2019年10月1日 | 1 | 0 | ||
2019/12/23 | 2019/12/1 | 1 | 0 | 2019/12/1 | 2020年10月22日 |
2023 年 4 月 4 日 | 2023 年 4 月 1 日 | 1 | 0 | ||
2023 年 4 月 18 日 | 2023 年 4 月 1 日 | 1 | 5 | 2023 年 4 月 1 日 | 2023 年 6 月 22 日 |
2019年3月26日 | 2019年3月1日 | 1 | 3 | 2019年4月1日 | 2019年8月30日 |
2019年4月30日 | 2019年4月1日 | 1 | 0 | ||
2019年5月28日 | 2019年5月1日 | 1 | 0 | ||
2019年6月4日 | 2019年6月1日 | 1 | 1 | 2019年6月1日 | 2023 年 7 月 15 日 |
2023年10月31日 | 2023 年 10 月 1 日 | 1 | 1 | 2023 年 11 月 1 日 | 2023年12月14日 |
2019年7月9日 | 2019年7月1日 | 1 | 4 | 2019年7月1日 | 2019/8/21 |
2018年7月31日 | 2018年7月1日 | 1 | 2 | 2018年8月1日 | 2018年10月10日 |
2018年3月13日 | 2018年3月1日 | 1 | 1 | ||
2019/7/23 | 2019年7月1日 | 1 | 0 | 2019年8月1日 | 2019/9/24 |
2019/10/24 | 2019年10月1日 | 1 | 0 | 2019/11/1 | 2023 年 12 月 11 日 |
2019/10/17 | 2019年10月1日 | 1 | 0 | ||
2019/11/25 | 2019/11/1 | 1 | 0 | ||
2019年12月3日 | 2019/12/1 | 1 | 1 | 2019/12/1 | 2023年11月15日 |
2020年1月7日 | 2020年1月1日 | 1 | 7 | 2020年2月1日 | 2020年2月28日 |
2020年1月2日 | 2020年1月1日 | 1 | 2 | 2020年1月1日 | 2020年2月18日 |
使用 10/1/2023 作为参考示例,这应该返回 4 条记录。 工作日期为 <= 10/1/2023 and the Paid Date is >= 10/1/2023 如果我使用 11/1/2023 它应该返回 5 条记录。
以下是我尝试过但不成功的一些措施。最接近真实结果的是 TestD,但即使这样也非常不准确。
TestA = CALCULATE(
SUMX (
'Date',
CALCULATE (
COUNTROWS ( 'TestData' ),
FILTER (
'TestData',
[Date] <= 'TestData'[WorkDate]
&& [Date] <= 'TestData'[PaidDate]
)
)
)
)
TestB = CALCULATE(
COUNTROWS(
FILTER('TestData', 'TestData'[WorkDate] <= MAX('Date'[Date])
)
)
)
TestC = CALCULATE(
COUNTROWS('TestData')
,'TestData'[WorkDate] <= MAX('Date'[Date]) && 'TestData'[PaidDate] >= MAX('Date'[Date])
)
TestD = CALCULATE(
COUNTROWS(
FILTER(
ALL('TestData'),
'TestData'[WorkDate] <= MAX('Date'[Date])
&&
'TestData'[PaidDate] >= MAX('Date'[Date])
)
)
)
您需要指定您的列必须高于 min(calendar[date]) 且小于 max(calendar[date])。
我在类似的情况下使用了这个 dax 代码,我需要使用多个日期列每月进行计数:
COUNTROWS(
FILTER(
Table-name,
[date1] >= MIN(Calendar[date]) // date1 must be in the current month 1/2
&& [date1] <= MAX(Calendar[date] // date1 must be in the current month 2/2
&& [date2] >= MIN(Calendar[date]) // date 2 must be in the current month 1/2
&& [date2] <= MAX(Calendar[date] // date2 must be in the current month 2/2
))
我现在无法测试它,请告诉我它说了什么!