仅在上一季度访问过同一客户ID的情况下,才如何区分在给定季度访问过商店的客户ID

时间:2019-04-17 12:45:22

标签: dax powerbi-desktop

我有一张桌子

+-----------+----------+--------+-------+---------+
|Customer ID|Visit Date|Category|Product|Served by|
+-----------+----------+--------+-------+---------+
|1001       |03/17/2019|A       |P11    |Jone Doe |
|1003       |03/17/2019|D       |P12    |Jone Doe |
|1006       |03/15/2019|C       |P13    |Jone Doe |
|1009       |03/10/2019|G       |P14    |Jone Doe |
|1011       |12/12/2018|H       |P15    |Foo Bar  |
|1003       |11/11/2018|D       |P16    |Foo Bar  |
|1006       |09/10/2018|C       |P17    |Foo Bar  |
|1009       |10/10/2018|G       |P18    |Foo Bar  |
+-----------+----------+--------+-------+---------+

有4个客户,但上一季度仅拜访了2个(1003和1009)。

我使用了DATESINPERIOD,但是在前几个季度之间(我有一个指定的日期表),它的计数全部不同。

第一种方法

customers_count =
CALCULATE (
    DISTINCTCOUNT[Customer ID],
    DATESINPERIOD (
        'Calendar'[Date],
        ENDOFQUARTER ( 'Calendar'[Date] ),
        -2,
        QUARTER
    )
)

第二种方法

customers_count 2Q =
VAR customers_count_1 =
    DISTINCT ( FILTER ( VALUES ( Orders[Customer ID] ) ) )
VAR customers_count_2 =
    CALCULATETABLE (
        DISTINCT ( FILTER ( VALUES ( Orders[Customer ID] ) ) ),
        DATEADD ( 'Calendar'[Date], -1, QUARTER )
    )
RETURN
    COUNTROWS ( INTERSECT ( customers_count_1, customers_count_2 ) )

上个季度的预期数量为2。

1 个答案:

答案 0 :(得分:0)

您的第二种方法看起来很合理。在没有DISTINCTFILTER的情况下进行尝试。

customers_count 2Q =
VAR customers_count_1 =
    VALUES ( Orders[Customer ID] )
VAR customers_count_2 =
    CALCULATETABLE (
        VALUES ( Orders[Customer ID] ),
        DATEADD ( 'Calendar'[Date], -1, QUARTER )
    )
RETURN
    COUNTROWS ( INTERSECT ( customers_count_1, customers_count_2 ) )

VALUES函数返回其列参数在过滤器上下文内的不同值的列表。