使用 Azure Data Factory 或 Synapse Analytics,從 Google Cloud Storage 複製資料
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
本文概述如何從 Google Cloud Storage (GCS) 複製資料。 若要深入了解,請閱讀 Azure Data Factory 和 Synapse Analytics 的介紹文章。
支援的功能
此 Google 雲端儲存空間連接器支援下列功能:
支援的功能 | IR |
---|---|
複製活動 (來源/-) | ① ② |
對應資料流程 (來源/-) | ① |
查閱活動 | ① ② |
GetMetadata 活動 | ① ② |
刪除活動 | ① ② |
① Azure 整合執行階段 ② 自我裝載整合執行階段
具體而言,此 Google Cloud Storage 連接器支援依原樣複製檔案,或使用支援的檔案格式和壓縮轉碼器來剖析檔案。 它利用 GCS 的 S3 相容互通性。
必要條件
您的 Google Cloud Storage 帳戶需要下列設定:
- 啟用 Google Cloud Storage 帳戶的互通性
- 設定預設專案,其中包含您要從目標 GCS 貯體複製的資料。
- 建立服務帳戶,並使用 GCP 上的雲端 IAM 定義正確的權限層級。
- 產生此服務帳戶的存取金鑰。
所需的權限
若要從 Google Cloud Storage 複製資料,請確定您已獲得下列物件作業的權限︰ storage.objects.get
和 storage.objects.list
。
如果您使用 UI 來撰寫,測試連結服務的連線以及從根目錄瀏覽等作業需要額外的 storage.buckets.list
權限。 如果您不想授與此權限,可以從 UI 選擇 [測試檔案路徑的連線] 或 [從指定的路徑瀏覽] 選項。
如需 Google Cloud Storage 角色和相關權限的完整清單,請參閱 Google Cloud 網站上的 Cloud Storage 的 IAM 角色 (英文)。
開始使用
若要透過管線執行複製活動,您可以使用下列其中一個工具或 SDK:
使用 UI 建立連結至 Google Cloud Storage 的服務
使用下列步驟,在 Azure 入口網站 UI 中建立連結至 Google Cloud Storage 的服務。
前往 Azure Data Factory 或 Synapse 工作區的 [管理] 索引標籤,選取 [連結服務],然後按一下 [新增]:
搜尋 Google,然後選取 Google Cloud Storage (S3 API) 連接器。
設定服務詳細資料,測試連線,然後建立新的連結服務。
連接器設定詳細資料
下列各節提供屬性的相關詳細資料,這些屬性是用來定義 Google Cloud Storage 專屬的 Data Factory 實體。
連結服務屬性
以下是針對 Google Cloud Storage 連結服務支援的屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | 類型屬性必須設為 GoogleCloudStorage。 | Yes |
accessKeyId | 密碼存取金鑰的識別碼。 若要尋找存取金鑰和秘密,請參閱必要條件。 | Yes |
secretAccessKey | 密碼存取金鑰本身。 將此欄位標記為 SecureString 以將其安全地儲存,或參考 Azure Key Vault 中儲存的祕密。 | 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 Storage 支援下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | location 中資料集下方的類型屬性必須設為 GoogleCloudStorageLocation。 |
Yes |
bucketName | S3 貯體名稱。 | 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 Storage 來源所支援的屬性清單。
以 Google Cloud Storage 為來源類型
Azure Data Factory 支援下列檔案格式。 請參閱每篇文章,以取得以格式為基礎的設定。
在以格式為基礎的複製來源的 storeSettings
設定下,Google Cloud Storage 支援下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | storeSettings 下的類型屬性必須設定 GoogleCloudStorageReadSettings。 |
Yes |
找到要複製的檔案: | ||
選項 1:靜態路徑 |
從在資料集內指定的貯體或資料夾/檔案路徑複製。 如果您想要複製貯體或資料夾中的所有檔案,則請另外將 wildcardFileName 指定為 * 。 |
|
選項 2:GCS 前置詞 - 前置詞 |
在資料集內設定的指定貯體下,GCS 金鑰名稱的前置詞,用來篩選來源 GCS 檔案。 已選取名稱開頭為 bucket_in_dataset/this_prefix 的 GCS 金鑰。 其利用 GCS 的服務端篩選,提供比萬用字元篩選更好的效能。 |
No |
選項 3:萬用字元 - wildcardFolderPath |
在資料集內設定的指定貯體下,具有萬用字元的資料夾路徑,用來篩選來源資料夾。 允許的萬用字元為: * (符合零或多個字元) 和 ? (符合零或單一字元)。 如果資料夾名稱具有萬用字元或逸出字元 ^ ,則請使用此逸出字元予以逸出。 如需更多範例,請參閱資料夾和檔案篩選範例。 |
No |
選項 3:萬用字元 - wildcardFileName |
在所指定貯體和資料夾路徑 (或萬用字元資料夾路徑)下,具有萬用字元的檔案名稱,用來篩選來源檔案。 允許的萬用字元為: * (符合零或多個字元) 和 ? (符合零或單一字元)。 若檔案名稱具有萬用字元或逸出字元 ^ ,則請使用此逸出字元近性逸出。 如需更多範例,請參閱資料夾和檔案篩選範例。 |
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,則將會選取上次修改時間屬性大於或等於該日期時間值的檔案。 若 modifiedDatetimeEnd 有日期時間值,但 modifiedDatetimeStart 為 NULL,則將會選取上次修改時間屬性小於該日期時間值的檔案。設定 fileListPath 時,此屬性不適用。 |
No |
modifiedDatetimeEnd | 同上。 | No |
enablePartitionDiscovery | 針對已分割的檔案,指定是否要從檔案路徑剖析分割區,並將其新增為其他來源資料行。 允許的值為 false (預設值) 和 true。 |
No |
partitionRootPath | 啟用分割區探索時,請指定絕對根路徑,將已分割的資料夾當成資料行進行讀取。 如果未指定,則根據預設, - 當您使用資料集中的檔案路徑或來源上的檔案清單時,分割區根路徑是資料集中所設定的路徑。 - 當您使用萬用字元資料夾篩選時,分割區根路徑是第一個萬用字元前面的子路徑。 例如,假設您將資料集中的路徑設定為 "root/folder/year=2020/month=08/day=27": - 如果您將分割區根路徑指定為 "root/folder/year=2020",則除了檔案內的資料行之外,複製活動還會分別產生值為 "08" 和 "27" 的兩個資料行 month 和 day 。- 如果未指定分割區根路徑,則不會產生額外的資料行。 |
No |
maxConcurrentConnections | 在活動執行期間建立至資料存放區的同時連線上限。 僅在想要限制並行連線時,才需要指定值。 | 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>"
}
}
}
]
資料夾和檔案篩選範例
本節描述含有萬用字元篩選之資料夾路徑和檔案名稱所產生的行為。
貯體 | 索引鍵 | 遞迴 | 來源資料夾結構和篩選結果 (會擷取以粗體顯示的檔案) |
---|---|---|---|
貯體 | Folder*/* |
false | 貯體 FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
貯體 | Folder*/* |
true | 貯體 FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
貯體 | Folder*/*.csv |
false | 貯體 FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
貯體 | Folder*/*.csv |
true | 貯體 FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
檔案清單範例
本節說明使用複製活動來源中的檔案清單路徑時所產生的行為。
假設您的來源資料夾結構如下,且想要複製以粗體標示的檔案:
範例來源結構 | FileListToCopy.txt 中的內容 | 組態 |
---|---|---|
貯體 FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv 中繼資料 FileListToCopy.txt |
File1.csv Subfolder1/File3.csv Subfolder1/File5.csv |
在資料集中: - 貯體: bucket - 資料夾路徑: FolderA 複製活動來源中: - 檔案清單路徑: bucket/Metadata/FileListToCopy.txt 檔案清單路徑指向相同資料存放區中的文字檔,其中包括所要複製檔案的清單,且一行一個檔案,並具有資料集中所設定路徑的相對路徑。 |
對應資料流程屬性
在對應資料流中轉換資料時,可以使用下列格式從 Google 雲端儲存空間讀取檔案:
格式特定設定位於該格式的文件中。 如需詳細資訊,請參閱對應資料流中的來源轉換。
來源轉換
在來源轉換中,您可讀取 Google 雲端儲存空間中的容器、資料夾或個別檔案。 使用 [來源選項] 索引標籤來管理檔案的讀取方式。
萬用字元路徑:在單一來源轉換中,使用萬用字元模式會指示服務重複檢查每個相符的資料夾和檔案。 這在單一流程內處理多個檔案時很有效。 透過加號新增多個萬用字元比對模式;當滑鼠停留在現有萬用字元模式上時,即會出現此符號。
從來源容器中,選擇符合模式的一系列檔案。 在資料集內只能指定容器。 因此,萬用字元路徑也必須包含始於根資料夾的資料夾路徑。
萬用字元範例:
*
代表任何一組字元。**
代表遞迴目錄巢狀。?
取代一個字元。[]
比對括弧中的一或多個字元。/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 月、開頭為 X 或 Y 、且字首為兩位數的所有 .csv 檔案。
分割區根路徑:若檔案來源中有 key=value
格式 (如 year=2019
) 的分割資料夾,則可將該分割區資料夾樹狀結構的最上層,指派給資料流程資料流中的資料行名稱。
首先,請設定萬用字元以包含所有路徑,即分割資料夾加上要讀取的分葉檔案。
使用 [分割區根路徑] 設定來定義資料夾結構的最上層。 透過資料預覽來檢視資料的內容時,您會看到服務將新增在每個資料夾層級找到的已解析分割區。
檔案清單:這是檔案集。 建立文字檔,其中包含要處理的相對路徑檔案清單。 指向這個文字檔。
要儲存檔案名稱的資料行:將來源檔案的名稱儲存至資料中的資料行。 在此輸入新的資料行名稱以儲存檔案名稱字串。
完成後:選擇在資料流程後不操作來源檔案、刪除來源檔案,或移動來源檔案。 移動時的路徑是相對路徑。
若要在處理後將來源檔案移到另一個位置,請先選取 [移動] 當作檔案操作。 然後,設定「來源」目錄。 如果路徑中未使用任何萬用字元,則「來源」設定與來源資料夾相同。
若來源路徑包含萬用字元,則語法如下:
/data/sales/20??/**/*.csv
「來源」可指定為:
/data/sales
「目標」可指定為:
/backup/priorSales
在此案例中,來自 /data/sales
下的所有檔案皆會移至 /backup/priorSales
。
注意
只有當您從管線執行 (管線偵錯或執行) 啟動資料流程,且該管線執行在管線中使用「執行資料流程」活動時,檔案操作才會執行。 在資料流程偵錯模式下「不會」執行檔案操作。
依上次修改時間篩選: 您可以指定檔案上次修改的日期範圍,以篩選您處理的檔案。 所有日期時間皆為國際標準時間。
查閱活動屬性
若要了解屬性的詳細資料,請參閱查閱活動。
GetMetadata 活動屬性
若要了解屬性的詳細資料,請參閱 GetMetadata 活動。
刪除活動屬性
若要了解屬性的詳細資料,請參閱刪除活動。
舊版模型
如果您使用 Amazon S3 連接器從 Google Cloud Storage 複製資料,則仍會按現狀提供支援,以提供回溯相容性。 建議您使用稍早所述的新模型。 撰寫 UI 已改為產生新模型。
相關內容
如需複製活動支援作為來源和接收器的資料存放區清單,請參閱支援的資料存放區。