You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI数据流读取含转义逗号大CSV报错,求解决方案

问题描述

尝试导入2.05GB的大型CSV文件到Power BI数据流,该文件含500万行、38列,部分单元格内的逗号通过\,转义。使用以下M语言代码读取时报错DataFormat.Error: The number of items in the list is too large,推测是二进制字符串过大导致:

SourceBinary = Web.Contents("https//link.csv"),
    SourceText = Text.FromBinary(SourceBinary, TextEncoding.Utf8),
    CleanText = Text.Replace(SourceText, "\\,", "<COMMA>"),
    CleanBinary = Text.ToBinary(CleanText, TextEncoding.Utf8),
    ParsedCSV = Csv.Document(CleanBinary, [Delimiter=",", Columns=38, Encoding=65001, QuoteStyle=QuoteStyle.None])
in
    ParsedCSV

需要解决该报错,或找到无需读取整个二进制字符串的CSV读取方式,以及处理转义逗号的方法。

解决方案

1. 逐行流式处理,减少内存占用

不要一次性把整个二进制文件转成文本再替换,改用逐行读取处理的方式,降低内存压力:

Source = Web.Contents("https://link.csv"),
    // 逐行读取二进制内容,避免全量加载
    Lines = Lines.FromBinary(Source, null, TextEncoding.Utf8),
    // 逐行替换转义逗号
    CleanLines = List.Transform(Lines, each Text.Replace(_, "\\,", "<COMMA>")),
    // 将处理后的行重新组合为二进制再解析
    CleanBinary = Text.ToBinary(Text.Combine(CleanLines, "#(cr)#(lf)"), TextEncoding.Utf8),
    ParsedCSV = Csv.Document(CleanBinary, [Delimiter=",", Columns=38, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    // 批量恢复单元格内的逗号
    RestoreCommas = Table.TransformColumns(ParsedCSV, List.Transform(Table.ColumnNames(ParsedCSV), each {_, (x) => if x is text then Text.Replace(x, "<COMMA>", ",") else x}))
in
    RestoreCommas

2. 利用CSV原生转义规则,跳过手动替换

如果CSV的转义格式是标准的(反斜杠转义逗号),直接指定Csv.Document的转义字符参数,让Power BI自动识别转义的逗号,无需手动替换:

Source = Web.Contents("https://link.csv"),
    ParsedCSV = Csv.Document(Source, [
        Delimiter=",",
        Columns=38,
        Encoding=65001,
        QuoteStyle=QuoteStyle.None,
        EscapeCharacter="\" // 指定反斜杠为转义字符
    ])
in
    ParsedCSV

这个方法从根源上避免了全量文本处理的内存问题,同时准确识别单元格内的转义逗号。

3. 分批处理或启用增量加载

如果文件依然超出内存承载上限,可以尝试:

  • 用Table.Split将解析后的大表拆分为多个小表,分批处理
  • 在数据流设置中启用增量刷新,基于行标识或时间戳配置刷新策略,每次仅加载新增数据

内容的提问来源于stack exchange,提问作者b1032c

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:25:24