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

PowerBI中基于城市切片器实现动态分箱的直方图方案问询

PowerBI实现随城市动态调整分箱大小的直方图方案

问题背景

现有PowerBI数据集结构如下:

Date        Temperature (Deg C)  City 
10/01/01    5                    London
10/01/01    15                   Lisbon
10/01/01    10                   Paris
10/01/02    7                    London
10/01/02    12                   Lisbon
10/01/02    8                    Paris
...         ...                  ...

需求为通过切片器选择不同城市,展示对应城市的温度分布直方图,且分箱大小需随所选城市动态调整,避免所有数据集中在单个分箱的情况。常规固定分箱的方式无法满足动态调整需求,需解决该问题。

实现方案

步骤1:计算动态分箱所需统计量

创建以下DAX度量值,用于获取选中城市温度的关键统计参数:

  • 选中城市的温度最大值:
Max Temp = MAX('Table'[Temperature (Deg C)])
  • 选中城市的温度最小值:
Min Temp = MIN('Table'[Temperature (Deg C)])
  • 温度范围(最大值与最小值的差值):
Temp Range = [Max Temp] - [Min Temp]
  • 动态分箱大小(采用Sturges法则计算分箱数,再倒推分箱大小,可按需替换分箱数计算逻辑):
Dynamic Bin Size = 
VAR BinCount = ROUNDUP(1 + LOG(COUNT('Table'[Temperature (Deg C)]), 2), 0)
RETURN IF([Temp Range] = 0, 1, DIVIDE([Temp Range], BinCount))

注:Sturges法则公式为1 + log2(n),n为当前选中城市的温度数据量。若需更贴合业务的分箱逻辑,可修改BinCount的计算方式,比如使用Scott法则或Freedman-Diaconis法则。

步骤2:生成动态分箱标签

创建DAX度量值,为每个温度值标记所属的动态分箱区间:

Dynamic Bin Label = 
VAR CurrentTemp = SELECTEDVALUE('Table'[Temperature (Deg C)])
VAR BinSize = [Dynamic Bin Size]
VAR MinVal = [Min Temp]
RETURN 
IF(
    BinSize = 0,
    "Single Value: " & CurrentTemp,
    CONCATENATE(
        ROUND(DIVIDE(CurrentTemp - MinVal, BinSize), 0) * BinSize + MinVal,
        " - " & ROUND(DIVIDE(CurrentTemp - MinVal, BinSize), 0) * BinSize + MinVal + BinSize
    )
)

步骤3:构建动态直方图

  1. 添加City字段到画布,设置为切片器可视化,用于切换城市。
  2. 创建簇状柱形图替代原生直方图(原生直方图不支持动态分箱):
    • 将Dynamic Bin Label拖至X轴,设置为类别类型。
    • 创建计数度量值Temp Count = COUNT('Table'[Temperature (Deg C)]),拖至Y轴。
  3. 调整柱形图格式:将柱间距设为0,关闭不必要的元素(如数据标签),设置合适的颜色,使其外观接近直方图。

额外优化

若分箱区间出现排序混乱,可添加辅助度量值用于排序:

Bin Order = ROUND(DIVIDE(SELECTEDVALUE('Table'[Temperature (Deg C)]) - [Min Temp], [Dynamic Bin Size]), 0)

将该度量值拖至X轴的排序依据中,即可实现分箱区间的有序排列。

内容的提问来源于stack exchange,提问作者Mike Tauber

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 16:33:35