Snowflake cloud data platform “的列化”;“非本地人”;加载到变量列中的数据类型

Snowflake cloud data platform “的列化”;“非本地人”;加载到变量列中的数据类型,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,在文档中有一个关于的部分,警告在某些情况下变量列中给定路径的值将不会具体化;例如,如果值不是全部具有相同的数据类型。也就是说,如果{“foo”:1}和{“foo”:“1”}都存在,“foo”的值显然不能提取为其列 但在所有值都具有相同类型的情况下,如何处理所谓的非本机类型仍然不完全清楚 文档描述了变量数据类型上下文中的日期和时间戳(这意味着这些值“存储为字符串”),我的问题是这是否扩展到数字类型,例如FLOAT8。文档表明,本机类型可以在JSON的上下文中理解(JSON有一个本质上相当混合的本机

在文档中有一个关于的部分,警告在某些情况下变量列中给定路径的值将不会具体化;例如,如果值不是全部具有相同的数据类型。也就是说,如果
{“foo”:1}
{“foo”:“1”}
都存在,“foo”的值显然不能提取为其列

但在所有值都具有相同类型的情况下,如何处理所谓的非本机类型仍然不完全清楚

文档描述了变量数据类型上下文中的日期和时间戳(这意味着这些值“存储为字符串”),我的问题是这是否扩展到数字类型,例如
FLOAT8
。文档表明,本机类型可以在JSON的上下文中理解(JSON有一个本质上相当混合的本机数字类型)

  • FLOAT8
    是变量数据中的本机类型还是存储为字符串
  • 这样一个值(存储为字符串)会被提取到它自己的列中,还是与那些未提取到其他列中的剩余值一起显示为“已解析的半结构化结构”

文档建议进行性能测试“以查看哪种结构提供了最佳性能”,但如果能够准确理解提取逻辑,这会容易得多。

下面的测试表明yes FLOAT8不是以字符串形式存储的,因此我希望它以可以检索的方式存储(/pruned etc)在查询执行期间独立于JSON中的其他数据

create table foo (col variant) as (select object_construct('x', FLOOR(random()*1000000)::float8) col from table(generator(rowcount => 100000000)));
create table foo2 (col variant) as (select object_construct('x', col:x::string) col from foo);
TABLE_NAME  BYTES
FOO         800071680
FOO2        1480282112

下面的测试表明yes FLOAT8不是以字符串形式存储的,因此我希望它的存储方式能够在查询执行期间独立于JSON中的其他数据进行检索(/pruned等)

create table foo (col variant) as (select object_construct('x', FLOOR(random()*1000000)::float8) col from table(generator(rowcount => 100000000)));
create table foo2 (col variant) as (select object_construct('x', col:x::string) col from foo);
TABLE_NAME  BYTES
FOO         800071680
FOO2        1480282112