如何使用DAX逆透视表格指定列?DAX生成表处理求助
解决DAX生成表补全缺失预测值及占比计算方案
因为DAX生成的计算表无法导入Power Query处理,直接用DAX完成补全、计数和占比计算:
步骤1:生成包含所有类别+所有预测值的基础表
先构建每个类别都对应True/False的笛卡尔积表,确保没有缺失行:
完整类别预测基础表 = CROSSJOIN( -- 提取原表中所有唯一类别 VALUES('原分类准确率表'[类别]), -- 生成固定的True/False列表 DATATABLE( "Predicted Values", BOOLEAN, { { TRUE }, { FALSE } } ) )
步骤2:补全计数并生成最终表
将原表的计数匹配到基础表中,缺失的False计数填充为0:
补全后的准确率表 = VAR 原计数表 = '原分类准确率表' RETURN ADDCOLUMNS( '完整类别预测基础表', "计数", -- 查找对应类别和预测值的计数,找不到则返回0 COALESCE( LOOKUPVALUE( 原计数表[计数], 原计数表[类别], [类别], 原计数表[Predicted Values], [Predicted Values] ), 0 ) )
步骤3:计算预测占比(推荐用度量值)
用度量值实现动态占比,适配切片器交互:
预测占比 = VAR 当前分组计数 = SUM('补全后的准确率表'[计数]) VAR 类别总计数 = CALCULATE( SUM('补全后的准确率表'[计数]), -- 仅保留当前类别筛选,忽略预测值筛选 ALLEXCEPT('补全后的准确率表', '补全后的准确率表'[类别]) ) RETURN -- 避免除以0,返回0替代错误 DIVIDE(当前分组计数, 类别总计数, 0)
可视化设置
- 切片器:使用
补全后的准确率表中的类别字段 - 柱状图:
- 轴:
类别+Predicted Values(可将Predicted Values拖入图例或轴) - 值:选择
预测占比(显示百分比)或计数(显示数量)
- 轴:
可选:合并为单表DAX
如果不想拆分多个表,可直接生成最终表:
最终准确率表 = VAR 原表 = '原分类准确率表' VAR 所有类别 = VALUES(原表[类别]) VAR 所有预测值 = DATATABLE("Predicted Values", BOOLEAN, { { TRUE }, { FALSE } }) VAR 完整基础 = CROSSJOIN(所有类别, 所有预测值) RETURN ADDCOLUMNS( 完整基础, "计数", COALESCE(LOOKUPVALUE(原表[计数], 原表[类别], [类别], 原表[Predicted Values], [Predicted Values]), 0), "占比", DIVIDE( COALESCE(LOOKUPVALUE(原表[计数], 原表[类别], [类别], 原表[Predicted Values], [Predicted Values]), 0), CALCULATE(SUM(原表[计数]), ALLEXCEPT(原表, 原表[类别])), 0 ) )
注意:如果原DAX表的类别来自数据模型中的独立类别表,建议将VALUES('原分类准确率表'[类别])替换为'类别表'[类别],提升稳定性。
内容的提问来源于stack exchange,提问作者MartianCactus
相关产品推荐
相关产品推荐

