使用字段参数对视觉对象进行 Power BI 条件格式设置

问题描述 投票:0回答:1

我有一个 Power BI 报告,它使用带有 KPI 列表的字段参数,用户可以从中选择动态更改页面上的视觉效果。

报告的利益相关者提出了一些我认为非常规的要求。他们希望通过以不同颜色显示所选 KPI 字段参数的平均值之上和之下来直观地指示平均值的位置。下面的示例在 MS Paint 中进行了编辑,以显示需要发生的情况:

现在根据我的知识,您可以根据规则设置某种条形颜色的条件格式。但是,此选项似乎不适用于使用 KPI 字段参数的视觉对象。

利益相关者确信这是可以做到的,并向我展示了一些奇怪的例子。

问题:如何才能使其发挥作用?

示例 PBIX 文件:投递箱文件

powerbi conditional-formatting
1个回答
0
投票

不幸的是,没有一种机制可以获取所选字段参数的计算值。因此,您需要使用

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"
  )
© www.soinside.com 2019 - 2024. All rights reserved.