雪花中的价值对:变体还是对象?

时间:2020-03-06 16:14:17

标签: snowflake-cloud-data-platform

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

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

该文档暗示将OBJECT用于值对,但尚不清楚,因为它是比Variant更好的选择...还是我错过了(非常可能)

所以...对象还是变量?

更新: 到目前为止,我们从以JSON填充的OBJECT类型的列开始。 但是,我们的JSON只是键名从不为NULL的值对。

2 个答案:

答案 0 :(得分:1)

对于名称/值对,OBJECT就足够了。例如,OBJECT_CONSTRUCT('name',42)。 VARIANT还允许您存储其他数据类型。

答案 1 :(得分:1)

不知道要在表/列中存储哪种数据,很难回答。 您可以轻松地将对象存储在VARIANT列中,但并非相反。 存储对象时,必须确保密钥不为空。 (“对象:用于表示键/值对的集合,其中键是非空字符串,并且值是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命令将其显示为更多表。