在 Azure Data Factory 或 Azure Synapse Analytics 中取得元數據活動

適用於: Azure Data Factory Azure Synapse Analytics

提示

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

您可以使用取得元數據活動來擷取 Azure Data Factory 或 Synapse 管線中任何數據的元數據。 您可以使用條件表達式中取得元數據活動的輸出來執行驗證,或在後續活動中取用元數據。

使用UI建立取得元數據活動

若要在管線中使用取得元數據活動,請完成下列步驟:

  1. 在管線 [活動] 窗格中搜尋 [ 取得元數據 ],然後將 [失敗] 活動拖曳至管線畫布。

  2. 如果尚未選取新的 [取得元數據] 活動,請在畫布上選取新的 [取得元數據] 活動,以及其 [設定] 索引卷標,以編輯其詳細數據。

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

    Shows the UI for a Get Metadata activity.

  4. 使用活動的輸出做為另一個活動的輸入,例如此範例中的 Switch 活動。 您可以在其他活動支援動態內容的任何位置參考元資料活動的輸出。

    Shows the pipeline with a Switch activity added to handle the output of the Get Metadata activity.

  5. 在動態內容編輯器中,選取 [取得元數據] 活動輸出,以在其他活動中參考它。

    Shows the dynamic content editor with the output of the Get Metadata activity as the dynamic content.

支援的功能

取得元數據活動會採用數據集做為輸入,並將元數據信息當做輸出傳回。 目前支援下列連接器和對應的可擷取元數據。 傳回元數據的大小上限為 4 MB

支援的連接器

檔案儲存體

連線 or/Metadata itemName
(檔案/資料夾)
itemType
(檔案/資料夾)
size
(檔案)
created
(檔案/資料夾)
lastModified1
(檔案/資料夾)
childItems
(資料夾)
contentMD5
(檔案)
結構2
(檔案)
columnCount2
(檔案)
exists3
(檔案/資料夾)
Amazon S3 √/√ √/√ x/x √/√ x √/√
Amazon S3 相容 儲存體 √/√ √/√ x/x √/√ x √/√
Google Cloud 儲存體 √/√ √/√ x/x √/√ x √/√
Oracle Cloud 儲存體 √/√ √/√ x/x √/√ x √/√
Azure Blob 儲存體 √/√ √/√ 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 Compatible 儲存體、Google Cloud 儲存體 和 Oracle Cloud 儲存體,lastModified適用於貯體和密鑰,但不適用於虛擬資料夾,並exists套用至貯體和密鑰,但不適用於前置詞或虛擬資料夾。
  • 針對 Azure Blob 記憶體, lastModified 適用於容器和 Blob,但不適用於虛擬資料夾。

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

3 元數據exists:針對 Amazon S3、Amazon S3 相容 儲存體、Google Cloud 儲存體 和 Oracle Cloud 儲存體,適用於貯體和索引鍵,exists但不適用於前置詞或虛擬資料夾。

請注意以下要點:

  • 針對資料夾使用取得元資料活動時,請確定您具有指定資料夾的 LIST/EXECUTE 許可權。

  • 取得元數據活動不支援資料夾/檔案上的通配符篩選。

  • modifiedDatetimeStart 連接器上設定的與 modifiedDatetimeEnd 篩選:

    • 從資料夾取得元數據時,會使用這兩個屬性來篩選子專案。 從檔案取得元數據時不適用。
    • 使用這類篩選時,輸出 childItems 中的 只會包含指定範圍內修改但不包含資料夾的檔案。
    • 若要套用這類篩選,GetMetadata 活動會列舉指定資料夾中的所有檔案,並檢查修改的時間。 請避免指向具有大量檔案的資料夾,即使預期的限定檔案計數很小也一樣。

關係資料庫

連線 or/Metadata 結構 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 輸出中的 只會包含指定路徑中具有指定範圍內上次修改時間的檔案。 子資料夾中的專案不包含。

注意

若要讓 [ 結構 ] 欄位清單提供分隔文字和 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 所需的元數據信息類型。 如需所支援元數據的詳細資訊,請參閱 本文的元數據選項 一節。 Yes
資料集 要由取得元數據活動擷取其元數據的參考數據集。 如需支持連接器的資訊,請參閱功能一節。 如需數據集語法詳細數據,請參閱特定的連接器主題。 Yes
format 設定 使用格式類型數據集時套用。 No
store 設定 使用格式類型數據集時套用。 No

範例輸出

取得元數據結果會顯示在活動輸出中。 以下是顯示廣泛元數據選項的兩個範例。 若要在後續活動中使用結果,請使用下列模式: @{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"
    }
  ]
}

瞭解其他支援的控制流程活動: