问题描述
在这种情况下-我正在创建一个临时表以按客户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视觉效果。您还可以在图像中获得输出-
为避免出现物理表,您可以在下面进行操作-
步骤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”。输出结果将与以下相同-