dax - 仅当上一季度访问过相同的客户 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。
解决方案
您的第二种方法看起来很合理。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
函数返回其列参数的不同值的列表,这些值位于其过滤器上下文中。
推荐阅读
- node.js - 如何使用量角器逐个下载文件并等待每个文件下载后再进行下一次下载操作?
- python - 用对应的图像制作一个列表
- javascript - 如何在 Django 中重新排序对象的位置?
- c# - 当不存在数据时,返回具有状态代码 200 而不是 404 Not Found 错误的空数据集
- model-view-controller - 将 VUEX (nuxt.js) 用于具有 API 的 CRUD 运算符的最佳解决方案是什么?
- javascript - Angular - 传递函数作为输入
- docker - 在 Dockerfile 中,复制当前目录除一个目录外的所有内容
- javascript - 使用 Fabric.js 中的复选框使对象隐藏/可见
- flutter - 创建标签栏和小部件后,模拟器在打开应用程序时会出现这样的错误
- python - 错误:int 对象不可迭代,如何解决?