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

时间:2018-08-31 07:43:30

标签: dax powerbi-desktop

我需要计算有多少个团队只有一个相关城市以及至少一名员工。我的数据集有很多列,但是与这种情况相关的列如下:

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 ) 

但这不是聚合的。

有关如何操作的任何想法?我希望将其作为度量而不是新的计算列,以便可以根据数据集中的其他列对结果进行切片。

谢谢!

1 个答案:

答案 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)