Snowflake cloud data platform 雪花:以多分隔符格式导出数据
要求: 需要按以下格式导出文件,其中性别、年龄和兴趣是列,而Snowflake cloud data platform 雪花:以多分隔符格式导出数据,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,要求: 需要按以下格式导出文件,其中性别、年龄和兴趣是列,而后面的值是该列的数据:。这可以在使用Snowflake时实现吗?如果不能,是否可以使用Python导出数据 User1234^gender:male;age:18-24;interest:fishing User2345^gender:female User3456^age:35-44 User4567^gender:male;interest:fishing,boating 编辑1:demircioglu给出的解决方案 它显示为空值
后面的值是该列的数据:
。这可以在使用Snowflake时实现吗?如果不能,是否可以使用Python导出数据
User1234^gender:male;age:18-24;interest:fishing
User2345^gender:female
User3456^age:35-44
User4567^gender:male;interest:fishing,boating
编辑1:demircioglu给出的解决方案
它显示为空值,而不是其他列值
在EMPLOYEES表数据下方
当我在下面跑的时候
SELECT 'EMP_ID'||EMP_ID||'^'||'FIRST_NAME'||':'||FIRST_NAME||';'||'LAST_NAME'||':'||LAST_NAME FROM tempdw.EMPLOYEES ;
使用所需格式创建SQL并将其写入文件
COPY INTO @~/stage_data
FROM
(
SELECT 'User'||User||'^'||'gender'||':'||gender||';'||'age'||':'||age||';'||'interest'||':'||interest FROM table
)
file_format = (TYPE=CSV compression='gzip')
此处的文件格式并不重要,因为由于分隔符的要求,每一行都将被视为一个字段
编辑:
CONCAT
函数(别名为|
)如果有空值,则返回空值。
为了消除空值,可以使用函数
因此,您的SQL将有一系列的NVL2
s
NVL2检查第一个参数,如果不是NULL,则返回第一个表达式,如果为NULL,则返回第二个表达式
用户栏也是如此
“用户”将变成
NVL2(User,'User','')||NVL2(User,User,'')||NVL2(User,'^','')
另外,我将由您来创建SQL的其余部分,因为Stackoverflow的功能是帮助找到解决方案,而不是填鸭式地提供解决方案。不,我认为Snowflake目前不支持这样的多个分隔符。支持多字节和多字符分隔符,但需要为记录或行指定相同的分隔符
是的,可以进行一些后处理或使用Python脚本来实现这一点。甚至SQL转换语句。这不是我的专业领域,所以如果有人给你举了一个例子,我会让他们加入讨论。例如,如果某行没有特定列的数据,比如年龄和兴趣,它必须输出为User2345^gender:female
请检查更新的原始问题我已经用您的解决方案运行了查询,但给出了NULLUpdated的答案,以使用NVL2函数消除NULLs