我有一个 Power BI 报告,它使用带有 KPI 列表的字段参数,用户可以从中选择动态更改页面上的视觉效果。
报告的利益相关者提出了一些我认为非常规的要求。他们希望通过以不同颜色显示所选 KPI 字段参数的平均值之上和之下来直观地指示平均值的位置。下面的示例在 MS Paint 中进行了编辑,以显示需要发生的情况:
现在根据我的知识,您可以根据规则设置某种条形颜色的条件格式。但是,此选项似乎不适用于使用 KPI 字段参数的视觉对象。
利益相关者确信这是可以做到的,并向我展示了一些奇怪的例子。
问题:如何才能使其发挥作用?
示例 PBIX 文件:投递箱文件
不幸的是,没有一种机制可以获取所选字段参数的计算值。因此,您需要使用
SWITCH
语句来确定选择哪一个,然后进行计算。
根据您的示例 PBIX(谢谢),您可以创建如下措施:
CF KPI1 =
var dimValue = SWITCH(SELECTEDVALUE('KPI1'[KPI1 Fields]),
NAMEOF('Data'[Avg Qty]), 'Data'[Avg Qty],
NAMEOF('Data'[Avg Order Cost]), 'Data'[Avg Order Cost],
NAMEOF('Data'[Avg Profit Margin]), 'Data'[Avg Profit Margin],
NAMEOF('Data'[Avg Rating]), 'Data'[Avg Rating]
)
var allValue = SWITCH(SELECTEDVALUE('KPI1'[KPI1 Fields]),
NAMEOF('Data'[Avg Qty]), CALCULATE('Data'[Avg Qty], ALLSELECTED('Data')),
NAMEOF('Data'[Avg Order Cost]), CALCULATE('Data'[Avg Order Cost], ALLSELECTED('Data')),
NAMEOF('Data'[Avg Profit Margin]), CALCULATE('Data'[Avg Profit Margin], ALLSELECTED('Data')),
NAMEOF('Data'[Avg Rating]), CALCULATE('Data'[Avg Rating], ALLSELECTED('Data'))
)
return SWITCH(TRUE(),
ISBLANK(allValue), BLANK(),
dimValue < allValue, "Below",
dimValue >= allValue, "Above"
)
然后是条形颜色条件格式:
只是想分享这个更易于管理/可重复使用的其他版本。
创建一个测量以返回选定的计算:
KPI1 First calculation =
SWITCH( MIN('KPI1'[KPI1 Fields]),
NAMEOF('Data'[Avg Qty]), 'Data'[Avg Qty],
NAMEOF('Data'[Avg Order Cost]), 'Data'[Avg Order Cost],
NAMEOF('Data'[Avg Profit Margin]), 'Data'[Avg Profit Margin],
NAMEOF('Data'[Avg Rating]), 'Data'[Avg Rating],
NAMEOF('Data'[Total Qty]), 'Data'[Total Qty],
NAMEOF('Data'[Total Order Cost]), 'Data'[Total Order Cost]
)
那么对于 CF 测量,您可以:
CF KPI1 =
var dimValue = [KPI1 First calculation]
var allValue = CALCULATE([KPI1 First calculation], ALLSELECTED('Data'))
return SWITCH(TRUE(),
NOT CONTAINSSTRING(SELECTEDVALUE('KPI1'[KPI1 Fields]), "Avg"), BLANK(),
dimValue < allValue, "Below",
dimValue >= allValue, "Above"
)