我需要计算有多少团队只有一个关联城市,至少有一名员工。我的数据集有很多列,但本案例的相关内容如下:
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(B
和C
),我设法创建一个度量,计算每个cities
使用的相关team
的数量:
# 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过滤列表,并计算过滤列表的行数。
同样,您可以使用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)