我需要计算有多少个团队只有一个相关城市以及至少一名员工。我的数据集有很多列,但是与这种情况相关的列如下:
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 )
但这不是聚合的。
有关如何操作的任何想法?我希望将其作为度量而不是新的计算列,以便可以根据数据集中的其他列对结果进行切片。
谢谢!
答案 0 :(得分:1)
有几种方法可以做到这一点;例如:
Total Team w/ one city =
COUNTROWS ( FILTER ( VALUES ( Data[Team] ), [# of Cities] = 1 ) )
工作原理: VALUES创建了一组不同的团队。然后,针对每个团队的城市数量度量= 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 = CALCULATE(DISTINCTCOUNT(Data[City]), Data'[Employees]>0)