Power BI加载含缺失列的多JSON文件报错问题咨询
解决Power BI合并缺失列的JSON文件报错问题
错误原因
当前代码依赖样本文件的列名来展开所有文件的表,但部分文件缺少样本文件中的列(比如col3),导致展开时触发「列未找到」的错误。
修复方案
有两种简单的解决方式,任选其一即可:
方式1:修改自定义函数补全缺失列
编辑「Transform File (4)」这个自定义函数,确保每个JSON文件加载后自动补全所有必要列(缺失列填充null):
let Source = Json.Document(FileContents), #"Converted to Table" = Table.FromRecords(Source), // 替换成你需要的所有列名(比如你提到的20列) AllRequiredColumns = {"id", "ref", "col3", "col4", ...}, // 自动添加缺失的列 #"Added Missing Columns" = List.Accumulate(AllRequiredColumns, #"Converted to Table", (table, col) => if Table.HasColumns(table, col) then table else Table.AddColumn(table, col, each null) ) in #"Added Missing Columns"
修改后回到主查询,原有的展开步骤即可正常运行,因为每个文件的表都包含了所有列。
方式2:用Table.Combine替代手动展开
直接修改主查询中的展开步骤,用Table.Combine自动合并所有表,Power BI会自动处理缺失列(补null):
// 替换原有的Expanded Table Column1步骤 #"Combined Tables" = Table.Combine(#"Removed Other Columns1"[Transform File (4)]), #"Changed Type" = Table.TransformColumnTypes(#"Combined Tables",{{"Source.Name", type text}, {"id", type any}, {"ref", type any}, {"col3", type any}, ...}) in #"Changed Type"
注意:Changed Type步骤里要包含所有20列的类型定义,或者后续用自动检测类型简化操作。
验证效果
修改后刷新查询,所有JSON文件会被正常合并,缺失列的位置会填充null,不再触发报错。
内容的提问来源于stack exchange,提问作者priya
相关产品推荐
相关产品推荐

