首页 > 解决方案 > 仅当上一季度访问过相同的客户 ID 时,如何明确计算在给定季度访问商店的客户 ID

问题描述

我有一张桌子

+-----------+---------+--------+--------+--------- +
|客户 ID|访问日期|类别|产品|服务对象|
+-----------+---------+--------+--------+--------- +
|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 酒吧 |
|1003 |11/11/2018|D |P16 |Foo 酒吧 |
|1006 |09/10/2018|C |P17 |Foo 酒吧 |
|1009 |10/10/2018|G |P18 |Foo 酒吧 |
+-----------+---------+--------+--------+--------- +

上一季度有 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。

标签: daxpowerbi-desktop

解决方案


您的第二种方法看起来很合理。DISTINCT不带and试试FILTER

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函数返回其列参数的不同值的列表,这些值位于其过滤器上下文中。


推荐阅读