You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power BI的Deneb条形图中基于DAX度量值设置条件格式?

解决Deneb条形图基于度量值设置颜色的问题

问题原因

你代码里的颜色判断表达式错误地将度量值Measure1和阈值200用单引号包裹,导致Vega-Lite把它们当作字符串比较。字符串的比较逻辑是按字符顺序,'Measure1'的首字母M在ASCII码里远大于'200'的首字符2,所以所有条形都会判定为红色。

修复方案

方案1:修正mark中的fill表达式

去掉Measure1的单引号(让它识别为字段),同时去掉200的单引号(让它识别为数值),并且用datum.前缀引用数据集字段(Vega-Lite表达式的标准写法),修改后的代码如下:

{  
  "title": {"text": "Simple Bar chart - expression", "fontSize": 14, "anchor": "start", "align": "left"},  
  "data": {"name": "dataset"},  
  "mark": {"type": "bar", "fill":{"expr": "datum.Measure1 > 200 ? 'red':'green'"}},  
  "encoding":  
    {  
    "y": {  
      "field": "Site Name", "type": "nominal",  
      "axis": {"title": null},  
      "sort": {"field": "Measure1", "order": "descending"} },  
    "x": {"field": "Measure1", "type": "quantitative"}  
    }       
}

方案2:使用encoding的color通道(推荐)

更符合Vega-Lite的设计规范,将颜色逻辑放在encoding模块中,代码可读性更强:

{  
  "title": {"text": "Simple Bar chart - expression", "fontSize": 14, "anchor": "start", "align": "left"},  
  "data": {"name": "dataset"},  
  "mark": {"type": "bar"},  
  "encoding":  
    {  
    "y": {  
      "field": "Site Name", "type": "nominal",  
      "axis": {"title": null},  
      "sort": {"field": "Measure1", "order": "descending"} },  
    "x": {"field": "Measure1", "type": "quantitative"},
    "color": {
      "condition": {"test": "datum.Measure1 > 200", "value": "red"},
      "value": "green"
    }
    }       
}

内容的提问来源于stack exchange,提问作者Davide Di Franco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 04:27:22