资产层级数据过滤咨询:DAX Summarize函数报错及关联应用问题
解决方案与技术归类
技术归类
属于Power BI DAX 层级数据筛选与聚合计算问题,核心是基于多层级(Station→Blockgroup→Asset)的条件逻辑实现资产列表的动态筛选。
一、修复Summarize公式错误
原公式错误原因:Calculate的第二个参数传入了文本列'Assetdata'[stationcode],DAX会尝试将文本转换为布尔筛选条件,导致类型不匹配错误。正确的汇总表公式如下:
StationBlockgroupSummary = SUMMARIZE( 'Assetdata', 'Assetdata'[stationcode], 'Assetdata'[Blockgroup], "Asset Count", COUNT('Assetdata'[Assetname]) )
如果需要按Station层级统计特定类型资产的数量,可调整为:
StationAssetTypeSummary = SUMMARIZE( 'Assetdata', 'Assetdata'[stationcode], 'Assetdata'[Blockgroup], "Asset Count", COUNTROWS('Assetdata') )
二、高效实现复杂条件筛选(无需单独汇总表)
直接在资产表中添加计算列标记资产是否符合保留条件,后续在可视化中筛选标记为TRUE的资产即可:
1. 添加计算列:标记是否保留资产
保留资产 = VAR CurrentStation = 'Assetdata'[stationcode] VAR CurrentAssetType = 'Assetdata'[Blockgroup] -- 统计当前车站对应资产类型的总数 VAR AssetTypeCount = CALCULATE( COUNT('Assetdata'[Assetname]), ALLEXCEPT('Assetdata', 'Assetdata'[stationcode]), 'Assetdata'[Blockgroup] = CurrentAssetType ) RETURN SWITCH( TRUE(), -- 条件1:移除Bus Stop类型的BlockGroup资产 CurrentAssetType = "Bus Stop", FALSE(), -- 条件2:车站仅有1座footbridge时,移除该资产 CurrentAssetType = "footbridge" && AssetTypeCount = 1, FALSE(), -- 条件3:车站access route数量超过2条时,移除所有该类型资产 CurrentAssetType = "access route" && AssetTypeCount > 2, FALSE(), -- 其余资产全部保留 TRUE() )
2. 应用筛选
在可视化表格中添加筛选器:设置保留资产等于TRUE,即可自动应用所有复杂筛选规则。
三、若坚持用汇总表关联筛选
- 确保汇总表与原资产表通过
stationcode和Blockgroup字段建立双向关系 - 在汇总表中添加计算列,标记该Station-Blockgroup组是否符合保留条件:
保留组 = SWITCH( TRUE(), [Blockgroup] = "Bus Stop", FALSE(), [Blockgroup] = "footbridge" && [Asset Count] = 1, FALSE(), [Blockgroup] = "access route" && [Asset Count] > 2, FALSE(), TRUE() )
- 在原资产表的可视化组件中,通过关联的汇总表
保留组字段筛选TRUE值即可。
内容的提问来源于stack exchange,提问作者Gil Wadsworth
相关产品推荐
相关产品推荐

