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

中的维度代入