首页 > 解决方案 > 如何将获取元数据结构输出与已知结构进行比较以验证文件?

问题描述

我正在根据 ADF 中的事件触发器将 blob 存储文件加载到 SQL,并希望在运行后续活动之前验证该文件的元数据是否符合已知模板。如何在 If 条件中编写表达式来检查 Get Metadata 活动的“结构”输出对象是否与已知结构匹配?

有一组集合函数,例如可能适用的“包含”,但我不知道如何让表达式将输出对象(我认为它是一个列表)与表示列名和类型的字符串进行比较. 以下是我的非功能性尝试...

@equals(activity('Get Metadata').output.structure, '[{"name": "ID","type": "String"},{"name": "reg_number","type": "String"},...,{"name":"final_column","type":"String"}]')

努力在在线数据工厂中找到任何可能对此有所帮助的元数据验证示例。验证活动似乎只是指示 blob 文件是否存在的信号灯。

标签: azure-data-factory

解决方案


我发现 Get Metadata 活动的“结构”输出对象是一个 json 对象数组,因此我使用函数 createArray() 和 json() 来比较对象,这似乎有效。我确信那里有一个更优雅的解决方案。

@equals(activity('Get Metadata').output.structure,createArray(
        json('{
            "name": "ID",
            "type": "String"
        }'),...
        json('{
            "name": "final_column",
            "type": "String"
        }')
))

推荐阅读