PowerBI双列筛选DAX供应商同行对比度量值问题求助
解决方案:同行业同邮编供应商评分中位数对比
原代码问题分析
你写的DAX无效的核心原因是:ALL('VendorTable'[vendor_industry], 'VendorTable'[vendor_postcode])直接清除了行业和邮编的所有筛选上下文,导致计算的是全局所有供应商的评分中位数,而非当前选中供应商所属的同行业同邮编群体的中位数。
有效DAX实现
根据你的需求(钻取选中供应商后,对比同行业同邮编同行的评分表现),提供以下几种常用实现:
1. 包含当前选中供应商的同行中位数
适用于查看当前供应商在同组中的整体位置(包含自身数据的中位数):
Vendor Peer Comparison = VAR CurrentIndustry = SELECTEDVALUE(VendorTable[vendor_industry]) VAR CurrentPostcode = SELECTEDVALUE(VendorTable[vendor_postcode]) RETURN CALCULATE( [Median Vendor Score], VendorTable[vendor_industry] = CurrentIndustry, VendorTable[vendor_postcode] = CurrentPostcode, ALLSELECTED(VendorTable[vendor_name]) // 清除当前选中的供应商名称筛选,保留行业/邮编上下文 )
2. 排除当前选中供应商的同行中位数
适用于仅对比其他同行的表现,排除自身数据:
Vendor Peer Comparison (Exclude Self) = VAR CurrentVendor = SELECTEDVALUE(VendorTable[vendor_name]) VAR CurrentIndustry = SELECTEDVALUE(VendorTable[vendor_industry]) VAR CurrentPostcode = SELECTEDVALUE(VendorTable[vendor_postcode]) RETURN CALCULATE( [Median Vendor Score], VendorTable[vendor_industry] = CurrentIndustry, VendorTable[vendor_postcode] = CurrentPostcode, VendorTable[vendor_name] <> CurrentVendor, // 排除当前选中的供应商 ALLSELECTED(VendorTable[vendor_name]) )
3. 支持多选供应商的版本
如果需要处理同时选中多个供应商的场景,用VALUES捕获所有选中的行业和邮编组合:
Vendor Peer Comparison (Multi-Select) = VAR SelectedIndustries = VALUES(VendorTable[vendor_industry]) VAR SelectedPostcodes = VALUES(VendorTable[vendor_postcode]) RETURN CALCULATE( [Median Vendor Score], VendorTable[vendor_industry] IN SelectedIndustries, VendorTable[vendor_postcode] IN SelectedPostcodes, ALLSELECTED(VendorTable[vendor_name]) )
逻辑说明
- 用
VAR捕获当前选中供应商的行业、邮编(或多选时的所有组合),确保筛选范围锁定在目标群体 ALLSELECTED(VendorTable[vendor_name])清除当前选中的供应商名称筛选,让CALCULATE能计算同组所有供应商的中位数- 条件筛选精准匹配行业和邮编,保证对比的是同区域同赛道的同行
内容的提问来源于stack exchange,提问作者user1457655
相关产品推荐
相关产品推荐

