如何编写一个度量来对给定日期范围内 Power BI 中 2 个不同日期列的行进行计数?

问题描述 投票:0回答:1

我需要创建一个基于两个不同日期列对行进行计数的度量,其中日期位于该日期期间月份。 使用 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])
    )
    )
)

date excel-formula powerbi dax measure
1个回答
0
投票

您需要指定您的列必须高于 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

))

我现在无法测试它,请告诉我它说了什么!

© www.soinside.com 2019 - 2024. All rights reserved.