【问题标题】:Is format always json when SELECTing from stage?从舞台选择时格式总是json吗?
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 嗨,斯里加,我想知道是否有办法将完整的 CSV 行加载为 json(考虑到有 1 个标题行可以提供 json 键名?
猜你喜欢
  • 2014-09-25
  • 2020-07-02
  • 1970-01-01
  • 2021-12-11
  • 2015-09-02
  • 2018-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多