Direct Query模式下SAP HANA数据源值计数条形图实现求助
解决Direct Query连接SAP HANA时的名称出现次数分布条形图问题
问题分析
你需要的是统计「出现次数」的分布:X轴为名称的出现次数(如1、3),Y轴为对应有多少个名称达到该次数(如次数为3时有2个名称,次数为1时有1个名称)。之前的度量值未生效,是因为没有先分组统计每个名称的出现次数,再对这些次数做二次统计,且Direct Query模式下对DAX的使用有特定限制。
解决方案步骤
1. 创建基础度量值:计算单个名称的出现次数
首先定义一个度量值,用于统计每个NAME的出现次数:
NameOccurrences = COUNT('Table'[NAME])
(或使用COUNTROWS('Table'),效果一致,因为每一行对应一个NAME记录)
2. 创建独立的「次数维度表」
由于Direct Query模式下无法动态生成包含所有可能出现次数的表,需要手动创建一个静态表:
- 在Power BI中点击「数据」>「新建表」,输入以下内容(根据你的数据范围调整数值,覆盖最大可能的出现次数):
CountTable = DATATABLE("Count", INTEGER, {{1}, {2}, {3}, {4}, {5}})
这个表的Count列包含所有可能的出现次数值。
3. 创建核心度量值:统计对应次数的名称数量
定义度量值,统计有多少个名称的出现次数等于当前选中的Count值:
NumberOfNamesWithCount = CALCULATE( DISTINCTCOUNT('Table'[NAME]), FILTER( ALL('Table'[NAME]), CALCULATE(COUNT('Table'[NAME])) = SELECTEDVALUE(CountTable[Count]) ) )
4. 配置条形图
- 将
CountTable中的Count字段拖到X轴 - 将
NumberOfNamesWithCount度量值拖到Y轴 - 此时图表会显示:X轴为1时Y轴是1,X轴为3时Y轴是2,完全符合你的需求
为什么之前的度量值无效?
你之前使用的CALCULATE(COUNTROWS('Table'),FILTER('Table','Table'[NAME]))仅统计当前上下文的表行数,没有完成「先按NAME分组统计次数,再统计次数的分布」的二次计算逻辑,因此无法得到预期结果。
内容的提问来源于stack exchange,提问作者Guille López
相关产品推荐
相关产品推荐

