power bi:不同计数量的聚合

问题描述 投票:1回答:1

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

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),我设法创建一个度量,计算每个cities使用的相关team的数量:

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

为了检查哪个团队只有一个城市的员工我尝试使用简单的措施:

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

但那不是可聚合的。

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

提前致谢!

dax powerbi-desktop
1个回答
2
投票

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

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

工作原理:VALUES创建一个不同团队的列表。然后,对每个团队的#of Cities measure = 1过滤列表,并计算过滤列表的行数。

同样,您可以使用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 ) 
       )

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

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

# of Cities = CALCULATE(DISTINCTCOUNT(Data[City]), Data'[Employees]>0)
© www.soinside.com 2019 - 2024. All rights reserved.