我们希望将值对存储为Snowflake中的半结构化数据类型。
看来我们可以使用OBJECT或VARIANT数据类型。
该文档暗示将OBJECT用于值对,但尚不清楚,因为它是比Variant更好的选择...还是我错过了(非常可能)
所以...对象还是变量?
更新: 到目前为止,我们从以JSON填充的OBJECT类型的列开始。 但是,我们的JSON只是键名从不为NULL的值对。
答案 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命令将其显示为更多表。