【问题标题】:DAX and DISTINCT COUNTROWSDAX 和 DISTINCT COUNTROWS
【发布时间】:2020-11-11 23:37:50
【问题描述】:

基于上一个问题:Power BI, DAX, Many-to-one and relational tables

并使用这些数据:

Builds = 
DATATABLE(
    "Build", STRING,
    "App", STRING,
    {
        { "Build1", "App1" },
        { "Build1", "App2" },
        { "Build1", "App9" },
        { "Build2", "App3" },
        { "Build3", "App1" },
        { "Build3", "App5" },
        { "Build3", "App8" },
        { "Build3", "App9" }
    }
)

Apps = 
DATATABLE(
    "App", STRING,
    "Status", STRING,
    {
        { "App1", "UAT" },
        { "App2", "Complete" },
        { "App9", "New" },
        { "App3", "Complete" },
        { "App5", "UAT" },
        { "App8", "Complete" }
    }
)

我可以使用此 DAX 度量来告诉我“构建”中有多少“应用程序”不是“完成”:

# not complete = 
IF(
    HASONEVALUE( Builds[Build] ),
    VAR CurrentBuild =
        SELECTEDVALUE( Builds[Build] )
    VAR CurrentApp =
        SELECTEDVALUE( Apps[App] )
    VAR Result =
        COUNTROWS(
            FILTER(
                ALLNOBLANKROW( Builds ),
                Builds[Build] = CurrentBuild
                    && RELATED( Apps[Status] ) <> "Complete"
                    && NOT ISBLANK( RELATED( Apps[Status] ) )
            )
        ) + 0
    RETURN
        IF( NOT ISBLANK( SELECTEDVALUE( Apps[Status] ) ), Result )
)

但是,如果我后来发现,如果一个 App 多次出现在构建中,它会返回错误的结果。例如:

 Builds = 
    DATATABLE(
        "Build", STRING,
        "App", STRING,
        {
            { "Build1", "App1" },
            { "Build1", "App1" },
            { "Build1", "App1" },
            { "Build1", "App2" },
            { "Build1", "App9" },
            { "Build2", "App3" },
            { "Build3", "App1" },
            { "Build3", "App5" },
            { "Build3", "App8" },
            { "Build3", "App9" }
        }
    )

注意重复:

 { "Build1", "App1" },

我现有的 DAX 查询会将这个应用程序(在 UAT 中)计为 3 个“未完成”应用程序,而实际上它只是一个应用程序。我试过这个:

# not complete = IF(
    HASONEVALUE( Builds[Build] ),
    VAR CurrentAssetName =
        SELECTEDVALUE( Builds[Build] )
    VAR CurrentApp =
        SELECTEDVALUE( Builds[Software])
       
    VAR Result = CALCULATE(
        COUNTROWS(
           DISTINCT(Builds[App])
        ),
        FILTER(ALLNOBLANKROW( Builds ),
        Builds[Build] = CurrentAssetName        
                && RELATED( Apps[Status] ) <> "Complete"
        && NOT ISBLANK( RELATED( Apps[Status] ) )
        )
        ) + 0
    RETURN Result
)

但是 CALCULATE 函数并没有给我每一行的结果,我需要表格中每一行的结果。

有人可以帮忙吗?

谢谢!

【问题讨论】:

    标签: powerbi dax powerbi-desktop


    【解决方案1】:

    我认为您可能使事情变得比必要的复杂。

    有了这个措施

    IncompleteApps = 
    COUNTROWS (
        FILTER (
            ALL ( Apps ),
            Apps[App] IN VALUES ( Builds[App] )
                && Apps[Status] <> "Complete"
        )
    ) + 0
    

    你会得到以下结果:

    如果您将Build[App] 添加为另一个级别:

    如果这些不是您期望的结果,那么您需要在问题中指定您的输出应该是什么样的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 2018-01-05
      相关资源
      最近更新 更多