首页 > 解决方案 > Snowflake 中的值对:变体还是对象?

问题描述

我们希望将值对存储为雪花中的半结构化数据类型。

看起来我们可以使用 OBJECT 或 VARIANT 数据类型。

该文档暗示将 OBJECT 用于值对,但不太清楚它是否是比变体“更好”的选择......或者我错过了它(很可能)

那么... 对象还是变体?

更新:到目前为止,我们已经开始使用 JSON 填充的 OBJECT 类型的列。但是,我们的 JSON 只是键名永远不会为 NULL 的值对。

标签: snowflake-cloud-data-platform

解决方案


在不知道要在表/列中存储哪种数据的情况下,很难回答。您可以轻松地将 OBJECT 存储在 VARIANT 列中,但不能相反。存储 OBJECT 时,必须确保密钥不为空。(“OBJECTS:用于表示键值对的集合,其中key为非空字符串,value为VARIANT类型的值。Snowflake目前不支持显式类型的对象。”)更多信息可以在这里找到:

https://docs.snowflake.net/manuals/sql-reference/data-types-semistructured.html https://docs.snowflake.net/manuals/user-guide/querying-semistructured.html

如果您想将 JSON 存储在您的变体列中,您可以直接查询它或使用 FLATTEN 命令将其呈现为更像表格。


推荐阅读