powerbi - 在 DAX 中计算多个条件下的记录
问题描述
我有 2 张桌子。
A. 客户表。键列包括 1. 客户 ID(主键)和 2. 首次购买日期(在日期字段中)和 3. 首次购买日期年份和月份(在文本中,如 Jul 01)。
B. 销售表。键列包括 1. 客户 ID(外键)和 2. 销售订单日期(在日期字段中)。
两个表都是一对多的关系。我想知道有多少客户在首次购买后 60 天内退货,按首次购买日期年份和月份分组。例如,
- Jul-01 将有 2 位回头客在首次购买后 60 天内退货
- Aug-01 60 天内无回头客
- Sep-01 60 天内有 1 位回头客
然后,我将在数据透视表中计算每个第一个购买月的回头客百分比,如下所示。
我想要的结果是下面的数据透视表: 在此处输入图像描述
我可以通过在客户表中添加一个计算列并在 dax 下面作为过滤器添加到 1(客户在 60 天内重新订购)或 0,然后在数据透视表字段中计算:
IF(CALCULATE(COUNT(Sales[ProductKey]),FILTER(Sales,Sales[OrderDate]>Customers[DateFirstPurchase] && Sales[OrderDate] - Customers[DateFirstPurchase] <=60 && Sales[CustomerKey] = Customers[CustomerKey])) >0,1,0)
但是由于销售量很大,在这种情况下使用过滤器不是最佳实践。因此,这可以通过以下任一方式实现:
- 不在计算列中使用过滤器功能?即检查客户表中的匹配记录?或其他方式?或者,理想情况下
- 使用 Dax 而不是添加计算列。
非常感谢您的帮助。谢谢。
解决方案
如果您在模型中有关系,那么您不需要 Sales[CustomerKey] = Customers[CustomerKey]; 尝试使用此计算(未经测试)。
MeasureToCount = CALCULATE (
COUNTROWS (
CALCULATETABLE (
VALUES(Sales[CustomerKey]),
FILTER (
Sales,
Sales[SalesOrderDate] > RELATED(Customer[FirstPurchase])
&& (Sales[SalesOrderDate]) <= ( RELATED(Customer[FirstPurchase]) + 60 )
)
)
)
)
现在,如果您将“年份和月份”添加到带有度量的表格可视化中,那应该可以工作。
推荐阅读
- mongodb - 从数据库汇总费率
- c# - 使用 WPF、MVVM 和 DP 的用户控制
- azure - Service Fabrice 本地集群管理器节点设置错误
- laravel - 带有文件夹的版本资产?
- amazon-web-services - 提供的证书不是有效的自签名证书。请提供有效的自签名证书或证书链
- amazon-web-services - 使用 AWS CloudFormation 估计模板成本来获取实时 CloudFormation 堆栈的估计成本
- c# - 如何在 Visual Studio 中搜索评论?(对比 2015 年)
- r - R:根据每个循环中的行值显示列的单元格值
- c# - 如何复制两个相似的列表?
- sqlalchemy - 如何两次删除一个对象