【发布时间】: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