【发布时间】: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..
标签: json amazon-s3 avro snowflake-cloud-data-platform