使用 Azure Data Factory 或 Synapse Analytics 從 Google Cloud 儲存體複製資料

適用于: Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用于企業的單一分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告等所有專案。 瞭解如何 免費啟動新的試用版

本文概述如何從 Google Cloud 儲存體 (GCS) 複製資料。 若要深入瞭解,請閱讀 Azure Data Factory Synapse Analytics 的 簡介文章。

支援的功能

下列功能支援此 Google Cloud 儲存體 連接器:

支援的功能 IR
複製活動 (source/-) ① ②
對應資料流程 (source/-)
查閱活動 ① ②
GetMetadata 活動 ① ②
刪除活動 ① ②

(1) Azure 整合執行時間 (2) 自我裝載整合執行時間

具體而言,此 Google Cloud 儲存體 連接器支援像現在一樣複製檔案,或使用支援的檔案格式和壓縮編解碼器 剖析檔案 。 它會利用 GCS 的 S3 相容互通性。

必要條件

您的 Google Cloud 儲存體 帳戶上需要下列設定:

  1. 啟用 Google Cloud 儲存體 帳戶的互通性
  2. 設定預設專案,其中包含您想要從目標 GCS 貯體複製的資料。
  3. 建立服務帳戶,並使用 GCP 上的雲端 IAM 來定義正確的許可權層級。
  4. 產生此服務帳戶的存取金鑰。

Retrieve access key for Google Cloud Storage

所需的權限

若要從 Google Cloud 儲存體複製資料,請確定您已獲得下列物件作業許可權: storage.objects.get storage.objects.list

如果您使用 UI 來撰寫,則測試連結服務連線和從根瀏覽目錄等作業需要額外的 storage.buckets.list 許可權。 如果您不想授與此許可權,您可以從 UI 選擇 [測試檔案路徑的連接] 或 [從指定的路徑流覽] 選項。

如需 Google Cloud 儲存體 角色和相關聯許可權的完整清單,請參閱 Google Cloud 網站上的 Cloud 儲存體 IAM 角色。

開始使用

若要使用管線執行複製活動,您可以使用下列其中一個工具或 SDK:

使用 UI 建立 Google Cloud 儲存體連結服務

使用下列步驟,在 Azure 入口網站 UI 中建立 Google Cloud 儲存體的連結服務。

  1. 流覽至 Azure Data Factory 或 Synapse 工作區中的 [管理] 索引標籤,然後選取 [連結服務],然後按一下 [新增]:

  2. 搜尋 Google,然後選取 Google Cloud 儲存體 (S3 API) 連接器。

    Select the Google Cloud Storage (S3 API) connector.

  3. 設定服務詳細資料、測試連線,並建立新的連結服務。

    Configure a linked service to Google Cloud Storage.

連線or 組態詳細資料

下列各節提供屬性的相關詳細資料,這些屬性是用來定義 Google Cloud 專屬的 Data Factory 實體儲存體。

連結的服務屬性

Google Cloud 儲存體連結服務支援下列屬性:

屬性 描述 必要
type type 屬性必須設定為 GoogleCloud儲存體 Yes
accessKeyId 秘密存取金鑰的識別碼。 若要尋找存取金鑰和秘密,請參閱 必要條件 Yes
secretAccessKey 秘密存取金鑰本身。 將此欄位標示為 SecureString 以安全地儲存,或 參考儲存在 Azure 金鑰保存庫 中的秘密。 Yes
serviceUrl 將自訂 GCS 端點指定為 https://storage.googleapis.com Yes
connectVia 要用來連接到資料存放區的整合執行時間 。 您可以使用 Azure 整合執行時間或自我裝載整合執行時間(如果您的資料存放區位於私人網路中)。 如果未指定此屬性,服務會使用預設的 Azure 整合執行時間。 No

以下是範例:

{
    "name": "GoogleCloudStorageLinkedService",
    "properties": {
        "type": "GoogleCloudStorage",
        "typeProperties": {
            "accessKeyId": "<access key id>",
            "secretAccessKey": {
                "type": "SecureString",
                "value": "<secret access key>"
            },
            "serviceUrl": "https://storage.googleapis.com"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

資料集屬性

Azure Data Factory 支援下列檔案格式。 如需以格式為基礎的設定,請參閱每個文章。

在格式型資料集的設定下 location ,Google Cloud 儲存體支援下列屬性:

屬性 描述 必要
type 資料集 底下的 location type 屬性必須設定為 GoogleCloud儲存體Location Yes
bucketName GCS 貯體名稱。 Yes
folderPath 指定貯體下資料夾的路徑。 如果您想要使用萬用字元來篩選資料夾,請略過此設定,並在活動來源設定中指定該設定。 No
fileName 指定貯體和資料夾路徑下的檔案名。 如果您想要使用萬用字元來篩選檔案,請略過此設定,並在活動來源設定中指定。 No

範例:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<Google Cloud Storage linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "GoogleCloudStorageLocation",
                "bucketName": "bucketname",
                "folderPath": "folder/subfolder"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

複製活動屬性

如需可用來定義活動的區段和屬性的完整清單,請參閱 管線 一文。 本節提供 Google Cloud 儲存體來源支援的屬性清單。

Google Cloud 儲存體作為來源類型

Azure Data Factory 支援下列檔案格式。 如需以格式為基礎的設定,請參閱每個文章。

在格式型複製來源的設定下 storeSettings ,Google Cloud 儲存體支援下列屬性:

屬性 描述 必要
type 底下的 storeSettings type 屬性必須設定為 GoogleCloud儲存體Read設定 Yes
找出要複製的檔案:
選項 1:靜態路徑
從資料集中指定的指定貯體或資料夾/檔案路徑複製。 如果您想要從貯體或資料夾複製所有檔案,請另外指定 wildcardFileName*
選項 2:GCS 前置詞
-首碼
在資料集中設定的指定貯體底下 GCS 金鑰名稱的前置詞,以篩選來源 GCS 檔案。 選取名稱開頭為 bucket_in_dataset/this_prefix 的 GCS 索引鍵。 它利用 GCS 的服務端篩選,可提供比萬用字元篩選更好的效能。 No
選項 3:萬用字元
- 萬用字元FolderPath
在資料集中設定的指定貯體下,具有萬用字元的資料夾路徑,以篩選源資料夾。
允許的萬用字元為: * (比對零或多個字元)和 ? (符合零或單一字元)。 如果您的資料夾名稱內有萬用字元或這個逸出字元,請使用 ^ 來逸出 。
請參閱資料夾和檔案篩選範例中的 更多範例
No
選項 3:萬用字元
- 萬用字元FileName
指定貯體和資料夾路徑下具有萬用字元的檔案名(或萬用字元資料夾路徑)以篩選來源檔案。
允許的萬用字元為: * (比對零或多個字元)和 ? (符合零或單一字元)。 如果您的檔案名內有萬用字元或這個逸出字元,請使用 ^ 來逸出 。 請參閱資料夾和檔案篩選範例中的 更多範例
Yes
選項 3:檔案清單
- fileListPath
表示複製指定的檔案集。 指向包含您要複製之檔案清單的文字檔,每行一個檔案一個,這是資料集中所設定路徑的相對路徑。
當您使用此選項時,請勿在資料集中指定檔案名。 請參閱檔案清單範例中的 更多範例
No
其他設定:
遞迴 指出資料是以遞迴方式從子資料夾讀取,還是只從指定的資料夾讀取。 請注意,當 遞迴 設定為 true 且接收是以檔案為基礎的存放區時,不會在接收端複製或建立空的資料夾或子資料夾。
允許的值為 true (預設值)和 false
當您設定 fileListPath 時,這個屬性不適用。
No
deleteFilesAfterCompletion 指出成功移至目的地存放區之後,是否會從來源存放區刪除二進位檔案。 檔案刪除是每個檔案,因此當複製活動失敗時,您會看到某些檔案已複製到目的地並從來源刪除,而其他檔案仍留在來源存放區。
此屬性只有在二進位檔案複製案例中才有效。 預設值:false。
No
modifiedDatetimeStart 檔案會根據 屬性進行篩選:上次修改。
如果上次修改的時間大於或等於 modifiedDatetimeStart 且小於 modifiedDatetimeEnd ,則會選取檔案。 時間會以 「2018-12-01T05:00:00Z」 的格式套用至 UTC 時區。
屬性可以是 Null ,這表示不會將檔案屬性篩選套用至資料集。 當 modifiedDatetimeStart 有日期時間值但 modifiedDatetimeEnd Null 時,將會選取上次修改屬性大於或等於 datetime 值的檔案。 當 modifiedDatetimeEnd 有日期時間值但 modifiedDatetimeStart Null 時,將會選取上次修改屬性小於 datetime 值的檔案。
當您設定 fileListPath 時,這個屬性不適用。
No
modifiedDatetimeEnd 同上。 No
enablePartitionDiscovery 針對已分割的檔案,指定是否要從檔案路徑剖析分割區,並將其新增為其他來源資料行。
允許的值為 false (預設值)和 true
No
partitionRootPath 啟用資料分割探索時,請指定絕對根路徑,以便將分割區資料夾讀取為數據行。

如果未指定,則預設為
- 當您在資料集中使用檔案路徑或來源上的檔案清單時,分割區根路徑是資料集中設定的路徑。
- 當您使用萬用字元資料夾篩選時,分割區根路徑是第一個萬用字元之前的子路徑。

例如,假設您在資料集中將路徑設定為 「root/folder/year=2020/month=08/day=27」:
- 如果您將分割區根路徑指定為 「root/folder/year=2020」,除了檔案內的資料行之外,複製活動還會另外產生兩 month 個數據行, day 且值 「08」 和 「27」。
- 如果未指定分割區根路徑,則不會產生任何額外的資料行。
No
maxConcurrent連線ions 在活動執行期間,與資料存放區建立的並行連線上限。 只有在您想要限制並行連線時,才指定值。 No

範例:

"activities":[
    {
        "name": "CopyFromGoogleCloudStorage",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "GoogleCloudStorageReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv"
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

資料夾和檔案篩選範例

本節描述具有萬用字元篩選的資料夾路徑和檔案名所產生的行為。

key 遞迴 源資料夾結構和篩選結果(擷取粗體檔案)
Folder*/* false
    FolderA
        File1.csv
        File2.json
        子資料夾1
            File3.csv
            File4.json
            File5.csv
    AnotherFolderB
        File6.csv
Folder*/* true
    FolderA
        File1.csv
        File2.json
        子資料夾1
            File3.csv
            File4.json
            File5.csv
    AnotherFolderB
        File6.csv
Folder*/*.csv false
    FolderA
        File1.csv
        File2.json
        子資料夾1
            File3.csv
            File4.json
            File5.csv
    AnotherFolderB
        File6.csv
Folder*/*.csv true
    FolderA
        File1.csv
        File2.json
        子資料夾1
            File3.csv
            File4.json
            File5.csv
    AnotherFolderB
        File6.csv

檔案清單範例

本節說明在複製活動來源中使用檔案清單路徑的結果行為。

假設您具有下列來源資料夾結構,且想要以粗體複製檔案:

範例來源結構 FileListToCopy.txt 中的內容 組態

    FolderA
        File1.csv
        File2.json
        子資料夾1
            File3.csv
            File4.json
            File5.csv
    中繼資料
        FileListToCopy.txt
File1.csv
Subfolder1/File3.csv
Subfolder1/File5.csv
在資料集中:
-桶: bucket
- 資料夾路徑: FolderA

在複製活動來源中:
- 檔案清單路徑: bucket/Metadata/FileListToCopy.txt

檔案清單路徑會指向相同資料存放區中的文字檔,其中包含您要複製的檔案清單、每行一個檔案,以及資料集中所設定路徑的相對路徑。

對應資料流程屬性

當您在對應資料流程中轉換資料時,可以使用下列格式從 Google Cloud 讀取檔案儲存體:

格式特定設定位於該格式的檔。 如需詳細資訊,請參閱 對應資料流程 中的來源轉換。

來源轉換

在來源轉換中,您可以從 Google Cloud 中的容器、資料夾或個別檔案讀取儲存體。 使用 [ 來源選項 ] 索引標籤來管理檔案的讀取方式。

Screenshot of Source options.

萬用字元路徑: 使用萬用字元模式會指示服務在單一來源轉換中迴圈處理每個相符的資料夾和檔案。 這是在單一流程中處理多個檔案的有效方式。 新增多個萬用字元比對模式,加上當您將滑鼠停留在現有萬用字元模式上方時出現的加號。

從來源容器中,選擇一系列符合模式的檔案。 資料集中只能指定容器。 因此,您的萬用字元路徑也必須包含根資料夾的資料夾路徑。

萬用字元範例:

  • * 表示任何一組字元。

  • ** 表示遞迴目錄巢狀。

  • ? 取代一個字元。

  • [] 比對括弧中的一或多個字元。

  • /data/sales/**/*.csv 取得 /data/sales 底下的所有 .csv 檔案。

  • /data/sales/20??/**/ 取得 20 世紀的所有檔案。

  • /data/sales/*/*/*.csv 取得 /data/sales 下兩個層級的 .csv 檔案。

  • /data/sales/2004/*/12/[XY]1?.csv 取得 2004 年 12 月的所有 .csv 檔案,開頭為 X 或 Y,前面加上兩位數的數位。

資料分割根路徑: 如果您的檔案來源 key=value 中有具有格式的分割資料夾(例如 year=2019 ),您可以將該分割區資料夾樹狀結構的最上層指派給資料流程中的資料行名稱。

首先,設定萬用字元以包含分割資料夾的所有路徑,以及您想要讀取的分葉檔案。

Screenshot of partition source file settings.

使用 [分割 區根路徑] 設定來定義資料夾結構的最上層。 當您透過資料預覽檢視資料的內容時,您會看到服務會新增每個資料夾層級中找到的已解析分割區。

Screenshot of partition root path.

檔案清單: 這是檔案集。 建立文字檔,其中包含要處理的相對路徑檔案清單。 指向這個文字檔。

要儲存檔案名的資料行: 將資料行中的源檔案名稱儲存在資料行中。 在這裡輸入新的資料行名稱來儲存檔案名字串。

完成之後: 選擇在資料流程執行之後,對來源檔案執行任何動作、刪除來源檔案或移動來源檔案。 移動的路徑是相對的。

若要將原始程式檔移至另一個位置後處理,請先選取 [移動] 進行檔案作業。 然後,設定 「from」 目錄。 如果您未針對路徑使用任何萬用字元,則 「from」 設定會與您的源資料夾相同。

如果您有具有萬用字元的來源路徑,語法看起來會像這樣:

/data/sales/20??/**/*.csv

您可以將 「from」 指定為:

/data/sales

而且您可以將 「to」 指定為:

/backup/priorSales

在此情況下,所有來源的 /data/sales 檔案都會移至 /backup/priorSales

注意

只有在您從管線執行啟動資料流程時,才會執行檔案作業(管線偵錯或執行執行),以使用管線中的執行資料流程活動。 檔案作業 不會 在資料流程偵錯模式中執行。

依上次修改的篩選: 您可以藉由指定上次修改日期範圍的 來篩選您處理的檔案。 所有日期時間都是 UTC。

查閱活動屬性

若要瞭解屬性的詳細資料,請檢查 查閱活動

GetMetadata 活動屬性

若要瞭解屬性的詳細資料,請檢查 GetMetadata 活動

刪除活動屬性

若要瞭解屬性的詳細資料,請參閱 刪除活動

舊版模型

如果您使用 Amazon S3 連接器從 Google Cloud 儲存體複製資料,仍支援與回溯相容性一樣。 建議您使用稍早所述的新模型。 撰寫 UI 已切換為產生新的模型。

如需複製活動支援作為來源和接收的資料存放區清單,請參閱 支援的資料存放區