雪花“按分区”复制选项,包括输出数据集中的分区列

2024-04-28 23:54:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我们正在将数据平台从Redshift迁移到Snowflake,在将复制/卸载命令从Redshift转换到Snowflake时,我们遇到了一个问题,即Redshift卸载命令正在创建分区数据集

Snowflake在COPY into命令中确实有一个选项来指定分区列,而我们看到输出数据集中与红移相比存在一些差异:

  1. 雪花正在生成大写的标题。虽然这不是一个show-shopper,但由于Python是区分大小写的,所以它无法读取由Snowflake生成的拼花地板数据集。Snowflake中是否有方法/选项以小写形式在已卸载的文件中生成头文件

  2. Snowflake在输出数据集/卸载文件中包含分区列。红移的工作原理与配置单元类似,默认情况下,它从输出数据集/卸载文件中排除分区列。是否有一种排除这些分区列的方法/选项,这样我们就不必修改使用这些数据集的后处理脚本

  3. Snowflake不允许使用“分区方式”选项的覆盖模式,因此当作业多次运行时,它会创建重复的数据集/卸载的文件。我们计划在重新运行作业之前添加一个预步骤来手动清理分区文件夹,但是有没有一种方法可以在雪花级别上处理

由于这些问题正在影响我们读取分区数据的一些后处理Python脚本,我们只想了解这些问题是否可以在雪花级别处理,而不是更改脚本。如果您对此有任何意见/建议,我将不胜感激

提前谢谢

问候,, 加甘德普


Tags: 文件数据方法命令脚本redshift选项作业
1条回答
网友
1楼 · 发布于 2024-04-28 23:54:38

我对你的3个问题的想法/答案如下:

  1. 标题大小写:如果在查询中为列名称添加别名,则输出应遵循这些别名,例如,从表1中选择名称作为“名称”,则应输出“名称”而不是“名称”的列标题
  2. 没有办法排除我所知道的分区列,这在文档中明确说明:Copy Options:“没有选项从卸载的数据文件中省略分区表达式中的列。”
  3. 我不知道这是怎么回事。您可能能够编写一个外部函数,然后在存储过程或一系列任务中包含这个函数和COPY-INTO语句,但我怀疑这比添加前面提到的步骤要简单

相关问题 更多 >