【问题标题】:power bi: Aggregation of Distinct Count Measurepower bi:不同计数度量的聚合
【发布时间】:2018-08-31 19:04:44
【问题描述】:

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

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 ) 

但这不是可聚合的。

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

提前致谢!

【问题讨论】:

    标签: dax powerbi-desktop


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 谢谢,这两种方法都很有效!对于第一个,我试图过滤 COUNTROWS 函数中的整个数据表。很高兴知道如何在这种情况下使用 VALUES 函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2022-11-21
    • 1970-01-01
    • 2021-12-18
    • 2022-08-17
    相关资源
    最近更新 更多