DAX分组评估

问题描述

在这种情况下-我正在创建一个临时表以按客户ID分组,并返回每个客户的最小order_date年。然后,我要计算给定年份内出现的客户数量(基本上只是行数)。

我正在努力理解的是-这个公式似乎并没有考虑其中的SUMMARIZE表。如果将年份和该度量标准放在一个矩阵中,则它将基于原始表进行计数,而不是根据公式中SUMMARIZE构建的分组版本进行计数。有什么想法为什么要用这种方式进行评估?

COUNTROWS(
SUMMARIZE(
    Orders,Orders[Customer ID],"min_order_date_year",MIN(Orders[Order Date].[Year])))

解决方法

根据您提供给它的逻辑,该公式还可以。您必须清除您的要求以及您在代码中编写的内容。您的公式返回的正是您所指示的内容。

如果我理解正确,那么您只需要最小年份的客户数。可以说,如果您有6个2019年的唯一客户和11个2020年的唯一客户,那么您正在此处寻找要按度量返回的价值6。

现在,您的汇总表实际返回了什么?如果仅按以下方式为Summarize代码创建一个单独的自定义表,则可以看到该表实际上将在第一列中包含所有客户名称/ id,第二列将显示该客户可用的MIN年。

orders_summarize = 
SUMMARIZE(
    Orders,Orders[customer id],"min_order_date_year",MIN(Orders[Order Date].[Year])
)

因此,基本上,您在汇总表中有所有客户的列表。现在,您正在计数汇总表中的行,该表实际上返回的是唯一身份客户的总数。

最后,如果您希望特定年份(例如MIN年)的客户计数,请按照以下步骤操作-

步骤1:如下创建自定义汇总表-

store_summarized_table = 
SUMMARIZE(
    store,store[Customer ID],"mindate",MIN(store[Order Date])
)

第2步:创建度量为-

count_cust_id = COUNT('store_summarized_table'[Customer ID])

第3步::现在,如下图所示配置Matrix视觉效果。您还可以在图像中获得输出-

enter image description here

为避免出现物理表,您可以在下面进行操作-

步骤1:,如下所示创建自定义列-

is_min_year = 

// -- keep current row's customer id to a variable
VAR current_cust_id = store[Customer ID]
// -- keep current row's YEAR value to a variable
VAR current_year = store[Order Date].[Year]

// -- find the MIN YEAR from order date for the current row customer id
VAR min_year_current_custommer_id =  
CALCULATE(
    MIN(store[Order Date].[Year]),FILTER(
        store,store[Customer ID] = current_cust_id
    )
)

// -- check the current row's year is the MIN year of order date for the customer as well or not.
RETURN IF(current_year = min_year_current_custommer_id,1,0)

OR 创建度量为-

is_min_year_measure = 

VAR min_order_year_for_current_customer = 
CALCULATE(
    MIN(store[Order Date].[Year]),FILTER(
        ALL(store),store[Customer ID] = MIN(store[Customer ID])
    )
)

RETURN
IF ( MIN(store[Order Date].[Year]) = min_order_year_for_current_customer,0)

步骤2:如下创建度量-

用于创建的自定义列

count_cust_for_min_year = 
CALCULATE(
    DISTINCTCOUNT(store[Customer ID]),store[is_min_year] = 1
    )
)

用于创建的度量

count_cust_for_min_year = 
CALCULATE(
    DISTINCTCOUNT(store[Customer ID]),[is_min_year_measure] = 1
    )
)

现在在您的矩阵中添加“订购日期”并测量“ count_cust_for_min_year”。输出结果将与以下相同-

enter image description here

相关问答

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