Power BI按列分组聚合后保留Store列支持切片器的实现方法咨询
Power BI 按Item分组留存Store维度的实现方案
最优方案:使用度量值+原表上下文(无需新建聚合表)
这是性能最高、灵活性最强的实现方式,完全不需要额外创建预聚合的计算表:
- 新建度量值:
Item行数 = COUNT('销售表'[Id]) - 可视化组件直接拖入原表的
Item字段和上述度量值 - Store切片器直接使用原表的
Store字段即可
切片器选择后会自动过滤计算上下文,自动统计对应Store范围内每个Item的行数,后续新增其他维度筛选、新增统计指标都可以直接扩展,无需调整表结构。
可选方案1:按Store+Item双维度预聚合
如果确实需要生成预聚合计算表,可以同时按两个维度分组,表内自带Store字段可直接对接切片器:
groupby_store_item = SUMMARIZE( '销售表', '销售表'[Store], '销售表'[Item], "Count", COUNT('销售表'[Id]) )
该方案统计的是每个Store下每个Item的行数,切换Store切片器时Count值会对应变化,计算逻辑和最优方案一致。
可选方案2:按Item分组取首个Store值
如果你需要每个Item仅保留一行,同时留存该Item对应的第一个Store值(对应你提到的Python groupby('Item').agg({'Store':'first'})写法),可以用以下DAX创建计算表:
groupby_item_with_first_store = ADDCOLUMNS( VALUES('销售表'[Item]), "FirstStore", CALCULATE(FIRSTNONBLANK('销售表'[Store], 1)), "Count", CALCULATE(COUNT('销售表'[Id])) )
注意:该方案的Store是每个Item的首个关联值,不是全量Store维度,切片器仅能筛选到「首个Store匹配所选值」的Item,无法统计该Item在其他Store下的行数,仅适合特定业务场景使用。
内容的提问来源于stack exchange,提问作者nilsinelabore
相关产品推荐
相关产品推荐

