You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ADF中GetMetadata无Structure选项及非数据流验证Schema问题

关于ADF中GetMetadata活动Structure选项及Schema验证的问题

一、Structure选项显示的条件

GetMetadata活动的字段列表中出现Structure选项,必须满足以下前提:

  • 对应的Parquet/CSV数据集已预定义明确的Schema结构:
    • 手动在数据集配置界面添加列名、指定数据类型;
    • 通过「导入Schema」功能从样本文件读取Schema并保存到数据集配置中;
  • 若数据集设置为自动检测Schema(比如CSV数据集的Schema选项设为「None」,或Parquet数据集未手动保存导入的Schema),GetMetadata不会返回Structure字段——因为此时数据集本身没有固定的Schema定义。

二、不使用数据流验证Schema与列数的方法

1. 验证列数

使用GetMetadata活动的Column Count字段获取文件实际列数,再通过If Condition活动对比预期值:

  • 步骤:
    1. 配置GetMetadata活动,勾选「Column Count」字段;
    2. 在后续If Condition中使用表达式判断:
      @equals(activity('GetMetadata_File').output.columnCount, 5)  // 5为预期列数
      
    3. 根据判断结果执行后续逻辑(如抛出错误、记录日志等)。

2. 验证Schema结构

分两种场景处理:

场景A:数据集已预定义Schema

  • 配置GetMetadata活动,勾选「Structure」字段,该字段会返回数据集预定义的Schema结构(包含列名、数据类型、是否允许空等信息);
  • 通过表达式对比返回的Structure与预期Schema,示例:
    @equals(activity('GetMetadata_File').output.structure, createArray(
        createObject('name', 'id', 'type', 'Int32'),
        createObject('name', 'name', 'type', 'String'),
        createObject('name', 'create_time', 'type', 'DateTime')
    ))
    
    注:嵌套结构需按层级构建对比对象。

场景B:数据集未预定义Schema

  • 使用GetMetadata活动的Columns字段获取文件实际列名列表,再与预期列名数组对比:
    @equals(activity('GetMetadata_File').output.columns, createArray('id', 'name', 'create_time'))
    
    若需验证数据类型,可结合Lookup活动读取少量数据行,通过表达式判断字段类型(如@typeof(activity('Lookup_File').output.firstRow.id))。

内容的提问来源于stack exchange,提问作者CloudEngineer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 19:07:48