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

PowerBI报表服务器:如何将度量值计算的Bin值设为堆叠柱形图X轴

解决方案一:切片器+动态Bin表+度量值统计(支持自定义Bin大小)
  1. 制作Bin大小选择器

    • 切换到「数据」视图,点击「输入数据」,创建名为BinSizeSelector的表,列名设为SelectedBinSize,填入常用的Bin大小值(比如100、200、500);如果需要支持连续调整,直接用数值范围切片器绑定该列即可。
  2. 生成全量Bin编号表

    • 先在Product表中添加两个度量值,获取SN的极值:
      MinSN = MIN(Product[SN])
      MaxSN = MAX(Product[SN])
      
    • 进入「转换数据」界面,新建空白查询,粘贴以下M代码生成Bins表(会根据选中的Bin大小自动计算所需的Bin数量):
      let
          MinSN = Number.From(Excel.CurrentWorkbook(){[Name="MinSN"]}[Content]{0}[Column1]),
          MaxSN = Number.From(Excel.CurrentWorkbook(){[Name="MaxSN"]}[Content]{0}[Column1]),
          BinSize = Number.From(Excel.CurrentWorkbook(){[Name="BinSizeSelector"]}[Content]{0}[SelectedBinSize]),
          TotalBins = Number.RoundUp((MaxSN - MinSN)/BinSize),
          BinNumbers = List.Generate(()=>1, each _ <= TotalBins, each _ +1)
      in
          Table.FromList(BinNumbers, Splitter.SplitByNothing(), {"BinNumber"})
      
    • 如果报表服务器动态刷新有问题,可直接预生成足够多的Bin编号(比如0到2000),后续用度量值过滤无数据的Bin即可。
  3. 编写统计度量值

    • 创建度量值,计算每个Bin下各设备类型的数量:
      设备数量 = 
      VAR 当前Bin = SELECTEDVALUE(Bins[BinNumber])
      VAR 选中Bin大小 = SELECTEDVALUE(BinSizeSelector[SelectedBinSize])
      VAR SN最小值 = MIN(Product[SN])
      VAR Bin起始值 = SN最小值 + (当前Bin -1)*选中Bin大小
      VAR Bin结束值 = Bin起始值 + 选中Bin大小 -1
      RETURN
      CALCULATE(
          COUNT(Product[设备类型]),
          FILTER(
              ALL(Product),
              Product[SN] >= Bin起始值 && Product[SN] <= Bin结束值
          )
      )
      
    • 若需按SN去重计数,将COUNT(Product[设备类型])替换为COUNTROWS(DISTINCT(Product[SN]))即可。
  4. 搭建堆叠柱形图

    • 将Bins[BinNumber]拖至X轴,Product[设备类型]拖至图例,设备数量拖至值区域。调整切片器的Bin大小,图表会自动同步更新。
解决方案二:书签+预定义Bin列(适合固定几种常用配置)

如果不需要灵活调整Bin大小,仅需支持几个常用配置,用书签切换更简单:

  1. 为常用Bin大小创建计算列

    • 在Product表中添加多个计算列,对应不同的固定Bin大小:
      Bin_100 = FLOOR((Product[SN] - MIN(Product[SN]))/100,1)+1
      Bin_200 = FLOOR((Product[SN] - MIN(Product[SN]))/200,1)+1
      Bin_500 = FLOOR((Product[SN] - MIN(Product[SN]))/500,1)+1
      
  2. 创建多个柱形图

    • 分别制作3个堆叠柱形图,每个图表的X轴对应一个Bin计算列,值均为设备类型的数量。
  3. 用书签实现切换

    • 为每个图表创建书签,设置仅显示当前图表、隐藏其余两个。在报表页面添加按钮并绑定对应书签,用户点击按钮即可切换不同Bin大小的视图。
踩坑提示
  • 若方案一的动态M表在报表服务器无法正常刷新,预生成足够多的Bin编号后,可修改度量值过滤空Bin:
    设备数量 = 
    VAR 当前Bin = SELECTEDVALUE(Bins[BinNumber])
    VAR 选中Bin大小 = SELECTEDVALUE(BinSizeSelector[SelectedBinSize])
    VAR SN最小值 = MIN(Product[SN])
    VAR Bin起始值 = SN最小值 + (当前Bin -1)*选中Bin大小
    VAR Bin结束值 = Bin起始值 + 选中Bin大小 -1
    VAR 存在数据 = CALCULATE(COUNTROWS(Product), Product[SN]>=Bin起始值 && Product[SN]<=Bin结束值)
    RETURN
    IF(存在数据>0, 存在数据, BLANK())
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:55:05