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 给出的解决方案
它显示为 NULL 值而不是其他列值
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')
此处的文件格式并不重要,因为由于您的分隔符要求,每一行都将被视为一个字段
编辑:
如果你有一个 NULL 值CONCAT
,函数(用别名)返回 NULL。||
为了消除 NULL,您可以使用NVL2函数
所以你的 SQL 会有一系列的NVL2
s
NVL2 检查第一个参数,如果不是 NULL 返回第一个表达式,如果是 NULL 返回第二个表达式
所以对于用户列
'User'||User||'^'
会变成
NVL2(User,'User','')||NVL2(User,User,'')||NVL2(User,'^','')
PS 我留给你创建其余的 SQL,因为 Stackoverflow 的功能是帮助找到解决方案,而不是勺子提供解决方案。
推荐阅读
- python - 如何同时使用 PIL 进行图像亮度、对比度、锐度和色彩增强?
- github - git push - https/ssh 协议
- c# - C#如何将两个日期与sqlite进行比较
- scala - 如何使用 playframework 在 zipkin 中显示跟踪数据
- r - Change plot title with variable in for loop
- python - 用 Python 查询 Mysql。查询中的正则表达式不起作用
- kubernetes - kubernetes pods 被禁止:用户“user1”不能列出命名空间“stage”中的 pods
- c# - Microsoft.Office.Interop.Outlook GetFolderFromID
- docker - Consul 集群堆栈配置
- spring-boot - 当监视调用 save 方法的 JPARepository 时返回 null