如何创建DAX度量值统计列中不同值出现次数并按断开表定义的分箱分组生成直方图?
解决DAX分箱统计销售员出现次数的问题
我来帮你搞定这个分箱统计的需求!咱们先理清楚核心逻辑:你需要先算出每个销售员的出现次数,再把这些次数归类到你定义的断开分箱表里,最后统计每个分箱里有多少个销售员符合条件。和你之前按收入分组的场景不同,这里需要先做一层聚合(每个SalesP的计数),再对聚合后的结果进行分箱筛选。
下面是适配这个场景的DAX度量值,你可以根据自己的表名替换对应的部分:
SalesP Count per Bin = // 第一步:汇总每个销售员的出现次数 VAR SalesPCounts = SUMMARIZE( SalesTable, // 替换成你的销售数据表名称 SalesTable[SalesP], // 替换成你的销售员列名称 "@Count", COUNT(SalesTable[SalesP]) // 计算每个销售员的出现次数 ) // 第二步:获取当前分箱的上下限(来自断开的分箱表) VAR CurrentBinMin = VALUES(BinsTable[From]) // 替换成分箱表的From列 VAR CurrentBinMax = VALUES(BinsTable[To]) // 替换成分箱表的To列 // 第三步:筛选出计数在当前分箱范围内的销售员数量 RETURN COUNTROWS( FILTER( SalesPCounts, [@Count] >= CurrentBinMin && [@Count] <= CurrentBinMax ) )
代码细节解释:
SalesPCounts:这一步是关键,把原始销售数据聚合到销售员维度,生成每个销售员的出现次数列表,相当于你示例里的SalesP | Count临时表。CurrentBinMin/CurrentBinMax:因为分箱表是断开的(和销售表没有关系),所以用VALUES()获取当前筛选上下文里的分箱上下限,保证每个分箱独立计算。- 最后用
COUNTROWS(FILTER(...))统计有多少个销售员的出现次数落在当前分箱范围内,完美匹配你想要的结果(比如0-1分箱对应1个销售员,2-3对应2个)。
和你之前代码的区别:
你之前的代码是直接对原始行的收入值进行分箱筛选,但这个场景需要先完成“销售员→出现次数”的聚合,再对聚合后的次数值做分箱,这是核心差异。
使用注意事项:
- 确保分箱表的
From和To列是数值类型,避免比较时出现错误。 - 分箱的区间逻辑可以根据需求调整:如果你的分箱是左闭右开(比如0-1包含0但不包含1),把
<=改成<即可,你的示例里是包含上限的,所以用<=没问题。 - 把这个度量值放到直方图的「值」区域,分箱表的
From-To放到「轴」区域,就能得到你想要的直方图效果啦!
内容的提问来源于stack exchange,提问作者schiseb
相关产品推荐
相关产品推荐

