【问题标题】:DAX Measure to calculate the distinct feature counts across Manufacture & ProductsDAX Measure 用于计算制造和产品中的不同特征数
【发布时间】:2019-05-07 11:51:52
【问题描述】:

我正在尝试构建一个 DAX 度量,该度量将基于基础制造商计算制造商产品的不同特征。

表格列如下

Manufacturer Product Features
Honda Civic Feature1
Honda Civic Feature2
Honda Civic Feature3
Maruti Ciaz Feature1
Maruti Ciaz Feature4
Maruti Ciaz Feature5
Toyato Camry Feature2
Toyoto Camry Feature4
Toyoto Camry Feature6
Toyoto Camry Feature7

当使用制造商作为每一行创建数据透视表时,我想在一列中显示总特征,在第 2 列中显示不同特征。

Manufacturer - TotalCount - DistinctCountOverHonda
Honda - 3 - 3
Maruthi - 3 - 2 ( Feature4, Feature5) are the distinct features, when compared to Honda
Toyoto - 4 - 3 ( Feature4, Feature6, Feature7) are the unique features over Honda.

请帮助我为 DistinctCountOverHonda 编写度量并应用过滤器以删除重复项并仅保留制造商的独特功能存在于数据透视表行中。

在上面的示例中,我将本田作为与其他制造商进行比较的基础。可能,我会添加一个切片器供用户动态选择基础制造商作为参数表,并根据用户选择反映的计数。

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    基本上,您希望找到两家制造商的所有独特功能组合,然后减去本田的独特功能。

    DistinctCountOverBase =
    VAR CurrentManufacturer =
        SELECTEDVALUE ( Table1[Manufacturer] )
    VAR CombinedFeatures =
        CALCULATETABLE (
            DISTINCT ( Table1[Features] ),
            Table1[Manufacturer] IN { CurrentManufacturer, "Honda" }
        )
    VAR HondaFeatures =
        CALCULATETABLE ( DISTINCT ( Table1[Features] ), Table1[Manufacturer] = "Honda" )
    RETURN
        IF (
            CurrentManufacturer = "Honda",
            COUNTROWS ( HondaFeatures ),
            COUNTROWS ( CombinedFeatures ) - COUNTROWS ( HondaFeatures )
        )
    

    这里有一个更通用的解决方案:

    DistinctCountOverBase =
    
    VAR Base = "Honda"
    
    VAR CurrentManufacturer =
        VALUES ( Table1[Manufacturer] )
    
    VAR CombinedFeatures =
        CALCULATETABLE (
            DISTINCT ( Table1[Features] ),
            FILTER (
                ALL ( Table1 ),
                Table1[Manufacturer] IN CurrentManufacturer
                    || Table1[Manufacturer] = Base
            )
        )
    
    VAR BaseFeatures =
        CALCULATETABLE ( DISTINCT ( Table1[Features] ), Table1[Manufacturer] = Base )
    
    RETURN
    
        IF (
            SELECTEDVALUE ( Table1[Manufacturer] ) = Base,
            COUNTROWS ( BaseFeatures ),
            COUNTROWS ( CombinedFeatures ) - COUNTROWS ( BaseFeatures )
        )
    

    【讨论】:

    • 当制造商具有基础制造商的所有功能以及新的额外功能时,上述解决方案有效。当制造商包含基础制造商的全新功能时,上述解决方案将不起作用。制造商 产品特点 本田思域 Feature1 本田思域 Feature2 本田思域 Feature3 丰田凯美瑞 Feature4 丰田凯美瑞 Feature6 丰田凯美瑞 Feature7。现在丰田比本田有 3 个不同的特征,因此我将计数报告为 3,但上述公式将导致零。
    • 您似乎误解了逻辑。对于您的示例,组合特征计数 = |{1,2,3,4,6,7}| = 6. 本田功能计数 = |{1,2,3}| = 3. 差异 = 6 - 3 = 3.
    • 谢谢亚历克西斯。我同意你的观点,你的解决方案就像魅力一样。 ?
    • 是否有任何解决方法可以在没有 IN 的情况下编写上述度量。我的几个客户只使用 Excel,他们使用的版本不支持 IN。
    • 是的。它只是旧 CONTAINS function 的一种更简单的形式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    相关资源
    最近更新 更多