Excel PowerPivot 计算之前未计算的时间段内的新项目和不同项目
Excel PowerPivot Count new and distinct items in a period not counted before
假设我有以下数据table:
Period | ID
-----------
P1 | 1
P2 | 1
P1 | 2
P2 | 3
P1 | 2
我只对唯一 ID 的数量/周期感兴趣,前提是 ID 尚未在上一个周期中计算过,按字母顺序排列。源本身中每个周期的 ID 可能已经出现多次,应计为 1 / peroid(不同计数)。
此外,数据源不是按时间段预先排序的,我对排序顺序没有影响。
所以我想在 Pivot 中得到的结果是这样的:
Period | Number of Unique IDs not already counted
-------------------------------------------------
P1 | 2 # Because the are uniquelly ID 1 and 2 in the period
P2 | 1 # Only counting ID 3, because ID 1 has already been counted in period 1
请帮助我了解可以在 Pivot 中使用的 DAX 度量。
这是一种方法,需要重新定位列并添加新列。这假设您在 ID/Period 组合中没有重复项。您没有在样本中列出任何重复项,所以我在做这个假设。
在我的数据中,我将 ID 作为 A 列,将 Period 作为 B 列。
按时间段升序排列您的数据。然后在 C 列中,您可以使用此公式来确定之前是否使用过该 ID。
Cell C2 formula: =IF(VLOOKUP(A2,A:B,2,FALSE) = B2,1,0)
将其复制下来,然后创建你的数据透视表 table,对 C 列求和。
这是用 DAX 编写的度量。它应该在枢轴 table 中工作,并在行
上选择 Period
DistinctID =
VAR PeriodsPerId =
SELECTCOLUMNS (
ALL ( T[ID] ),
"ID", T[ID],
"Period", CALCULATE ( MIN ( T[Period] ), ALLEXCEPT ( T, T[ID] ) )
)
RETURN
COUNTROWS ( FILTER ( PeriodsPerId, [Period] IN VALUES ( T[Period] ) ) )
它首先准备一个包含每个 ID 的最小周期的 table 变量,然后过滤此 table 当前选择中的周期。
当然,如果Period是通过维度选择的,将最后的VALUES
中的维度代入
假设我有以下数据table:
Period | ID
-----------
P1 | 1
P2 | 1
P1 | 2
P2 | 3
P1 | 2
我只对唯一 ID 的数量/周期感兴趣,前提是 ID 尚未在上一个周期中计算过,按字母顺序排列。源本身中每个周期的 ID 可能已经出现多次,应计为 1 / peroid(不同计数)。
此外,数据源不是按时间段预先排序的,我对排序顺序没有影响。
所以我想在 Pivot 中得到的结果是这样的:
Period | Number of Unique IDs not already counted
-------------------------------------------------
P1 | 2 # Because the are uniquelly ID 1 and 2 in the period
P2 | 1 # Only counting ID 3, because ID 1 has already been counted in period 1
请帮助我了解可以在 Pivot 中使用的 DAX 度量。
这是一种方法,需要重新定位列并添加新列。这假设您在 ID/Period 组合中没有重复项。您没有在样本中列出任何重复项,所以我在做这个假设。
在我的数据中,我将 ID 作为 A 列,将 Period 作为 B 列。
按时间段升序排列您的数据。然后在 C 列中,您可以使用此公式来确定之前是否使用过该 ID。
Cell C2 formula: =IF(VLOOKUP(A2,A:B,2,FALSE) = B2,1,0)
将其复制下来,然后创建你的数据透视表 table,对 C 列求和。
这是用 DAX 编写的度量。它应该在枢轴 table 中工作,并在行
上选择 PeriodDistinctID =
VAR PeriodsPerId =
SELECTCOLUMNS (
ALL ( T[ID] ),
"ID", T[ID],
"Period", CALCULATE ( MIN ( T[Period] ), ALLEXCEPT ( T, T[ID] ) )
)
RETURN
COUNTROWS ( FILTER ( PeriodsPerId, [Period] IN VALUES ( T[Period] ) ) )
它首先准备一个包含每个 ID 的最小周期的 table 变量,然后过滤此 table 当前选择中的周期。 当然,如果Period是通过维度选择的,将最后的VALUES
中的维度代入