在Fabric加载数据至Azure数据仓库时,如何获取Azure Blob元数据键值
在Fabric环境获取Azure Blob元数据键值的可行方案
方案1:使用Fabric Data Factory的Lookup活动
- 配置Lookup活动连接到Azure Blob存储,选择Blob存储查询模式,通过OData查询指定要获取的元数据字段。比如用
$select=Name,LastModified,Metadata/*可以获取Blob的基础信息及所有自定义元数据;如果只需要特定键值,可写为$select=Metadata/你的自定义键名。 - 执行后,Lookup活动的输出会包含指定的元数据内容,可直接用于后续加载到Azure数据仓库的流程。
方案2:使用Fabric Dataflow Gen2
- 添加Azure Blob存储数据源,选择目标容器或文件夹。
- 在数据编辑界面点击「添加列」,用自定义表达式提取元数据:
- 系统元数据:
metadata('BlobName')(文件名)、metadata('LastModified')(修改时间) - 自定义元数据:
metadata('Metadata_你的键名')(键名需和Blob上的自定义元数据完全匹配,特殊字符需转义)
- 系统元数据:
- 提取后的元数据可和业务数据合并,直接写入Azure数据仓库。
方案3:使用Fabric Notebook(PySpark/PowerShell)
PySpark脚本示例
from azure.storage.blob import BlobServiceClient # 初始化客户端 conn_str = "你的Blob存储连接字符串" container_name = "目标容器名" blob_service_client = BlobServiceClient.from_connection_string(conn_str) container_client = blob_service_client.get_container_client(container_name) # 遍历Blob并提取元数据 for blob in container_client.list_blobs(): blob_client = container_client.get_blob_client(blob.name) props = blob_client.get_blob_properties() # 系统元数据 print(f"Blob名称: {blob.name}") print(f"最后修改时间: {props.last_modified}") # 自定义元数据 custom_meta = props.metadata if custom_meta: print("自定义元数据:") for k, v in custom_meta.items(): print(f" {k}: {v}") # 可将元数据写入Azure数据仓库 # spark.createDataFrame(元数据列表).write.mode("append").synapsesql("数据仓库表名")
PowerShell脚本示例
$connStr = "你的Blob存储连接字符串" $containerName = "目标容器名" # 获取Blob及元数据 $blobs = Get-AzStorageBlob -ConnectionString $connStr -Container $containerName foreach ($blob in $blobs) { Write-Host "Blob名称: $($blob.Name)" Write-Host "最后修改时间: $($blob.LastModified)" # 自定义元数据 $meta = $blob.ICloudBlob.Metadata if ($meta.Count -gt 0) { Write-Host "自定义元数据:" foreach ($key in $meta.Keys) { Write-Host " $key : $($meta[$key])" } } }
Get Metadata组件的排查提示
如果之前使用Get Metadata未成功,可检查以下点:
- 数据集需正确指向Azure Blob存储,若批量获取元数据,需结合ForEach活动遍历Blob列表,逐个执行Get Metadata
- 在Get Metadata活动的「字段列表」中,必须勾选
Metadata选项,自定义元数据会嵌套在该字段下
内容的提问来源于stack exchange,提问作者ms reddy
相关产品推荐
相关产品推荐

