Snowflake cloud data platform 将雪花表数据以拼花格式卸载到S3中

Snowflake cloud data platform 将雪花表数据以拼花格式卸载到S3中,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,从Snowflake表加载到S3 bucket后,我可以看到列下的所有值都是Null 下面是我使用的代码 create or replace stage STG_LOAD url='s3://bucket/foler' credentials=(aws_key_id='xxxx',aws_secret_key='xxxx') file_format = (type = PARQUET); copy into STG_LOAD from (select OBJECT_CONSTRUCT(coun

从Snowflake表加载到S3 bucket后,我可以看到列下的所有值都是Null

下面是我使用的代码

create or replace stage STG_LOAD
url='s3://bucket/foler'
credentials=(aws_key_id='xxxx',aws_secret_key='xxxx')
file_format = (type = PARQUET);

copy into STG_LOAD from
(select OBJECT_CONSTRUCT(country_cd,source)
 from table_1 
file_format = (type='parquet')
header='true';

如果我在这里遗漏了什么,请告诉我。

看到空值是正常的。这是意料之中的行为。您的选择生成一个空对象,因此将其写入空值:

create or replace table table_1 
( country_cd varchar, source varchar ) as
select * from values 
('US','Jack'),
('UK','Joe'),
('NL','Jim'),
('EU', null);

select OBJECT_CONSTRUCT(country_cd,source) output
from table_1

+------------------+
|      OUTPUT      |
+------------------+
| { "US": "Jack" } |
| { "UK": "Joe" }  |
| { "NL": "Jim" }  |
| {}               |
+------------------+
如果您不想写入空值,可以在选择时对其进行筛选:

copy into @STG_LOAD from
(select OBJECT_CONSTRUCT(country_cd,source ) output
 from table_1 
where output != OBJECT_CONSTRUCT() ) -- no empty objects
file_format = (type=parquet)
overwrite = true;

那么你是不是有错误?有什么问题吗?顺便说一下,snowflake_模式是一个数据仓库数据模型,我认为它与这个问题无关。我没有得到任何错误,它不是snowflake模式,它是snowflake Cloud dw table。它与雪花云数据仓库复制到应在表单下复制到@STG\u LOADstill空值从选择对象复制到@STG\u loadCD,源自表1文件\u format=type='parquet'header=true;