适用于: Azure 数据工厂
Azure 数据工厂  Azure Synapse Analytics
 Azure Synapse Analytics
可以使用“获取元数据”活动来检索 Azure 数据工厂或 Synapse 管道中任何数据的元数据。 你可以在条件表达式中使用“获取元数据”活动的输出来执行验证,也可以在后续活动中使用元数据。
使用 UI 创建 Get Metadata 活动
若要在管道中使用 Get Metadata 活动,请完成以下步骤:
- 在管道“活动”窗格中搜索“Get Metadata”,然后将 Fail 活动拖动到管道画布上。 
- 请选择画布上的新 Get Metadata 活动,如果尚未选择,请选择其“设置”选项卡,以编辑其详细信息。 
- 选择数据集,或者使用“新建”按钮创建一个新数据集。 然后,可以指定筛选器选项,并从数据集的可用元数据中添加列。   
- 将活动输出用作另一个活动的输入,如本示例中的 Switch 活动。 可以在其他活动支持动态内容的任何位置引用 Metadata 活动的输出。   
- 在动态内容编辑器中,选择 Get Metadata 活动输出以在其他活动中引用它。   
支持的功能
“获取元数据”活动采用数据集作为输入,并返回元数据信息作为输出。 目前支持以下连接器和相应的可检索元数据。 返回的元数据不得超过 4 MB。
受支持的连接器
文件存储
| 连接器/元数据 | itemName (文件/文件夹) | itemType (文件/文件夹) | 大小 (文件) | created (文件/文件夹) | lastModified1 (文件/文件夹) | childItems (文件夹) | contentMD5 (文件) | structure2 (文件) | columnCount2 (文件) | exists3 (文件/文件夹) | 
|---|---|---|---|---|---|---|---|---|---|---|
| Amazon S3 | √/√ | √/√ | √ | x/x | √/√ | √ | x | √ | √ | √/√ | 
| Amazon S3 兼容存储 | √/√ | √/√ | √ | x/x | √/√ | √ | x | √ | √ | √/√ | 
| Google Cloud Storage | √/√ | √/√ | √ | x/x | √/√ | √ | x | √ | √ | √/√ | 
| Oracle 云存储 | √/√ | √/√ | √ | x/x | √/√ | √ | x | √ | √ | √/√ | 
| Azure Blob 存储 | √/√ | √/√ | √ | x/x | √/√ | √ | √ | √ | √ | √/√ | 
| Azure Data Lake Storage Gen2 | √/√ | √/√ | √ | x/x | √/√ | √ | √ | √ | √ | √/√ | 
| Azure 文件 | √/√ | √/√ | √ | √/√ | √/√ | √ | x | √ | √ | √/√ | 
| 文件系统 | √/√ | √/√ | √ | √/√ | √/√ | √ | x | √ | √ | √/√ | 
| SFTP | √/√ | √/√ | √ | x/x | √/√ | √ | x | √ | √ | √/√ | 
| FTP | √/√ | √/√ | √ | x/x | x/x | √ | x | √ | √ | √/√ | 
1 元数据 lastModified:
- 对于 Amazon S3、Amazon S3 兼容存储、Google Cloud Storage 和 Oracle 云存储,lastModified适用于 bucket 和密钥,但不适用于虚拟文件夹,而exists适用于 bucket 和密钥,但不适用于前缀或虚拟文件夹。
- 对于 Azure Blob 存储,lastModified适用于容器和 Blob,但不适用于虚拟文件夹。
2 从二进制文件、JSON 文件或 XML 文件获取元数据时,不支持元数据 structure 和 columnCount。
3 元数据 exists:对于 Amazon S3、Amazon S3 兼容存储、Google Cloud Storage 和 Oracle 云存储,exists 适用于 bucket 和密钥,但不适用于前缀或虚拟文件夹。
注意以下事项:
- 对文件夹使用“获取元数据”活动时,请确保对给定文件夹具有“列出/执行”权限。 
- “获取元数据”活动不支持文件夹/文件的通配符筛选器。 
- 连接器上设置的 - modifiedDatetimeStart和- modifiedDatetimeEnd筛选器:- 这两个属性用于在从文件夹中获取元数据时筛选子项。 它不适用于从文件中获取元数据的情况。
- 使用此类筛选器时,输出中的 childItems仅包括在指定范围内修改的文件,而不包括文件夹。
- 为了应用此类筛选器,GetMetadata 活动会枚举指定文件夹中的所有文件,并检查修改后的时间。 即使预期的符合条件的文件数很少,也要避免指向包含大量文件的文件夹。
 
关系数据库
| 连接器/元数据 | structure | columnCount | exists | 
|---|---|---|---|
| Amazon RDS for SQL Server | √ | √ | √ | 
| Azure SQL 数据库 | √ | √ | √ | 
| Azure SQL 托管实例 | √ | √ | √ | 
| Azure Synapse Analytics | √ | √ | √ | 
| SQL Server | √ | √ | √ | 
元数据选项
可以在“获取元数据”活动字段列表中指定以下元数据类型,以检索相应的信息:
| 元数据类型 | 说明 | 
|---|---|
| itemName | 文件或文件夹的名称。 | 
| itemType | 文件或文件夹的类型。 返回的值为 File或Folder。 | 
| 大小 | 文件大小,以字节为单位。 仅适用于文件。 | 
| created | 文件或文件夹的创建日期时间。 | 
| lastModified | 文件或文件夹的上次修改日期时间。 | 
| childItems | 给定文件夹中的子文件夹和文件列表。 仅适用于文件夹。 返回的值为每个子项的名称和类型列表。 | 
| contentMD5 | 文件的 MD5。 仅适用于文件。 | 
| structure | 文件或关系数据库表的数据结构。 返回的值为列名称和列类型列表。 | 
| columnCount | 文件或关系表中的列数。 | 
| exists | 是否存在某个文件、文件夹或表。 如果在“获取元数据”字段列表中指定了 exists,那么,即使不存在该文件、文件夹或表,该活动也不会失败, 而是在输出中返回exists: false。 | 
提示
若要验证是否存在某个文件、文件夹或表,请在“获取元数据”活动字段列表中指定 exists。 然后可以检查活动输出中的 exists: true/false 结果。 如果未在该字段列表中指定 exists,那么,在找不到对象时,“获取元数据”活动将会失败。
注意
从文件存储获取元数据以及配置 modifiedDatetimeStart 或 modifiedDatetimeEnd 时,输出中的 childItems 只包含指定路径中其最近修改时间在指定范围内的文件。 不包括子文件夹中的项。
注意
要使“结构”字段列表为分隔文本和 Excel 格式数据集提供实际数据结构,必须启用 属性,该属性仅支持用于这些数据源。
语法
获取元数据活动
{
    "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"
            }
        }
    }
}
Type 属性
目前,“获取元数据”活动可以返回以下类型的元数据信息:
| 属性 | 描述 | 必须 | 
|---|---|---|
| fieldList | 所需元数据信息的类型。 有关支持的元数据的详细信息,请参阅本文的元数据选项部分。 | 是 | 
| dataset | 引用数据集,其元数据将由“获取元数据”活动检索。 有关支持的连接器的信息,请参阅功能部分。 有关数据集语法详细信息,请参阅特定的连接器主题。 | 是 | 
| 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"
    }
  ]
}
相关内容
了解支持的其他控制流活动: