在 Power Query 编辑器中将大 json 转换为 csv 时的限制

Posted

技术标签:

【中文标题】在 Power Query 编辑器中将大 json 转换为 csv 时的限制【英文标题】:Llimitation while converting big json into csv in Power Query Editor 【发布时间】:2018-05-08 09:30:06 【问题描述】:

我正在尝试将 150 MB JSON 文件导入 CSV。但是所有行都有不同数量的键。问题是 excel 仅根据前 1000 行查找元数据,并且在前 1000 行之后可能会出现新的键/列。 Excel 说:“已达到 1000 个扫描行的限制”

我该如何处理?

【问题讨论】:

当PQ没有正确读取你的Json时,你有一个真实的例子吗?我不认为可能有错误,从未见过。但无论如何,你们有一个 json 架构,您可以向 Power Query 解释它 - 将其用作创建解析函数的示例,然后将真正的 JSON 传递给该函数 是的,我有一个 JSONL 文件,其中包含大约 44000 个 json 记录,并且每个 JSON 记录具有不同的结构(例如,第 1001 个 JSON 记录有一个新键,前 1000 个 JSON 中不存在)。在这种情况下,我的理解是,PQ 解析前 1000 条记录并定义 excel 工作表的列结构。所以发生的事情是,一旦我加载数据,结果就会丢失第 100 个第一个 JSON 中存在的新 JSON 密钥。我将在上面的问题中添加截图以供参考。 我无法定义 JSON 模式的原因是,我的 jSONL 文件中的每个 JSON 都可能不同。有些 JSON 记录有 2000 个键,而有些可能只是其中的一个子集。 您的目标是添加过滤步骤? 我希望将整个 json 导入到 excel 中。我已经确认这是 excel PQ 的错误。假设我有一个包含 1100 行 "key1":"va11","key2":"val2" 的 JSON 文件,然后 1101 行是 "key1":"va11","key2":"val2"," key3":"val3",则excel中最终导入的数据不会有key3列。但是,如果插入带有附加列的同一行作为第 500 行,那么一切都会正常。问题是,PQ 没有读取 1000 多行的元数据。 【参考方案1】:

尝试分几步解决问题 -

    剪头0行,剪尾1k行Table.FirstN/Table.Skip/Table.LastN/Table.RemoveLastN 然后过滤你的行 转回第 1 页(或插入新步骤),将 head cut 更改为 1k,tail 更改为 2k 重复

毕竟删除头部和尾部切割,只留下过滤步骤。这不是最佳的,但有效

【讨论】:

以上是关于在 Power Query 编辑器中将大 json 转换为 csv 时的限制的主要内容,如果未能解决你的问题,请参考以下文章

powerquery的sum公式

Power Query - 用零替换负数

在 Power Query 中将负文本转换为十进制数

有啥方法可以在 Power Query 中将实际列名作为变量引用

powerquery追加查询如何将导入数据表头不显示null

通过 Power Query 在 Excel 中的 Smartsheet 数据