首页 > 解决方案 > 在 SnowFlake 中动态创建表(使用暂存区的 JSON 数据)

问题描述

有没有办法通过使用暂存区的 JSON 文件动态创建表(带列)?

我使用了命令:'copy into TableName from @StageName;'

这将我的 json 文件中的所有不同行放入单个列中。

在此处输入图像描述

但是,我想要不同的列。例如,第 1 列应为“IP”,第 2 列应为“操作系统”,依此类推。

先感谢您!!

标签: snowflake-cloud-data-platformsnowflake-schema

解决方案


我在我的项目中实现了同样的事情。

所以这是一个两步的过程。

第一步 - 创建一个包含变量数据类型表的阶段表并从阶段复制到表中 - 我可以看到你已经这样做了。

第二步 - 创建一个表或一个视图(因为雪花是超快的,视图是这种动态提取 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

推荐阅读