設定複製活動中的 Snowflake
本文概述如何使用資料管線中的複製活動,從 Snowflake 複製資料及將資料複製到該處。
支援的設定
對於複製活動下每個索引標籤的組態,請分別參閱下列各節。
一般
請參閱<[一般] 設定>指導,來設定 [一般] 設定索引標籤。
來源
在複製活動的 [來源] 索引標籤下,Snowflake 支援下列屬性。
以下是必要的屬性:
- 資料存放區類型:選取 [外部]。
- 連線:從連線清單中選取 Snowflake 連線。 如果不存在連線,請選取 [新增],以建立新的 Snowflake 連線。
- 資料庫:連線後要使用的預設資料庫。 通常是指定角色擁有權限的現有資料庫。
- 使用查詢:您可以選擇 [資料表] 或 [查詢] 作為您的使用查詢。 下列清單描述每個設定的組態。
- 資料表:從下拉式清單選取資料庫中的資料表。 或勾選 [編輯] 以手動輸入資料表名稱。
- 查詢:指定 SQL 查詢從 Snowflake 讀取資料。 如果結構描述、資料表和資料行的名稱包含小寫,請在查詢中為物件識別碼加上引號,例如
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 儲存體連線。
將至少儲存體 Blob 資料參與者角色授與目的地 Azure Blob 儲存體存取控制 (IAM) 中的 Snowflake 服務主體。
當您未在來源中指定儲存體整合時:
目的地連線是具有共用存取簽章驗證的 Azure Blob 儲存體。 如果您想要以下列支援的格式直接將資料複製到 Azure Data Lake Storage Gen2,請針對 Azure Data Lake Storage Gen2 帳戶建立具有 SAS 驗證的 Azure Blob 儲存體連線,以避免使用從 Snowflake 分段複製。
目的地資料格式包括 Parquet、分隔符號文字或 JSON,並具有下列設定:
- 針對 Parquet 格式,壓縮轉碼器為 None、Snappy 或 Lzo。
- 針對分隔符號文字格式:
- 資料列分隔符號 為 \r\n,或任何單一字元。
- 壓縮類型可以是無、gzip、bzip2 或 deflate。
- 編碼會保留為預設值,或設定為 UTF-8。
- 引號字元為雙引號、單引號或無引號字元。
- 針對 JSON 格式,直接複製僅支援來源 Snowflake 資料表或查詢結果只有單一資料行的案例,且此資料行的資料類型為 VARIANT、OBJECT 或 ARRAY。
- 壓縮類型可以是無、gzip、bzip2 或 deflate。
- 編碼會保留為預設值,或設定為 UTF-8。
- 複製活動目的地中的 [檔案模式]會保留為預設值,或設定為 [設定物件]。
在複製活動來源中,未指定 [其他資料行]。
未指定資料行對應。
從 Snowflake 暫存複本
您的目的地資料存放區或格式與 Snowflake COPY 命令原生不相容時,如上一節所述,請使用過渡 Azure Blob 儲存體執行個體啟用內建分段複製。 分段複製功能也能提供更好的輸送量。 服務會將資料從 Snowflake 匯出至暫存儲存體,然後將資料複製到目的地,最後從暫存儲存體中清除暫存資料。
如要使用此功能,請建立 Azure Blob 儲存體連線,參考具有過渡暫存的 Azure 儲存體帳戶。 然後移至 [設定] 索引標籤以設定您的檢閱及測試設定。 您必須選取 [外部] 來設定 Azure Blob 儲存體檢閱及測試連線。
當您在來源中指定 [儲存體整合] 時,過渡檢閱及測試 Azure Blob 儲存體應該是您在 Snowflake 外部階段中參考的儲存體。 請確定您使用任何支援的驗證為其建立 Azure Blob 儲存體連線,並將至少儲存體 Blob 資料參與者角色授與暫存 Azure Blob 儲存體存取控制 (IAM) 中的 Snowflake 服務主體。 [設定] 索引標籤中 [檢閱及測試設定] 下的 [儲存體路徑] 是必要的。
當您未在來源中指定 [儲存體整合] 時,根據 Snowflake COPY 命令所要求,暫存 Azure Blob 儲存體連線必須使用共用存取簽章驗證。 請確定您將適當的存取權限授與暫存 Azure Blob 儲存體中的 Snowflake。 若要深入了解,請參閱這篇文章。
Destination
在複製活動的 [目的地] 索引標籤下,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 儲存體連線。
將至少儲存體 Blob 資料讀者角色授與來源 Azure Blob 儲存體存取控制 (IAM) 中的 Snowflake 服務主體。
如果您未在目的地中指定儲存體整合:
來源連線是具有共用存取簽章驗證的 Azure Blob 儲存體。 如果您想要以下列支援的格式直接將資料從 Azure Data Lake Storage Gen2 複製,請針對 Azure Data Lake Storage Gen2 帳戶建立具有 SAS 驗證的 Azure Blob 儲存體連線,以避免使用分段複製到 Snowflake。
來源資料格式包括 Parquet、分隔符號文字或 JSON,並具有下列設定:
針對 Parquet 格式,壓縮轉碼器為 None 或 Snappy。
針對分隔符號文字格式:
- 資料列分隔符號 為 \r\n,或任何單一字元。 如果資料列分隔符號不是 “\r\n”,則會取消選取 [第一個資料列作為標頭],而且不會指定 [Skip 行計數]。
- 壓縮類型可以是無、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 Blob 儲存體連線,參考具有過渡暫存的 Azure 儲存體帳戶。 然後移至 [設定] 索引標籤以設定您的檢閱及測試設定。 您必須選取 [外部] 來設定 Azure Blob 儲存體檢閱及測試連線。
當您在目的地中指定 [儲存體整合] 時,過渡檢閱及測試 Azure Blob 儲存體應該是您在 Snowflake 外部階段中參考的儲存體。 請確定您使用任何支援的驗證為其建立 Azure Blob 儲存體連線,並將至少儲存體 Blob 資料讀者角色授與暫存 Azure Blob 儲存體存取控制 (IAM) 中的 Snowflake 服務主體。 [設定] 索引標籤中 [檢閱及測試設定] 下的 [儲存體路徑] 是必要的。
當您未在目的地中指定 [儲存體整合] 時,根據 Snowflake COPY 命令所要求,暫存 Azure Blob 儲存體連線必須使用共用存取簽章驗證。
對應
對於 [對應] 索引標籤組態,請參閱<在 [對應] 索引標籤下設定對應>。
設定
對於 [設定] 索引標籤組態,請參閱<在 [設定] 索引標籤下進行其他設定>。
資料表摘要
下列資料表包含有關 Snowflake 中複製活動的詳細資訊。
來源
名稱 | 描述 | 值 | 必要 | JSON 指令碼屬性 |
---|---|---|---|---|
資料存放區類型 | 資料存放區類型。 | 外部 | Yes | / |
[連接] | 您與來源資料存放區的連線。 | <您的連線> | Yes | connection |
Database | 您用作來源的資料庫。 | <您的資料庫> | Yes | database |
使用查詢 | 從 Snowflake 讀取資料的方式。 | • 資料表 • 查詢 |
No | • 資料表 • 查詢 |
Table | 要讀取資料的資料表名稱。 | <來源資料表的名稱> | Yes | 結構描述 table |
查詢 | 從 Snowflake 讀取資料的 SQL 查詢。 | <來源查詢的名稱> | Yes | query |
儲存體整合 | 指定您在 Snowflake 中建立的儲存體整合名稱。 如需使用儲存體整合的必要步驟,請參閱設定 Snowflake 儲存體整合。 | <您的儲存體整合> | No | storageIntegration |
其他 Snowflake 複製選項 | 其他複製選項,以機碼值組字典的形式提供。 範例:MAX_FILE_SIZE、OVERWRITE。 如需詳細資訊,請參閱 Snowflake 複製選項 (英文)。 | • 名稱 • 值 |
No | additionalCopyOptions |
其他 Snowflake 格式選項 | 提供給 COPY 命令充當機碼值組字典的其他檔案格式選項。 範例:DATE_FORMAT、TIME_FORMAT、TIMESTAMP_FORMAT。 如需詳細資訊,請參閱 Snowflake 格式型別選項 (英文)。 | • 名稱 • 值 |
No | additionalFormatOptions |
Destination
注意
雖然來源支援非 Azure Snowflake 執行個體,但目前只有 Azure Snowflake 執行個體支援 Snowflake 目的地 (也稱為 Azure Data Factory 中的接收器)。
名稱 | 描述 | 值 | 必要 | JSON 指令碼屬性 |
---|---|---|---|---|
資料存放區類型 | 資料存放區類型。 | 外部 | Yes | / |
[連接] | 與目的地資料存放區的連線。 | <您的連線> | Yes | connection |
Database | 您的目的地資料庫。 | <您的資料庫> | Yes | / |
Table | 您的目的地資料表。 | <您的目的地資料表的名稱> | Yes | • 結構描述 • 資料表 |
複製前指令碼 | 一個供複製活動在每次執行時將資料寫入到 Snowflake 前執行的 SQL 查詢。 使用此屬性來清除預先載入的資料。 | <您的複製前指令碼> | [否] | preCopyScript |
儲存體整合 | 指定您在 Snowflake 中建立的儲存體整合名稱。 如需使用儲存體整合的必要步驟,請參閱設定 Snowflake 儲存體整合。 | <您的儲存體整合> | No | storageIntegration |
其他 Snowflake 複製選項 | 其他複製選項,以機碼值組字典的形式提供。 範例:ON_ERROR、FORCE、LOAD_UNCERTAIN_FILES。 如需詳細資訊,請參閱 Snowflake 複製選項 (英文)。 | • 名稱 • 值 |
No | additionalCopyOptions |
其他 Snowflake 格式選項 | 提供給 COPY 命令充當機碼值組字典的其他檔案格式選項。 範例:DATE_FORMAT、TIME_FORMAT、TIMESTAMP_FORMAT。 如需詳細資訊,請參閱 Snowflake 格式型別選項 (英文)。 | • 名稱 • 值 |
No | additionalFormatOptions |