DAX分组和计算列中的排名

问题描述

我的原始数据停止销售-寻找一些DAX帮助,将后两个添加为计算列。


  customer_id   order_id   order_date   sales   total_sales_by_customer   total_sales_customer_rank  
 ------------- ---------- ------------ ------- ------------------------- --------------------------- 
  BM                   1   9/2/2014       476                       550   1                          
  BM                   2   10/27/2016      25                       550   1                          
  BM                   3   9/30/2014       49                       550   1                          
  RA                   4   12/18/2017      47                       525   3                          
  RA                   5   9/7/2017       478                       525   3                          
  RS                   6   7/5/2015         5                         5   other                      
  JH                   7   5/12/2017        6                         6   other                      
  AG                   8   9/7/2015         7                         7   other                      
  SP                   9   5/19/2017       26                       546   2                          
  SP                  10   8/16/2015      520                       546   2                          

解决方法

让我们从客户的总销售额入手:

total_sales_by_customer = 
var custID = orders[customer_id]
return CALCULATE(SUM(orders[sales],FILTER(orders,custID = orders[customer_id]))

首先,我们获得客户ID,在该ID上过滤订单表,然后根据每个客户对其求和。

接下来的排名:

total_sales_customer_rank = 
var rankMe = RANKX(orders,orders[total_sales_by_customer],Dense)
return if (rankMe > 3,"other",CONVERT(rankMe,STRING))

我们获得每笔客户销售的排名(从第一列中获得),如果该排名大于3,则替换为“其他”

关于第一个问题:DAX与编程语言不同。每行都是单独评估的。让我们开始第一行:您的custID为“ BM”。 接下来,我们计算所有销售额的总和。我们根据custID过滤整个表并将其加和。因此,在筛选器中,实际上只有3行! 对于每一行都重复此过程,似乎很慢,但我只是告诉了这一点,以便您可以了解返回的结果。实际上,有聪明的逻辑可以快速返回数据。 您想做什么“订单[客户ID] =订单[客户ID]”是不可能的,因为您的订单[客户ID]位于过滤器中,并且将与行一起运行。.

var custid = VALUES(Orders [客户ID])值返回一个单列表,您不能在过滤器中使用它,因为您随后将一个单元格值与一个表进行比较。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...