Azure 数据工厂或 Azure Synapse Analytics 中的“获取元数据”活动
适用于:Azure 数据工厂 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"
}
]
}
相关内容
了解支持的其他控制流活动: