Snowflake cloud data platform 在SnowFlake中动态创建一个表(使用来自临时区域的JSON数据)

Snowflake cloud data platform 在SnowFlake中动态创建一个表(使用来自临时区域的JSON数据),snowflake-cloud-data-platform,snowflake-schema,Snowflake Cloud Data Platform,Snowflake Schema,有没有一种方法可以通过使用暂存区域中的JSON文件动态创建表(带列) 我使用了逗号:“从@StageName;复制到TableName;” 这将json文件中的所有不同行放在一个列中 但是,我想要不同的列。例如,第1列应该是“IP”,第2列应该是“OS”,依此类推 提前谢谢你 我已经在我的项目中实现了同样的东西 因此,这是一个两步的过程 第一步-创建一个带有变量数据类型table的stage表,并从stage复制到table中-我可以看到您已经这样做了 第二步-创建一个表或视图(因为snowf

有没有一种方法可以通过使用暂存区域中的JSON文件动态创建表(带列)

我使用了逗号:“从@StageName;复制到TableName;”

这将json文件中的所有不同行放在一个列中

但是,我想要不同的列。例如,第1列应该是“IP”,第2列应该是“OS”,依此类推


提前谢谢你

我已经在我的项目中实现了同样的东西

因此,这是一个两步的过程

第一步-创建一个带有变量数据类型table的stage表,并从stage复制到table中-我可以看到您已经这样做了

第二步-创建一个表或视图(因为snowflake是最快的,视图是动态提取JSON数据的方法),它将直接从这个变量列读取数据,如下所示

create or replace view schema.vw_tablename copy grants as  
SELECT
v:Duration::int Duration,
v:Connectivity::string Connectivity
...
from public.tablename
如果JSON有一个结构数组,请使用下面的

create or replace view schema.vw_tablename copy grants as  
SELECT
v:Duration::int Duration,
v:Connectivity::string Connectivity,
f.value:Time::int as Event_Time,
from public.tablename,
table(flatten(v:arrayname)) f

我已经在我的项目中实现了同样的东西

因此,这是一个两步的过程

第一步-创建一个带有变量数据类型table的stage表,并从stage复制到table中-我可以看到您已经这样做了

第二步-创建一个表或视图(因为snowflake是最快的,视图是动态提取JSON数据的方法),它将直接从这个变量列读取数据,如下所示

create or replace view schema.vw_tablename copy grants as  
SELECT
v:Duration::int Duration,
v:Connectivity::string Connectivity
...
from public.tablename
如果JSON有一个结构数组,请使用下面的

create or replace view schema.vw_tablename copy grants as  
SELECT
v:Duration::int Duration,
v:Connectivity::string Connectivity,
f.value:Time::int as Event_Time,
from public.tablename,
table(flatten(v:arrayname)) f

如果是大尺寸的嵌套json文件呢?然后,由于变量数据类型的大小限制,步骤1本身将不可能。有什么解决方法吗?snowflake没有嵌套JSON的问题。。你可以想多深就多深。关于大小限制,单个json最多支持20MB。我相信,如果json大于20MB,我建议在某些结构上拆分json并使其更小!如果是大尺寸的嵌套json文件呢?然后,由于变量数据类型的大小限制,步骤1本身将不可能。有什么解决方法吗?snowflake没有嵌套JSON的问题。。你可以想多深就多深。关于大小限制,单个json最多支持20MB。我相信,如果json大于20MB,我建议在某些结构上拆分json并使其更小!