分享方式:


使用 Azure Data Factory 或 Azure Synapse Analytics,將資料複製到 Azure Data Lake Storage Gen1 以及從中複製資料

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

本文概述如何將資料複製至 Azure Data Lake Storage Gen1 或從 Azure Data Lake Storage Gen1 複製資料。 若要深入了解,請閱讀 Azure Data FactoryAzure Synapse Analytics 的介紹文章。

注意

Azure Data Lake Storage Gen1 已於 2024 年 2 月 29 日淘汰。 請移轉至 Azure Data Lake Storage Gen2 連接器。 如需 Azure Data Lake Storage Gen1 移轉指導,請參閱此文章

支援的功能

下列功能支援此 Azure Data Lake Storage Gen1 連接器:

支援的功能 IR
複製活動 (來源/接收) ① ②
對應資料流 (來源/接收)
查閱活動 ① ②
GetMetadata 活動 ① ②
刪除活動 ① ②

① Azure 整合執行階段 ② 自我裝載整合執行階段

具體而言,使用此連接器,您可以:

  • 使用下列其中一種驗證方法複製檔案:服務主體或 Azure 資源受控識別。
  • 依原樣複製檔案,或使用支援的檔案格式和壓縮轉碼器來剖析或產生檔案。
  • 複製到 Azure Data Lake Storage Gen2 時,保留 ACLl

重要

如果您使用自我裝載整合執行階段來複製資料,請設定公司防火牆以允許連接埠 443 上對 <ADLS account name>.azuredatalakestore.netlogin.microsoftonline.com/<tenant>/oauth2/token 的輸出流量。 後者是 Azure 安全性權杖服務,整合執行階段需要與之通訊才能取得權杖。

開始使用

提示

如需如何使用 Azure Data Lake Store 連接器的逐步解說,請參閱將資料載入 Azure Data Lake Store

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

使用 UI 建立 Azure Data Lake Storage Gen1 連結服務

使用下列步驟在 Azure 入口網站 UI 中建立 Azure Data Lake Storage Gen1 連結服務。

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

  2. 搜尋 Azure Data Lake Storage Gen1,然後選取 Azure Data Lake Storage Gen1 連接器。

    Azure Data Lake Storage Gen1 連接器的螢幕擷取畫面。

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

    Azure Data Lake Storage Gen1 連結服務組態的螢幕擷取畫面。

連接器設定詳細資料

下列各節提供屬性的相關資訊,這些屬性用來定義 Azure Data Lake Store Gen1 專屬的實體。

連結服務屬性

以下是針對 Azure Data Lake Store 已連結服務支援的屬性:

屬性 描述 必要
type type 屬性必須設為 AzureDataLakeStore Yes
dataLakeStoreUri Azure Data Lake Store 帳戶相關資訊。 此資訊會採用下列其中一種格式:https://[accountname].azuredatalakestore.net/webhdfs/v1adl://[accountname].azuredatalakestore.net/ Yes
subscriptionId Data Lake Store 帳戶所屬的 Azure 訂用帳戶識別碼。 接收 (Sink) 的必要項目
resourceGroupName Data Lake Store 帳戶所屬的 Azure 資源群組名稱。 接收 (Sink) 的必要項目
connectVia 用來連線到資料存放區的整合執行階段。 您可以使用 Azure 整合執行階段 (IR) 或自我裝載整合執行階段 (如果您的資料存放區位於私人網路中)。 如果未指定此屬性,則會使用預設的 Azure Integration Runtime。 No

使用服務主體驗證

若要使用服務主體驗證,請遵循下列步驟。

  1. 在 Microsoft Entra ID 中註冊應用程式實體,然後授與其 Data Lake Store 存取權。 如需詳細的步驟,請參閱服務對服務驗證。 請記下以下的值,您可以使用這些值來定義連結服務:

    • Application ID
    • 應用程式金鑰
    • 租用戶識別碼
  2. 將適當的權限授與服務主體。 請看以下範例,了解 Azure Data Lake Storage Gen1 中的存取控制在 Data Lake Storage Gen1 中的權限運作方式。

    • 作為來源:在 [資料總管]>[存取] 中,至少授與所有上游資料夾 (包括根) 的執行權限,以及要複製檔案的讀取權限。 您可以選擇新增到 [此資料夾及所有子系] 以供遞迴,並新增成為存取權限和預設權限項目。 對帳戶層級存取控制 (IAM) 沒有任何要求。
    • 作為接收:在 [資料總管]>[存取] 中,至少授與所有上游資料夾 (包括根) 的執行權限,以及接收資料夾的寫入權限。 您可以選擇新增到 [此資料夾及所有子系] 以供遞迴,並新增成為存取權限和預設權限項目

以下是支援的屬性:

屬性 描述 必要
servicePrincipalId 指定應用程式的用戶端識別碼。 Yes
servicePrincipalKey 指定應用程式的金鑰。 將此欄位標記為 SecureString 以安全儲存,或參考 Azure Key Vault 中儲存的祕密 Yes
tenant 指定您的應用程式所在租用戶的資訊,例如網域名稱或租用戶識別碼。 將滑鼠游標暫留在 Azure 入口網站右上角,即可擷取它。 Yes
azureCloudType 針對服務主體驗證,請指定註冊 Microsoft Entra 應用程式的 Azure 雲端環境類型。
允許的值為 AzurePublicAzureChinaAzureUsGovernmentAzureGermany。 預設會使用服務的雲端環境。
No

範例:

{
    "name": "AzureDataLakeStoreLinkedService",
    "properties": {
        "type": "AzureDataLakeStore",
        "typeProperties": {
            "dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<service principal key>"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
            "subscriptionId": "<subscription of ADLS>",
            "resourceGroupName": "<resource group of ADLS>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

使用系統指派的受控識別驗證

資料處理站或 Synapse 工作區可與代表驗證服務的系統指派的受控識別相關聯。 您可以直接將此系統指派的受控識別用於 Data Lake Storage 驗證,類似於使用您自己的服務主體。 這可以讓這個指定的資源存取及複製資料至 Data Lake Store,或從 Data Lake Store 存取及複製資料。

若要使用系統指派的受控身分識別驗證,請依照下列步驟操作。

  1. 複製與處理站或 Synapse 工作區一起產生的「服務識別應用程式識別碼」值,藉此擷取系統指派的受控識別資訊

  2. 授與系統指派的受控識別存取權給 Data Lake Store。 請看以下範例,了解 Azure Data Lake Storage Gen1 中的存取控制在 Data Lake Storage Gen1 中的權限運作方式。

    • 作為來源:在 [資料總管]>[存取] 中,至少授與所有上游資料夾 (包括根) 的執行權限,以及要複製檔案的讀取權限。 您可以選擇新增到 [此資料夾及所有子系] 以供遞迴,並新增成為存取權限和預設權限項目。 對帳戶層級存取控制 (IAM) 沒有任何要求。
    • 作為接收:在 [資料總管]>[存取] 中,至少授與所有上游資料夾 (包括根) 的執行權限,以及接收資料夾的寫入權限。 您可以選擇新增到 [此資料夾及所有子系] 以供遞迴,並新增成為存取權限和預設權限項目

除了 Data Lake Store 的一般資訊,您不需要在連結服務中指定任何屬性。

範例:

{
    "name": "AzureDataLakeStoreLinkedService",
    "properties": {
        "type": "AzureDataLakeStore",
        "typeProperties": {
            "dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
            "subscriptionId": "<subscription of ADLS>",
            "resourceGroupName": "<resource group of ADLS>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

使用使用者指派的受控識別驗證

資料處理站可以使用一或多個使用者指派的受控識別來指派。 您可以使用此使用者指派的受控識別進行 Blob 儲存體驗證,以允許在 Data Lake Storage 中來回存取和複製資料。 若要深入了解 Azure 資源受控識別,請參閱 Azure 資源受控識別

若要使用使用者指派的受控識別驗證,請依照下列步驟操作:

  1. 建立一或多個使用者指派的受控識別,並授與 Azure Data Lake 的存取權。 請看以下範例,了解 Azure Data Lake Storage Gen1 中的存取控制在 Data Lake Storage Gen1 中的權限運作方式。

    • 作為來源:在 [資料總管]>[存取] 中,至少授與所有上游資料夾 (包括根) 的執行權限,以及要複製檔案的讀取權限。 您可以選擇新增到 [此資料夾及所有子系] 以供遞迴,並新增成為存取權限和預設權限項目。 對帳戶層級存取控制 (IAM) 沒有任何要求。
    • 作為接收:在 [資料總管]>[存取] 中,至少授與所有上游資料夾 (包括根) 的執行權限,以及接收資料夾的寫入權限。 您可以選擇新增到 [此資料夾及所有子系] 以供遞迴,並新增成為存取權限和預設權限項目
  2. 將一或多個使用者指派的受控識別指派給資料處理站,並為每個使用者指派的受控識別建立認證

支援的屬性如下:

屬性 描述 必要
credentials 將使用者指派的受控身分識別指定為認證物件。 Yes

範例:

{
    "name": "AzureDataLakeStoreLinkedService",
    "properties": {
        "type": "AzureDataLakeStore",
        "typeProperties": {
            "dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
            "subscriptionId": "<subscription of ADLS>",
            "resourceGroupName": "<resource group of ADLS>",
            "credential": {
                "referenceName": "credential1",
                "type": "CredentialReference"
            },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

資料集屬性

如需可用來定義資料集的區段和屬性完整清單,請參閱資料集一文。

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

在格式型資料集內的 location 設定下,Azure Data Lake Store Gen1 支援下列屬性:

屬性 描述 必要
type 資料集中 location 下的 type 屬性必須設定為 AzureDataLakeStoreLocation Yes
folderPath 資料夾的路徑。 如果您想要使用萬用字元來篩選資料夾,請略過此設定,並在活動來源設定中指定。 No
fileName 所指定 folderPath 下方的檔案名稱。 如果您想要使用萬用字元來篩選檔案,請略過此設定,並在活動來源設定中指定。 No

範例:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<ADLS Gen1 linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "AzureDataLakeStoreLocation",
                "folderPath": "root/folder/subfolder"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

複製活動屬性

如需可用來定義活動的區段和屬性完整清單,請參閱管線。 本節提供 Azure Data Lake Store 來源和接收器所支援的屬性清單。

Azure Data Lake Store 作為來源

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

在格式型複製來源內的 storeSettings 設定下,Azure Data Lake Store Gen1 支援下列屬性:

屬性 描述 必要
type storeSettings 下的 type 屬性必須設定為 AzureDataLakeStoreReadSettings Yes
找到要複製的檔案:
選項 1:靜態路徑
請從資料集內的指定資料夾/檔案路徑複製。 如果您想要複製資料夾中的所有檔案,請另外將 wildcardFileName 指定為 *
選項 2:名稱範圍
- listAfter
擷取依字母順序排列在此值之後名稱的資料夾/檔案 (排除)。 利用 ADLS Gen1 的服務端篩選功能,提供比萬用字元篩選更好的效能。
服務會將此篩選條件套用至資料集中定義的路徑,而且只支援一個實體層級。 如需更多範例,請參閱名稱範圍篩選範例
No
選項 2:名稱範圍
- listBefore
擷取依字母順序排列在此值之前名稱的資料夾/檔案 (內含)。 利用 ADLS Gen1 的服務端篩選功能,提供比萬用字元篩選更好的效能。
服務會將此篩選條件套用至資料集中定義的路徑,而且只支援一個實體層級。 如需更多範例,請參閱名稱範圍篩選範例
No
選項 3:萬用字元
- wildcardFolderPath
含有萬用字元的資料夾路徑,可用來篩選來源資料夾。
允許的萬用字元為:* (比對零或多個字元) 和 ? (比對零或單一字元);如果您的實際資料夾名稱包含萬用字元或此逸出字元,請使用 ^ 來逸出。
如需更多範例,請參閱資料夾和檔案篩選範例
No
選項 3:萬用字元
- wildcardFileName
在特定 folderPath/wildcardFolderPath 下含有萬用字元的檔案名稱,用於篩選來源檔案。
允許的萬用字元為:* (比對零或多個字元) 和 ? (比對零或單一字元);如果您的實際檔案名稱包含萬用字元或此逸出字元,請使用 ^ 來逸出。 如需更多範例,請參閱資料夾和檔案篩選範例
Yes
選項 4:檔案清單
- 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" 的兩個資料行 monthday
- 如果未指定分割區根路徑,則不會產生額外資料行。
No
maxConcurrentConnections 在活動執行期間建立至資料存放區的同時連線上限。 僅在想要限制並行連線時,才需要指定值。 No

範例:

"activities":[
    {
        "name": "CopyFromADLSGen1",
        "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": "AzureDataLakeStoreReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv"
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Azure Data Lake Store 作為接收器

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

在格式型複製接收器內的 storeSettings 設定下,Azure Data Lake Store Gen1 支援 下列屬性:

屬性 描述 必要
type storeSettings 下的 type 屬性必須設定為 AzureDataLakeStoreWriteSettings Yes
copyBehavior 當來源是來自檔案型資料存放區的檔案時,會定義複製行為。

允許的值如下:
- PreserveHierarchy (預設值):保留目標資料夾中的檔案階層。 來源檔案到來源資料夾的相對路徑,與目標檔案到目標資料夾的相對路徑相同。
- FlattenHierarchy:來自來源資料夾的所有檔案都在目標資料夾的第一層中。 目標檔案會有自動產生的名稱。
- MergeFiles:將來源資料夾的所有檔案合併成一個檔案。 若已指定檔案名稱,合併檔案的名稱會是指定的名稱。 否則,就會是自動產生的檔案名稱。
No
expiryDateTime 指定寫入檔案的到期時間。 時間會以「2020-03-01T08:00:00Z」的格式套用至 UTC 時間。 預設為 NULL,表示寫入的檔案永遠不會過期。 No
maxConcurrentConnections 在活動執行期間建立至資料存放區的同時連線上限。 僅在想要限制並行連線時,才需要指定值。 No

範例:

"activities":[
    {
        "name": "CopyToADLSGen1",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Parquet output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "ParquetSink",
                "storeSettings":{
                    "type": "AzureDataLakeStoreWriteSettings",
                    "copyBehavior": "PreserveHierarchy"
                }
            }
        }
    }
]

名稱範圍篩選範例

本節說明檔案名稱篩選所產生的行為。

範例來源結構 組態 結果

    a
        file.csv
    ax
        file2.csv
    ax.csv
    b
        file3.csv
    bx.csv
    c
        file4.csv
    cx.csv
在資料集中:
- 資料夾路徑:root

複製活動來源中:
- 列出此值之後項目:a
- 列出此值之前項目:b
接著會複製下列檔案:


    ax
        file2.csv
    ax.csv
    b
        file3.csv

資料夾和檔案篩選範例

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

folderPath fileName 遞迴 來源資料夾結構和篩選結果 (會擷取以粗體顯示的檔案)
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
在資料集內:
- 資料夾路徑:root/FolderA

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

檔案清單路徑指向包含所要複製檔案清單的同一個資料存放區,為資料集中所設定路徑的相對路徑,每一行一個檔案。

複製作業的行為範例

本節說明 recursivecopyBehavior 值在不同組合的情況下,複製作業所產生的行為。

遞迴 copyBehavior 來源資料夾結構 產生的目標
true preserveHierarchy Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5
會以與來源相同的結構,建立目標 Folder1:

Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5
true flattenHierarchy Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5
會以下列結構建立目標資料夾 Folder1:

Folder1
    針對 File1 自動產生的名稱
    針對 File2 自動產生的名稱
    針對 File3 自動產生的名稱
    針對 File4 自動產生的名稱
    針對 File5 自動產生的名稱
true mergeFiles Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5
會以下列結構建立目標資料夾 Folder1:

Folder1
    File1 + File2 + File3 + File4 + File5 的內容會合併成一個檔案,並具有自動產生的檔案名稱。
false preserveHierarchy Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5
會以下列結構建立目標資料夾 Folder1:

Folder1
    File1
    File2

系統不會挑選含有 File3、File4、File5 的 Subfolder1。
false flattenHierarchy Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5
會以下列結構建立目標資料夾 Folder1:

Folder1
    針對 File1 自動產生的名稱
    針對 File2 自動產生的名稱

系統不會挑選含有 File3、File4、File5 的 Subfolder1。
false mergeFiles Folder1
    File1
    File2
    Subfolder1
        File3
        File4
        File5
會以下列結構建立目標資料夾 Folder1:

Folder1
    File1 + File2 內容會合併成一個檔案,並具有自動產生的檔案名稱。 針對 File1 自動產生的名稱

系統不會挑選含有 File3、File4、File5 的 Subfolder1。

保留 ACL 至 Data Lake Storage Gen2

提示

一般情況下,若要將資料從 Azure Data Lake Storage Gen1 複製到 Gen2,請參閱將資料從 Azure Data Lake Storage Gen1 複製到 Gen2,取得逐步解說和最佳做法。

如果您想要在從 Data Lake Storage Gen1 升級至 Data Lake Storage Gen2 時,複寫存取控制清單 (ACL) 和資料檔案,請參閱保留 Data Lake Storage Gen1 的 ACL

對應資料流程屬性

轉換對應資料流程中的資料時,可以使用下列格式,從 Azure Data Lake Storage Gen1 讀取和寫入檔案:

格式專屬設定位於該格式的說明文件中。 如需詳細資訊,請參閱對應資料流程中的來源轉換對應資料流程中的接收轉換

來源轉換

在來源轉換中,您可以讀取 Azure Data Lake Storage Gen1 中的容器、資料夾或個別檔案。 [來源選項] 索引標籤可讓您管理檔案的讀取方式。

螢幕擷取畫面:對應資料流程來源轉換中的來源選項索引標籤。

萬用字元路徑:在單一來源轉換中,使用萬用字元模式會指示服務重複檢查每個相符的資料夾和檔案。 這在單一流程內處理多個檔案時很有效。 使用 + 符號來新增多個萬用字元比對模式,當滑鼠停留在現有萬用字元模式上時會出現此符號。

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

萬用字元範例:

  • * 代表任何一組字元

  • ** 代表遞迴目錄巢狀

  • ? 取代一個字元

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

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

  • /data/sales/20??/**/ 以遞迴方式取得所有相符 20xx 資料夾中的所有檔案

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

  • /data/sales/2004/12/[XY]1?.csv 取得自 2004 年 12 月起,以 X 或 Y 開頭、且後面接著 1 和任何單一字元的所有 csv 檔案

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

首先,請設定萬用字元來包含所有路徑,即分割資料夾加上您想讀取的分葉檔案。

螢幕擷取畫面:對應資料流程來源轉換中的磁碟分割來源檔案設定。

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

分割區根路徑

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

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

完成後:選擇在資料流程後不操作來源檔案、刪除來源檔案,或移動來源檔案。 移動時的路徑是相對路徑。

若要在處理後將來源檔案移到另一個位置,請先選取 [移動] 當作檔案操作。 然後,設定「來源」目錄。 如果路徑中未使用任何萬用字元,則「來源」設定與來源資料夾相同。

如果來源路徑含有萬用字元,則語法如下:

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

您可以將「來源」指定為

/data/sales

將「目的地」指定為

/backup/priorSales

在此案例中,/data/sales 中的所有檔案都會移至 /backup/priorSales。

注意

只有當您從管線執行 (管線偵錯或執行) 啟動資料流程,且該管線執行在管線中使用「執行資料流程」活動時,檔案操作才會執行。 在資料流程偵錯模式下「不會」執行檔案操作。

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

啟用異動資料擷取:如果為 true,則您只會從上次執行取得新的或已變更的檔案。 初次執行時一律會進行完整快照集資料的初始載入,接著只在下一次執行中擷取新的或變更的檔案。 如需詳細資訊,請參閱異動資料擷取

顯示 [啟用變更資料擷取] 的螢幕擷取畫面。

接收屬性

在「接收」轉換中,您可以寫入 Azure Data Lake Storage Gen1 中的容器或資料夾。 [設定] 索引標籤可讓您管理檔案的寫入方式。

接收選項

清除資料夾:決定是否在寫入資料之前先清除目的地資料夾。

檔案名稱選項:決定目的地檔案在目的地資料夾中的命名方式。 檔案名稱的選項如下:

  • 預設:可讓 Spark 根據 PART 預設值來命名檔案。
  • 模式:輸入可列舉每個分割區輸出檔案的模式。 例如,loans[n].csv 會建立 loans1.csv、loans2.csv,依此類推。
  • 每個分割區:針對每個分割區輸入一個檔案名稱。
  • 作為資料行中的資料:將輸出檔案設定為資料行的值。 路徑相對於資料集容器,而不是目的地資料夾。 如果您的資料集中含有資料夾路徑,則會將其覆寫。
  • 輸出至單一檔案:將經過分割的輸出檔案合併成單一具名檔案。 路徑相對於資料集資料夾。 請注意,根據節點的大小,合併作業可能失敗。 對於大型資料集,不建議使用此選項。

全部以引號括住: 決定是否用引號括住所有的值

查閱活動屬性

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

GetMetadata 活動屬性

若要了解關於屬性的詳細資料,請參閱 GetMetadata 活動

刪除活動屬性

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

舊版模型

注意

基於回溯相容性,仍照現狀支援下列模型。 建議您繼續使用以上各節所述的新模型,且製作 UI 已切換為產生新模型。

舊版資料集模型

屬性 描述 必要
type 資料集的 type 屬性必須設定為 AzureDataLakeStoreFile Yes
folderPath Data Lake Store 中的資料夾路徑。 若未指定,它會指向根。

支援萬用字元篩選。 允許的萬用字元為 * (符合零或多個字元) 和 ? (符合零或單一字元)。 如果實際資料夾名稱內有萬用字元或逸出字元 ^,請使用此逸出字元來逸出。

範例:根資料夾/子資料夾/。 如需更多範例,請參閱資料夾和檔案篩選範例
No
fileName 在指定 "folderPath" 之下檔案的名稱或萬用字元篩選。 若未指定此屬性的值,資料集就會指向資料夾中的所有檔案。

篩選時,允許的萬用字元為 * (符合零或多個字元) 和 ? (符合零或單一字元)。
- 範例 1:"fileName": "*.csv"
- 範例 2:"fileName": "???20180427.txt"
如果實際檔案名稱內有萬用字元或逸出字元 ^,請使用此逸出字元來逸出。

當沒有針對輸出資料集指定 fileName,且活動接收中沒有指定 preserveHierarchy 時,複製活動會自動使用以下模式產生檔案名稱:「Data.[活動執行識別碼 GUID].[GUID (若為 FlattenHierarchy)].[格式 (若有設定)].[壓縮 (若有設定)]」,例如,"Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt.gz"。 如果您使用資料表名稱 (而非查詢) 從表格來源複製,則名稱模式會是 "[table name].[format].[compression if configured]",例如 "MyTable.csv"。
No
modifiedDatetimeStart 檔案篩選會根據「上次修改」屬性。 如果檔案的上次修改時間大於或等於 modifiedDatetimeStart 且小於 modifiedDatetimeEnd,則會選取檔案。 此時間會以 "2018-12-01T05:00:00Z" 格式套用至 UTC 時區。

當您想要對大量檔案進行檔案篩選時,啟用這項設定會影響資料移動的整體效能。

此屬性可以是 NULL,這意謂著不會對資料集套用任何檔案屬性篩選。 當 modifiedDatetimeStart 有日期時間值,但 modifiedDatetimeEnd 為 NULL 時,表示系統將會選取上次修改時間屬性大於或等於此日期時間值的檔案。 當 modifiedDatetimeEnd 有日期時間值,但 modifiedDatetimeStart 為 NULL 時,則表示系統將會選取上次修改時間屬性小於此日期時間值的檔案。
No
modifiedDatetimeEnd 檔案篩選會根據「上次修改」屬性。 如果檔案的上次修改時間大於或等於 modifiedDatetimeStart 且小於 modifiedDatetimeEnd,則會選取檔案。 此時間會以 "2018-12-01T05:00:00Z" 格式套用至 UTC 時區。

當您想要對大量檔案進行檔案篩選時,啟用這項設定會影響資料移動的整體效能。

此屬性可以是 NULL,這意謂著不會對資料集套用任何檔案屬性篩選。 當 modifiedDatetimeStart 有日期時間值,但 modifiedDatetimeEnd 為 NULL 時,表示系統將會選取上次修改時間屬性大於或等於此日期時間值的檔案。 當 modifiedDatetimeEnd 有日期時間值,但 modifiedDatetimeStart 為 NULL 時,則表示系統將會選取上次修改時間屬性小於此日期時間值的檔案。
No
format 如果您想要在以檔案為基礎的存放區之間依原樣複製檔案 (二進位複製),請在輸入和輸出資料集定義中略過格式區段。

如果您想要以特定格式來剖析或產生檔案,以下是支援的檔案格式類型:TextFormatJsonFormatAvroFormatOrcFormatParquetFormat。 將 [format] 下的 [type] 屬性設定為下列其中一個值。 如需詳細資訊,請參閱文字格式JSON 格式Avro 格式Orc 格式Parquet 格式小節。
否 (僅適用於二進位複製案例)
壓縮 指定此資料的壓縮類型和層級。 如需詳細資訊,請參閱支援的檔案格式和壓縮轉碼器
支援的類型為:GZip、Deflate、BZip2 及 ZipDeflate
支援的層級為 OptimalFastest
No

提示

若要複製資料夾下的所有檔案,請只指定 folderPath
若要複製特定名稱的單一檔案,請以 folderPath 指定資料夾部分 ,並以 fileName 指定檔案名稱。
若要複製資料夾下的檔案子集,請以 folderPath 指定資料夾部分 ,並以 fileName 指定萬用字元篩選。

範例:

{
    "name": "ADLSDataset",
    "properties": {
        "type": "AzureDataLakeStoreFile",
        "linkedServiceName":{
            "referenceName": "<ADLS linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "folderPath": "datalake/myfolder/",
            "fileName": "*",
            "modifiedDatetimeStart": "2018-12-01T05:00:00Z",
            "modifiedDatetimeEnd": "2018-12-01T06:00:00Z",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ",",
                "rowDelimiter": "\n"
            },
            "compression": {
                "type": "GZip",
                "level": "Optimal"
            }
        }
    }
}

舊版複製活動來源模型

屬性 描述 必要
type 複製活動來源的 type 屬性必須設定為 AzureDataLakeStoreSource Yes
遞迴 指出是否從子資料夾、或只有從指定的資料夾,以遞迴方式讀取資料。 當 recursive 設定為 true 且接收是檔案型存放區時,就不會在接收上複製或建立空的資料夾或子資料夾。 允許的值為 true (預設值) 和 false No
maxConcurrentConnections 在活動執行期間建立至資料存放區的同時連線上限。 僅在想要限制並行連線時,才需要指定值。 No

範例:

"activities":[
    {
        "name": "CopyFromADLSGen1",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<ADLS Gen1 input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AzureDataLakeStoreSource",
                "recursive": true
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

舊版複製活動接收模型

屬性 描述 必要
type 複製活動接收器的 type 屬性必須設定為 AzureDataLakeStoreSink Yes
copyBehavior 當來源是來自檔案型資料存放區的檔案時,會定義複製行為。

允許的值如下:
- PreserveHierarchy (預設值):保留目標資料夾中的檔案階層。 來源檔案到來源資料夾的相對路徑,與目標檔案到目標資料夾的相對路徑相同。
- FlattenHierarchy:來自來源資料夾的所有檔案都在目標資料夾的第一層中。 目標檔案會有自動產生的名稱。
- MergeFiles:將來源資料夾的所有檔案合併成一個檔案。 若已指定檔案名稱,合併檔案的名稱會是指定的名稱。 否則,會自動產生檔案名稱。
No
maxConcurrentConnections 在活動執行期間建立至資料存放區的同時連線上限。 僅在想要限制並行連線時,才需要指定值。 No

範例:

"activities":[
    {
        "name": "CopyToADLSGen1",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<ADLS Gen1 output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzureDataLakeStoreSink",
                "copyBehavior": "PreserveHierarchy"
            }
        }
    }
]

異動資料擷取程序 (預覽版)

Azure Data Factory 只能藉由在對應資料流程來源轉換中啟用異動資料擷取 (預覽版),從 Azure Data Lake Storage Gen1 取得新的或變更的檔案。 若使用此連接器選項,您只能讀取新建或更新的檔案,並在將轉換資料載入您選擇的目的地資料集之前套用轉換。

請確定管線和活動名稱保持不變,讓檢查點一律會從上次執行記錄,以從該處取得變更。 若您變更管線名稱或活動名稱,將會重設檢查點,並且在下一次執行時從頭開始。

對管線進行偵錯時,[啟用異動資料擷取 (預覽版)] 也可以運作。 當您在偵錯執行期間重新整理瀏覽器時,檢查點會重設。 對偵錯執行的結果感到滿意後,您可以發佈並觸發管線。 不論偵錯執行所記錄的先前檢查點為何,一律會從頭開始。

在監視區段中,您隨時有機會重新執行管線。 這樣做時,一律會從所選取管線執行的檢查點記錄取得變更。

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