Power BI中使用Yield Rank切片器按层级筛选数据的异常问题
问题解决思路
问题1:切片器选等级后显示所有曾出现该等级的站点
你当前用计算列Yield Rank做切片器,它是给每行数据单独打等级标签,所以切片器会把所有包含该等级行的站点都筛选出来,而非要求站点的所有日期都符合选中等级。要实现“站点所有日期均为选中Rank”的筛选逻辑,得换用度量值来判断,步骤如下:
- 创建度量值,判断当前站点在筛选范围内的所有日期,是否全部符合选中Rank的产量区间:
Is All Rank Selected = VAR SelectedRank = SELECTEDVALUE('MGR'[Yield Rank]) // 对应Rank的产量上下限 VAR MinYield = SWITCH( SelectedRank, 5, 4, 4, 3, 3, 2, 2, 1, 0 ) VAR MaxYield = SWITCH( SelectedRank, 5, 999, // 用大数替代"大于4"的上限 4, 4, 3, 3, 2, 2, 1 ) // 取当前站点的产量极值 VAR PlantMinYield = MIN('MGR'[Sp. Yield]) VAR PlantMaxYield = MAX('MGR'[Sp. Yield]) RETURN IF(PlantMinYield >= MinYield && PlantMaxYield <= MaxYield, 1, 0)
- 将这个度量值拖到矩阵的筛选器中,设置为「等于1」,这样只有所有日期都符合选中Rank的站点才会显示。
- 切片器仍保留原
Yield Rank计算列,筛选逻辑由上述度量值控制。
问题2:月度数据显示等级求和而非平均值
Yield Rank作为计算列,矩阵默认对其使用求和聚合,这不符合需求。你需要创建一个计算平均等级的度量值,替换矩阵中的计算列:
Avg Yield Rank = AVERAGEX( 'MGR', SWITCH( TRUE(), 'MGR'[Sp. Yield] > 4, 5, 'MGR'[Sp. Yield] >= 3 && 'MGR'[Sp. Yield] <= 4, 4, 'MGR'[Sp. Yield] >= 2 && 'MGR'[Sp. Yield] < 3, 3, 'MGR'[Sp. Yield] >= 1 && 'MGR'[Sp. Yield] < 2, 2, 1 ) )
把矩阵中的Yield Rank计算列替换成这个度量值后,日/月/年各层级都会显示对应时间段的平均Rank,而非求和结果。
内容的提问来源于stack exchange,提问作者Pradeep
相关产品推荐
相关产品推荐

