【发布时间】:2021-02-22 17:57:07
【问题描述】:
我在这里得到了很好的帮助: Power BI, DAX, Many-to-one and relational tables
根据此数据生成度量列:
Builds =
DATATABLE(
"Build", STRING,
"App", STRING,
{
{ "Build1", "App1" },
{ "Build1", "AppNotInApps1" },
{ "Build1", "App2" },
{ "Build1", "App9" },
{ "Build2", "App3" },
{ "Build2", "AppNotInApps2" },
{ "Build3", "App1" },
{ "Build3", "App5" },
{ "Build3", "App8" },
{ "Build3", "App9" },
{ "Build3", "AppNotInApps3" }
}
)
Apps =
DATATABLE(
"App", STRING,
"Status", STRING,
{
{ "App1", "UAT" },
{ "App2", "Complete" },
{ "App9", "New" },
{ "App3", "Complete" },
{ "App5", "UAT" },
{ "App8", "Complete" }
}
)
许多 Builds 都有一个应用程序,在 Builds.App = Apps.App 上加入。
度量列(称为“不完整”)就是这个小美女:
incomplete =
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 )
)
自从有了这个解决方案,我还加入了另一个名为 Sites 的表:
Sites =
DATATABLE(
"Site", STRING,
"Build", STRING,
{
{ "Site1", "Build1" },
{ "Site2", "Build1" },
{ "Site2", "Build3" }
}
)
连接在 Sites.Build = Builds.Build 上。而且您会注意到一个版本可以出现在多个站点中(不要问!)。
我在 Sites.Site 列上有一个切片器。
这是一些示例数据:
Site.....Build.....App.....Status.....Incomplete
Site1....Build1....App1....UAT........2
Site1....Build1....App2....Complete...2
Site1....Build1....App9....New........2
Site2....Build1....App2....Complete...0
Site2....Build3....App1....UAT........3
Site2....Build3....App5....UAT........3
Site2....Build3....App8....Complete...1
Site2....Build3....App9....New........3
“未完成”让我计算了有多少构建的状态不是“完成”
我现在想做的(这就是问题)是在我的 BI 视图中拥有三张卡片。
卡片一(衡量标准?) - 计算“不完整”计数为 0 的 Builds.Build 的 DISTINCT 数量。根据上面的数据,该值为 1。如果我在 Site1 上过滤,这将是 0。
卡片二(衡量标准?) - 计算“不完整”计数不等于 0 的 Builds.Build 的 DISTINCT 数量。根据上述数据,该值将是2(两个不同的构建或 Build1 和 Build2)。如果我在 Site2 上过滤这个,这将是 1 (Build3)。
卡三 - 卡一测量值占(卡一测量值加上卡二测量值)的百分比
我的页面上有过滤器(切片器),所以我需要动态度量。
我已经为卡 1 尝试过这个,但它没有给我正确的值?
comp = CALCULATE(
DISTINCTCOUNT(Builds[Build]),
FILTER(ALLSELECTED(Build), [incomplete] = 0))
当然还有卡片 2:
comp = CALCULATE(
DISTINCTCOUNT(Builds[Build]),
FILTER(ALLSELECTED(Build), [incomplete] <> 0))
在我试用我的卡 3 之前,我有什么遗漏吗?
【问题讨论】:
-
你能举几个你期望从某些切片器选择中得到的结果的例子吗?我认为可能存在一些空白与零的细微差别需要解决。
-
添加了更多信息...
-
我正在收集 ALLSELECTED 应用所有当前过滤器,所以我本质上是在“计数”当前视图中的数据?目前,我的“真实”数据中的计数返回得太高......
-
这会返回正确的行数为 0,但计数不是不同的构建名称(因此行数太多): COUNTROWS( DISTINCT( FILTER(Builds, Builds[Incomplete] = 0 ) ) )
-
嗯....这可能有效:COUNTROWS ( FILTER ( VALUES (Builds[build] ), Builds[Incomplete] = 0 ) )
标签: powerbi dax powerbi-desktop