在复制活动中配置 Snowflake
本文概述了如何使用数据管道中的复制活动从/向 Snowflake 复制数据。
支持的配置
有关复制活动下每个选项卡的配置,请分别转到以下各部分。
常规
若要配置“常规”设置选项卡,请参阅“常规”设置指导。
源
Snowflake 支持复制活动的“源”选项卡下的以下属性。
需要以下属性:
- 数据存储类型:选择“外部”。
- 连接:从连接列表中选择 Snowflake 连接。 如果连接不存在,则通过选择“新建”创建新的 Snowflake 连接。
- 数据库:要在连接后使用的默认数据库。 它应为指定角色具有权限的现有数据库。
- 使用查询:可以选择“表”或“查询”作为使用查询。 下表介绍了每个设置的配置。
- 表:从下拉列表中选择数据库中的表。 或者,选中“编辑”以手动输入表名称。
- 查询:指定要从 Snowflake 读取数据的 SQL 查询。 如果架构、表和列的名称包含小写字母,请在查询中引用对象标识符,例如
select * from "schema"."myTable"
。
在“高级”下,可以指定以下字段:
存储集成:指定在 Snowflake 中创建的存储集成的名称。 有关使用存储集成的先决条件步骤,请参阅配置 Snowflake 存储集成。
其他 Snowflake 复制选项:指定将在 Snowflake COPY 语句中用于加载数据的其他 Snowflake 复制选项。 其他复制选项作为键值对的字典提供。 示例:MAX_FILE_SIZE、OVERWRITE。 有关详细信息,请参阅 Snowflake 复制选项。
其他 Snowflake 格式选项:指定将在 Snowflake COPY 语句中用于加载数据的其他 Snowflake 格式选项。 提供给 COPY 命令的其他文件格式选项作为键值对的字典提供。 示例:DATE_FORMAT、TIME_FORMAT、TIMESTAMP_FORMAT。 有关详细信息,请参阅 Snowflake 格式类型选项。
从 Snowflake 进行的直接复制
如果目标数据存储和格式符合此部分所述条件,则可使用复制活动将数据从 Snowflake 直接复制到目标。 该服务将检查设置,如果不符合以下条件,复制活动运行将会失败:
在源中指定存储集成时:目标数据存储是在 Snowflake 的外部暂存区中引用的 Azure Blob存储。 复制数据之前,需要完成以下步骤:
使用任何受支持的身份验证类型为目标 Azure Blob 存储创建 Azure Blob 存储连接。
在目标 Azure Blob 存储“访问控制 (IAM)”中至少向 Snowflake 服务主体授予最新的“存储 Blob 数据参与者”角色。
当未在源中指定存储集成时:
目标连接是使用“共享访问签名”身份验证的 Azure Blob 存储。 若要采用下面受支持的格式将数据直接复制到 Azure Data Lake Storage Gen2,可以创建带有针对 Azure Data Lake Storage Gen2 帐户的 SAS 身份验证功能的 Azure Blob 存储连接,从而避免使用从 Snowflake 进行的暂存复制。
目标数据格式为“Parquet”、“DelimitedText”或“JSON”,其配置如下:
- 对于“Parquet”格式,压缩编解码器为“无”、“Snappy”或或“Lzo”。
- 对于“DelimitedText”格式:
- 行分隔符为 \r\n 或任何单个字符。
- 压缩类型可以是“无”、“gzip”、“bzip2”或“deflate”。
- 编码保留为默认值或设置为“UTF-8”。
- 引号字符为“双引号”、“单引号”或“无引号字符”。
- 对于“JSON”格式,直接复制只支持以下情况:源 Snowflake 表或查询结果仅有一列且该列的数据类型是“VARIANT”、“OBJECT”或“ARRAY” 。
- 压缩类型可以是“无”、“gzip”、“bzip2”或“deflate”。
- 编码保留为默认值或设置为“UTF-8”。
- 复制活动目标中的“文件模式”保留为默认值或设置为“对象集”。
在复制活动源中,未指定“其他列”。
列映射未指定。
从 Snowflake 进行暂存复制
如果目标数据存储或格式与上一部分所述的 Snowflake COPY 命令并非以本机方式兼容,请通过临时 Azure Blob 存储实例启用内置暂存复制。 暂存复制功能也能提供更高的吞吐量。 该服务将数据从 Snowflake 导出到暂存存储,然后将数据复制到目标,最后从临时存储中清除临时数据。
若要使用此功能,请创建一个引用 Azure 存储帐户作为临时暂存位置的 Azure Blob 存储连接。 然后转到“设置”选项卡来配置暂存设置。 需要选择“外部”来配置 Azure Blob 存储暂存连接。
在源中指定存储集成时,临时暂存 Azure Blob 存储应是在 Snowflake 的外部暂存区中引用的项。 请确保使用任何受支持的身份验证为其创建 Azure Blob 存储连接,并在暂存 Azure Blob 存储“访问控制 (IAM)”中至少向 Snowflake 服务主体授予“存储 Blob 数据参与者”角色。 “设置”选项卡中的“暂存设置”下的“存储路径”是必需的。
当未在源中指定存储集成时,暂存 Azure Blob 存储连接必须使用 Snowflake COPY 命令所需的共享访问签名身份验证。 确保在暂存 Azure Blob 存储中向 Snowflake 授予适当的访问权限。 要了解详细信息,请参阅本文。
目标
Snowflake 在复制活动的“目标”选项卡下支持以下属性。
需要以下属性:
- 数据存储类型:选择“外部”。
- 连接:从连接列表中选择 Snowflake 连接。 如果连接不存在,则通过选择“新建”创建新的 Snowflake 连接。
- 数据库:要在连接后使用的默认数据库。 它应为指定角色具有权限的现有数据库。
- 表:从下拉列表中选择数据库中的表。 或者,选中“编辑”以手动输入表名称。
在“高级”下,可以指定以下字段:
复制前脚本:指定每次运行时,复制活动将数据写入到目标表之前要执行的脚本。 此属性可用于清理预先加载的数据。
存储集成:指定在 Snowflake 中创建的存储集成的名称。 有关使用存储集成的先决条件步骤,请参阅配置 Snowflake 存储集成。
其他 Snowflake 复制选项:指定将在 Snowflake COPY 语句中用于加载数据的其他 Snowflake 复制选项。 其他复制选项作为键值对的字典提供。 示例:ON_ERROR、FORCE、LOAD_UNCERTAIN_FILES。 有关详细信息,请参阅 Snowflake 复制选项。
其他 Snowflake 格式选项:指定将在 Snowflake COPY 语句中用于加载数据的其他 Snowflake 格式选项。 提供给 COPY 命令的其他文件格式选项作为键值对的字典提供。 示例:DATE_FORMAT、TIME_FORMAT、TIMESTAMP_FORMAT。 有关详细信息,请参阅 Snowflake 格式类型选项。
直接复制到 Snowflake
如果源数据存储和格式符合此部分所述条件,则可使用复制活动将数据从源直接复制到 Snowflake。 该服务将检查设置,如果不符合以下条件,复制活动运行将会失败:
在目标中指定存储集成时:
源数据存储是在 Snowflake 的外部阶段中引用的 Azure Blob 存储。 复制数据之前,需要完成以下步骤:
使用任何受支持的身份验证类型为源 Azure Blob 存储创建 Azure Blob 存储连接。
在源 Azure Blob 存储“访问控制 (IAM)”中至少向 Snowflake 服务主体授予“存储 Blob 数据读者”角色。
当未在目标中指定存储集成时:
源连接是使用“共享访问签名”身份验证的 Azure Blob 存储。 若要采用下面受支持的格式直接从 Azure Data Lake Storage Gen2 复制数据,可以创建带有针对 Azure Data Lake Storage Gen2 帐户的 SAS 身份验证功能的 Azure Blob 存储连接,从而避免使用到 Snowflake 的暂存复制。
源数据格式为“Parquet”、“DelimitedText”或“JSON”,其配置如下:
对于“Parquet”格式,压缩编解码器为“无”或“Snappy”。
对于“DelimitedText”格式:
- 行分隔符为 \r\n 或任何单个字符。 如果行分隔符不是“\r\n”,则取消选择“将第一行用作标头”,并且不指定“跳过行计数”。
- 压缩类型可以是“无”、“gzip”、“bzip2”或“deflate”。
- 编码保留为默认值或设置为“UTF-8”、“UTF-16”、“UTF-16BE”、“UTF-32”、“UTF-32BE”、“BIG5”、“EUC-JP”、“EUC-KR”、“GB18030”、“ISO-2022-JP”、“ISO-2022-KR”、“ISO-8859-1”、“ISO-8859-2”、“ISO-8859-5”、“ISO-8859-6”、“ISO-8859-7”、“ISO-8859-8”、“ISO-8859-9”、“WINDOWS-1250”、“WINDOWS-1251”、“WINDOWS-1252”、“WINDOWS-1253”、“WINDOWS-1254”、“WINDOWS-1255”。
- 引号字符为“双引号”、“单引号”或“无引号字符”。
对于“JSON”格式,直接复制只支持以下情况:目标 Snowflake 表仅有一列且该列的数据类型是“VARIANT”、“OBJECT”或“ARRAY”。
- 压缩类型可以是“无”、“gzip”、“bzip2”或“deflate”。
- 编码保留为默认值或设置为“UTF-8”。
- 列映射未指定。
在复制活动源中:
- 未指定“其他列”。
- 如果源是文件夹,则选择“递归”。
- 未在“按上次修改时间筛选”和“启用分区发现”中指定“前缀”、“开始时间(UTC)”和“结束时间(UTC)”。
暂存复制到 Snowflake
如果源数据存储或格式与上一部分所述的 Snowflake COPY 命令并非以本机方式兼容,请通过临时的 Azure Blob 存储实例启用内置暂存复制。 暂存复制功能也能提供更高的吞吐量。 该服务会自动转换数据,以满足 Snowflake 的数据格式要求。 然后,它会调用 COPY 命令将数据载入 Snowflake。 最后,它会从 Blob 存储中清理临时数据。
若要使用此功能,请创建一个引用 Azure 存储帐户作为临时暂存位置的 Azure Blob 存储连接。 然后转到“设置”选项卡来配置暂存设置。 需要选择“外部”来配置 Azure Blob 存储暂存连接。
在目标中指定存储集成时,临时暂存 Azure Blob 存储应是你在 Snowflake 的外部暂存区中引用的项。 请确保使用任何受支持的身份验证为其创建 Azure Blob 存储连接,并在暂存 Azure Blob 存储“访问控制 (IAM)”中至少向 Snowflake 服务主体授予“存储 Blob 数据读者”角色。 “设置”选项卡中的“暂存设置”下的“存储路径”是必需的。
当未在目标中指定存储集成时,暂存 Azure Blob 存储连接需要使用 Snowflake COPY 命令所需的共享访问签名身份验证。
映射
对于“映射 ”选项卡配置,请转到“映射”选项卡下的“配置映射”。
设置
对于“设置”选项卡配置,请转到“设置”选项卡下的“配置其他设置”。
表摘要
下表包含 Snowflake 中的复制活动的详细信息。
源
名称 | 描述 | 值 | 必选 | JSON 脚本属性 |
---|---|---|---|---|
数据存储类型 | 你的数据存储类型。 | 外部 | 是 | / |
Connection | 与源数据存储的连接。 | < 你的连接 > | 是 | 连接 |
Database | 用作源的数据库。 | < 你的数据库 > | 是 | database |
使用查询 | 从 Snowflake 读取数据的方式。 | • 表 • 查询 |
否 | • 表 • 查询 |
表 | 要读取数据的表的名称。 | < 源表的名称> | 是 | 架构 表 |
查询 | 要从 Snowflake 读取数据的 SQL 查询。 | < 源查询的名称> | 是 | 查询 |
存储集成 | 指定在 Snowflake 中创建的存储集成的名称。 有关使用存储集成的先决条件步骤,请参阅配置 Snowflake 存储集成。 | < 你的存储集成 > | 否 | storageIntegration |
其他 Snowflake 复制选项 | 其他复制选项,作为键值对的字典提供。 示例:MAX_FILE_SIZE、OVERWRITE。 有关详细信息,请参阅 Snowflake 复制选项。 | • 姓名 • 值 |
否 | additionalCopyOptions |
其他 Snowflake 格式选项 | 作为键值对的字典提供给 COPY 命令的其他文件格式选项。 示例:DATE_FORMAT、TIME_FORMAT、TIMESTAMP_FORMAT。 有关详细信息,请参阅 Snowflake 格式类型选项。 | • 姓名 • 值 |
否 | additionalFormatOptions |
目标
注意
虽然源支持非 Azure Snowflake 实例,但 Snowflake 目标(也称为 Azure 数据工厂 中的接收器)目前仅支持 Azure Snowflake 实例。
名称 | 描述 | 值 | 必选 | JSON 脚本属性 |
---|---|---|---|---|
数据存储类型 | 你的数据存储类型。 | 外部 | 是 | / |
Connection | 与目标数据存储的连接。 | < 你的连接 > | 是 | 连接 |
Database | 用作目标的数据库。 | < 你的数据库> | 是 | / |
表 | 目标数据表。 | < 目标表的名称> | 是 | • 架构 • 表 |
复制前脚本 | 在每次运行时将数据写入到 Snowflake 之前要由复制活动运行的 SQL 查询。 使用此属性清理预加载的数据。 | < 你的复制前脚本> | 是 | preCopyScript |
存储集成 | 指定在 Snowflake 中创建的存储集成的名称。 有关使用存储集成的先决条件步骤,请参阅配置 Snowflake 存储集成。 | < 你的存储集成 > | 否 | storageIntegration |
其他 Snowflake 复制选项 | 其他复制选项,作为键值对的字典提供。 示例:ON_ERROR、FORCE、LOAD_UNCERTAIN_FILES。 有关详细信息,请参阅 Snowflake 复制选项。 | • 姓名 • 值 |
否 | additionalCopyOptions |
其他 Snowflake 格式选项 | 提供给 COPY 命令的其他文件格式选项,作为键值对的字典提供。 示例:DATE_FORMAT、TIME_FORMAT、TIMESTAMP_FORMAT。 有关详细信息,请参阅 Snowflake 格式类型选项。 | • 姓名 • 值 |
否 | additionalFormatOptions |