共用方式為


Azure Data Factory 或 Azure Synapse Analytics 中的「取得中繼資料」活動

適用於: Azure Data Factory Azure Synapse Analytics

秘訣

Data Factory in Microsoft Fabric 是下一代的 Azure Data Factory,擁有更簡單的架構、內建 AI 及新功能。 如果你是資料整合新手,建議先從 Fabric Data Factory 開始。 現有的 ADF 工作負載可升級至 Fabric,以存取資料科學、即時分析與報告等新能力。

你可以使用 Get Metadata 活動來取得 Azure Data Factory 或 Synapse 管線中任何資料的元資料。 您可以使用條件運算式中「取得中繼資料」活動的輸出來執行驗證,或在後續活動中取用中繼資料。

使用 UI 建立「取得中繼資料」活動

若要在管線中使用「取得中繼資料」活動,請完成下列步驟:

  1. 在管線活動欄目中搜尋 「取得元資料 」,然後將「取得元資料」活動拖曳到管線畫布中。

  2. 如果尚未選取新的「取得中繼資料」活動,請選取畫布上的 [取得中繼資料] 活動及其 [設定] 索引標籤,以編輯其詳細資料。

  3. 選擇資料集,或使用 [新增] 按鈕建立新的資料集。 然後,您可以指定篩選選項,並從資料集的可用中繼資料新增資料行。

    顯示「取得中繼資料」活動的 UI。

  4. 使用活動的輸出作為另一個活動的輸入,例如此範例中的「切換」活動。 您可以在其他任何支援動態內容的活動中,引用中繼資料活動的輸出。

    顯示已新增「切換」活動的管線,以處理取得中繼資料活動的輸出。

  5. 在動態內容編輯器中,選取 [取得中繼資料] 活動的輸出,以便在其他活動中引用。

    將 [取得中繼資料] 活動的輸出顯示為動態內容,顯示動態內容編輯器。

支援的功能

「取得中繼資料」活動會採用資料集作為輸入,並將中繼資料資訊當做輸出傳回。 目前支援以下連接器及其對應可擷取的中繼資料。 傳回的中繼資料大小上限為 4 MB

支援的連接器

檔案儲存體

連接器/中繼資料 itemName
(檔案/資料夾)
itemType
(檔案/資料夾)
size
(檔案)
created
(檔案/資料夾)
lastModified1
(檔案/資料夾)
childItems
(資料夾)
contentMD5
(檔案)
結構 2
(檔案)
columnCount2
(檔案)
存在 3
(檔案/資料夾)
Amazon S3 √/√ √/√ x/x √/√ x √/√
Amazon S3 相容儲存體 √/√ √/√ x/x √/√ x √/√
Google 雲端儲存體 √/√ √/√ x/x √/√ x √/√
Oracle 雲端儲存體 √/√ √/√ x/x √/√ x √/√
Azure Blob storage √/√ √/√ x/x √/√ √/√
Azure Data Lake Storage Gen1 √/√ √/√ x/x √/√ x √/√
Azure Data Lake Storage Gen2 √/√ √/√ x/x √/√ √/√
Azure 檔案儲存體 √/√ √/√ √/√ √/√ x √/√
Microsoft Fabric Lakehouse √/√ √/√ x/x √/√ √/√
檔案系統 √/√ √/√ √/√ √/√ x √/√
SFTP √/√ √/√ x/x √/√ x √/√
FTP √/√ √/√ x/x x/x x √/√

1 中繼資料lastModified

  • 對於 Amazon S3、Amazon S3 相容儲存體、Google 雲端儲存體和 Oracle 雲端儲存體,lastModified 適用於貯體和物件金鑰,但不適用於虛擬資料夾,而 exists 僅適用於貯體和物件金鑰,但不適用於前置詞或虛擬資料夾。
  • 對於Azure Blob 儲存,lastModified 適用於容器和 blob,但不適用於虛擬資料夾。

2 從二進位、JSON 或 XML 檔案取得中繼資料時,不支援中繼資料 structurecolumnCount

3中繼資料 exists:對於 Amazon S3、Amazon S3 相容記憶體、Google 雲端記憶體和 Oracle 雲端記憶體,exists 適用於貯體和物件金鑰,但不適用於前置詞或虛擬資料夾。

請注意下列要點:

  • 針對資料夾使用「取得中繼資料」活動時,請確定您具有指定資料夾的 LIST/EXECUTE 權限。

  • 「取得中繼資料」活動不支援資料夾/檔案上的萬用字元篩選。

  • modifiedDatetimeStartmodifiedDatetimeEnd 篩選條件設定於連接器:

    • 從資料夾取得中繼資料時,會使用這兩個屬性來篩選子項目。 此篩選條件不適用於從檔案取得中繼資料。
    • 使用這類篩選條件時,輸出中的 childItems 只會包含指定範圍內已修改的檔案,但是不包含資料夾的檔案。
    • 若要套用這類篩選,GetMetadata 活動會列舉指定資料夾中的所有檔案,並檢查修改的時間。 即使預期符合條件的檔案數量很少,也應避免指向包含大量檔案的資料夾。

關聯式資料庫

連接器/中繼資料 結構 columnCount 存在
Amazon RDS for SQL Server
Azure SQL Database
Azure SQL 受控執行個體
Azure Synapse Analytics
SQL Server

中繼資料選項

您可以在 [取得中繼資料] 活動欄位清單中指定下列中繼資料類型,以擷取對應的資訊:

中繼資料類型 描述
itemName 檔案或資料夾的名稱。
itemType 檔案或資料夾的類型。 傳回的值為 FileFolder
size 檔案大小 (單位:位元組)。 僅適用於檔案。
created 檔案或資料夾的建立日期時間。
lastModified 檔案或資料夾的上次修改日期時間。
childItems 指定資料夾中的子資料夾和檔案清單。 僅適用於資料夾。 傳回值為每個子項目的名稱和類型清單。
contentMD5 檔案的 MD5。 僅適用於檔案。
結構 檔案或關聯式資料庫資料表的資料結構。 傳回值為資料行名稱和欄類型的清單。
columnCount 檔案或關聯式資料表中的資料行數目。
存在 檔案、資料夾或資料表是否存在。 如果在 [取得中繼資料]exists 欄清單中指定,即使檔案、資料夾或資料表不存在,活動也不會失敗。 相反地,exists: false 會在輸出中傳回。

秘訣

當您想要驗證檔案、資料夾或資料表是否存在時,請在 [取得中繼資料] 活動欄位清單中指定 exists。 然後,您可以在活動輸出中檢查 exists: true/false 結果。 如果未在欄位清單中指定 exists,如果找不到物件,則取得「取得中繼資料」活動會失敗。

附註

當您從檔案存放區取得中繼資料並設定 modifiedDatetimeStartmodifiedDatetimeEnd 時,輸出中的 childItems 將僅包含指定路徑內、最後修改時間位於指定範圍內的檔案。 子資料夾中的項目不包含。

附註

要使Structure欄位清單能提供分隔文字和Excel格式資料集的實際資料結構,您必須啟用First Row as Header屬性,該屬性僅支援這些資料來源。

語法

「取得中繼資料」活動

{
    "name":"MyActivity",
    "type":"GetMetadata",
    "dependsOn":[

    ],
    "policy":{
        "timeout":"7.00:00:00",
        "retry":0,
        "retryIntervalInSeconds":30,
        "secureOutput":false,
        "secureInput":false
    },
    "userProperties":[

    ],
    "typeProperties":{
        "dataset":{
            "referenceName":"MyDataset",
            "type":"DatasetReference"
        },
        "fieldList":[
            "size",
            "lastModified",
            "structure"
        ],
        "storeSettings":{
            "type":"AzureBlobStorageReadSettings"
        },
        "formatSettings":{
            "type":"JsonReadSettings"
        }
    }
}

資料集

{
    "name":"MyDataset",
    "properties":{
        "linkedServiceName":{
            "referenceName":"AzureStorageLinkedService",
            "type":"LinkedServiceReference"
        },
        "annotations":[

        ],
        "type":"Json",
        "typeProperties":{
            "location":{
                "type":"AzureBlobStorageLocation",
                "fileName":"file.json",
                "folderPath":"folder",
                "container":"container"
            }
        }
    }
}

類型屬性

目前「取得中繼資料」活動可以傳回以下類型的中繼資料資訊:

屬性 描述 必要
fieldList 所需的中繼資料資訊類型。 如需支援中繼資料的詳細資訊,請參閱本文的中繼資料選項一節。
資料集 「取得中繼資料」活動要擷取其中繼資料的參考資料集。 如需支援連接器的詳細資訊,請參閱功能一節。 如需資料集語法詳細資訊,請參閱特定的連接器文章。
formatSettings 使用格式類型資料集時適用。
storeSettings 使用格式類型資料集時適用。

範例輸出

「取得中繼資料」結果會顯示在活動輸出中。 以下是顯示廣泛中繼資料選項的兩個範例。 若要在後續活動中使用結果,請使用此模式:@{activity('MyGetMetadataActivity').output.itemName}

取得檔案的中繼資料

{
  "exists": true,
  "itemName": "test.csv",
  "itemType": "File",
  "size": 104857600,
  "lastModified": "2017-02-23T06:17:09Z",
  "created": "2017-02-23T06:17:09Z",
  "contentMD5": "cMauY+Kz5zDm3eWa9VpoyQ==",
  "structure": [
    {
        "name": "id",
        "type": "Int64"
    },
    {
        "name": "name",
        "type": "String"
    }
  ],
  "columnCount": 2
}

取得資料夾的中繼資料

{
  "exists": true,
  "itemName": "testFolder",
  "itemType": "Folder",
  "lastModified": "2017-02-23T06:17:09Z",
  "created": "2017-02-23T06:17:09Z",
  "childItems": [
    {
      "name": "test.avro",
      "type": "File"
    },
    {
      "name": "folder hello",
      "type": "Folder"
    }
  ]
}

深入了解其他支援的控制流程活動: