PowerQuery加载多独立CSV后按分号拆分列失败求助
解决PowerQuery加载多CSV文件列拆分失败的问题
问题根源
你的文件用分号分隔,但Csv.Document默认用逗号作为分隔符,参数没配置对才会把所有数据挤在一列;拆分失败或报错,大概率是参数类型错误、编码不匹配,或者源文件存在格式异常。
分步解决
1. 修正Csv.Document核心参数
直接打开PowerQuery的高级编辑器,找到调用Csv.Document的代码行,改成以下格式,明确指定分号为分隔符,同时匹配文件编码(UTF-8用65001,西欧地区文件常用1252):
Csv.Document([Content], [Delimiter=";", Encoding=65001, QuoteStyle=QuoteStyle.Csv])
- 若你的文件没有带引号的字段,可将
QuoteStyle.Csv改为QuoteStyle.None,避免不必要的解析错误。
2. 确保每个文件单独加载不合并
不要使用系统自带的「合并文件」功能,按以下流程操作:
- 连接到目标文件夹后,筛选出需要的4个文件
- 对每个文件,点击右侧加载箭头,选择「仅创建连接」
- 打开对应文件的查询,修改完
Csv.Document参数后,将查询加载到PowerBI模型——这样每个文件会成为独立的数据表
3. 拆分失败的额外排查点
- 如果源文件存在字段内带分号但未加引号的情况,不要用自动拆分,改用自定义文本拆分逻辑:
Table.FromList(Text.Split([Content], "#(cr)#(lf)"), Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), null, null, ExtraValues.Error) - 检查文件是否有空行、表头乱码,可添加
Table.RemoveRowsWithErrors或Table.Skip(Table, 1)(若表头格式异常)步骤清理数据。
4. 解决参数调整后的报错
报错基本是参数格式不匹配导致:
Delimiter必须是带引号的文本,不能直接写;或省略引号Encoding是数字编码值,比如65001,不是字符串"UTF-8"- 不要随意添加多余参数,比如不需要指定列名就别写
ColumnNames,避免参数冲突
验证步骤
修改单个文件的查询后先预览,确认列已正确拆分;再依次处理剩余3个文件,最后到PowerBI模型视图检查4个独立表是否存在且数据正常。
内容的提问来源于stack exchange,提问作者TimS
相关产品推荐
相关产品推荐

