power bi:不同计数度量的聚合

power bi: Aggregation of Distinct Count Measure

我需要计算有多少团队只有一个关联城市和至少一名员工。我的数据集有很多列,但与本案例相关的列如下:

Team    City    Employees
A      Shanghai    3
A      Beijing     5
B      Helsinki    1
B      Beijing     0
C      Berlin      10
D      Shanghai    5
D      Berlin      6

在上面的示例中,此计数为 2(BC),我设法创建了一个度量,计算每个 team 有多少关联 cities ] 使用:

# of Cities = CALCULATE(DISTINCTCOUNT(Data[City]);FILTER('Data';Data'[Employee]>0))

为了检查哪些团队只在一个城市有员工,我尝试使用简单的方法:

Total Team w/ one city = IF( [# of Cities] = 1 ; 1 ; 0 ) 

但这不能聚合。

关于如何做的任何想法?我更愿意将它作为度量而不是新的计算列,这样我就可以根据数据集中的其他列对结果进行切片。

提前致谢!

有几种方法可以做到;例如:

Total Team w/ one city =
COUNTROWS ( FILTER ( VALUES ( Data[Team] ), [# of Cities] = 1 ) )

工作原理: VALUES 创建不同团队的列表。然后列表被过滤为 # of Cities measure = 1 per team,过滤列表的行被计算在内。

同样可以使用SUMX函数:

Total Team w/ one city =
SUMX( VALUES(Data[Team]), IF([# of Cities] = 1, 1))

另一种常见的方法是使用 SUMMARIZE 函数:

Total Team w/ one city =
COUNTROWS (
    FILTER (
        SUMMARIZE ( Data, 
                    Data[Team], 
                    "City Count", [# of Cities] ),
        [City Count] = 1 ) 
       )

在这里,我们首先按团队对数据 table 进行分组,然后计算每个团队的城市数量指标。然后,过滤分组的 table,只留下城市数量 = 1 的团队。然后计算过滤后的 table 的行数。与第一种方法相比,这种方法的优点是 SUMMARIZE 允许您按多列对 table 进行分组,而 VALUES 只允许一列。但是,第一个公式更快(如果您的数据集很大,则很重要)。

顺便说一下,# of Cities 公式可以稍微简化一下:

# of Cities = CALCULATE(DISTINCTCOUNT(Data[City]), Data'[Employees]>0)