从舞台选择时格式总是json吗?

Posted

技术标签:

【中文标题】从舞台选择时格式总是json吗?【英文标题】:Is format always json when SELECTing from stage? 【发布时间】:2020-02-21 12:01:00 【问题描述】:

Snowflake 通过创建 FILE_FORMAT(avro、json、csv 等)支持多种文件类型。

现在我已经从雪花阶段 (s3) 测试了 SELECTing:

*.avro 文件(从 nifi 处理器批处理 10k 源 oracle 表生成)。 *.json 文件(每行 json)。

当从@myStg 中选择 $1 时,雪花扩展的行数与 avro 或 json 文件上的记录一样多(很酷),但是.. $1 变体都是 json 格式,现在我想知道我们使用的雪花文件格式是否总是记录在变体 $1 上作为 json 到达? 我还没有测试过 csv 或其他雪花文件格式。

或者我想知道我是否从 avros(来自 oracle 表)中获取 json,因为 NiFi 处理器可能会创建 avro 文件(内部使用 json 格式)。 也许我在这里造成了一些混乱..我知道 avro 文件包含两者:

avro 架构 - 类似于 json 键/值的语言。 压缩数据(二进制)。

谢谢, 伊曼纽尔·O。

【问题讨论】:

Avro 在内部使用 JSON 数据结构,顶部有附加协议。正如 Sriga 为 CSV 指出的那样,如果文件格式在内部不是 JSON,它在选择 $1 上会显得不同。 感谢@GregPavlik 确认 avro、xml 和 json 被加载为 $1 单列 VARIANT。对于 CSC,如果有一个函数来 JSONize 完整的 CSV 行会很好(这很容易 - 考虑到有标题行可以提供 json 键名)。我喜欢一致性,但似乎加载 CSV 必然会手动加载到一组固定的列中.. 不可能按原样加载所有 CSV 行,这很可悲.. 如果由于某种原因 CSV 开始带来更多字段,则会丢失它们因为 COPY 显式加载 $1, $2, .. $n 固定数量的字段。但对我来说重要的是 avro.. 【参考方案1】:

我尝试使用 CSV,当它使用 CSV 时,它会解析文件中的每个记录,如下所示

因此,当它涉及 JSON 时,它将把一个完整的 JSON 视为一个记录,因此它以 JSON 格式显示。

【讨论】:

嗨,斯里加,我想知道是否有办法将完整的 CSV 行加载为 json(考虑到有 1 个标题行可以提供 json 键名?

以上是关于从舞台选择时格式总是json吗?的主要内容,如果未能解决你的问题,请参考以下文章

json数据怎么抽取实体

jQuery 总是返回数组吗?

从 json 填充选择器,SwiftUI

从 jQuery Ajax 发布时 PHP Json 格式错误

从服务器向客户端发送 JSON 格式的 HTML 时,我应该转义内容吗?

如何从 JSON 中的月份列表中选择当前月份?