为什么在缺少镶木地板模式时将镶木地板文件复制到雪花中?

Why copying a parquet file into snowflake when the parquet schema is missed?

我对下一个场景感到困惑:

  1. 我有一个 parquet 文件到 S3

  2. 我将parquet文件复制到Snowflake中(指定压缩Snappy并格式化Parquet)。

  3. 文件被复制到我的 table 中,我可以看到原始列,镶木地板值看起来像 json。这是我的困惑,这个值是 json,镶木地板架构丢失了。

所以我想知道。我知道使用 Parquet 的好处,但实际上我不知道为什么当您错过一些重要的信息(例如架构)时,将 parquet 文件复制到 Snowflake 是好的。

当我从具有不同结构的不同文件加载原始数据时,我的问题就出现了。然后我必须从多个 table 中一个一个地提取和转换每个数据结构的字段。我想知道在使用 parquet 时是否有更好的方法来更通用地依赖模式。

这是我在 Snowflake 中处理半结构化数据最喜欢的方式:将其复制为 VARIANT 类型。

但如果您想直接使用模式,那么好消息 — Snowflake 正在改进其自动检测能力:

INFER_SCHEMA retrieves and returns the schema from a set of staged files.

GENERATE_COLUMN_DESCRIPTION returns the list of columns necessary to create a table, external table, or view. Here you can modify the columns or data types before you complete the creation of the object.

CREATE TABLE … USING TEMPLATE expands upon Snowflake’s CREATE TABLE functionality to automatically create the structured table using the detected schema from the staged files with no additional input.