azure ADF-从查找活动中获取.csv文件的字段列表

上下文:天蓝色-ADF简要流程说明:

获取在.csv(blood)文件的第一行中定义的字段的列表。这是第一步,检测字段

然后第二步将是与SQL表的实际列进行比较

第三个执行存储过程以执行alter table任务的过程,最后完成一个(定制的)表,其中包含将.csv文件成功加载到SQl表所需的所有字段。

要开始我的ADF管道,我设置了一个查找活动来“查询”我膨胀文件的第一行"First row only" flag = ON。作为第二个管道活动,是一个“附加变量”任务,我想以获取从查找活动中检索到的所有.csv字段(第一行),以列表形式。

这是一场噩梦。

据我所知,利用动态内容,我可以获得具有所有值的数组(带有{"field1_name":"field1_value_1st_row","field2_name":"field2_value_1st_row",etc }之类的格式) 与类似@activity('Lookup1').output.firstrow的东西。 或任何带有@activity('Lookup1').output.firstrow.<element_name>的数组元素, 但我不知道如何获取数组的所有字段名称(键?)的列表。

我将不胜感激,非常感谢!

theresa88520 回答:azure ADF-从查找活动中获取.csv文件的字段列表

我会保存LookUp活动的一部分,因为您似乎对此很熟悉。

您可以使用Azure Function HttpTrigger获取firstrow JSON对象的键列表。例如,您在问题中提到的json对象如下:

{"field1_name":"field1_value_1st_row","field2_name":"field2_value_1st_row"}

天蓝色功能代码:

module.exports = async function (context,req) {
    context.log('JavaScript HTTP trigger function processed a request.');
    var array = [];
    for(var key in req.body){
        array.push(key);       
    }
    context.res = {
        body: {"keyValue":array}
    };
};

测试输出:

enter image description here

然后使用Azure Function Activity获取输出:

@activity('<AzureFunctionActivityName>').keyValue

使用Foreach Activity循环keyValue数组:

@item()

仍然基于上述示例输入数据,请参考我的示例代码:

dct = {"field1_name": "field1_value_1st_row","field2_name": "field2_value_1st_row"}
list = []
for key in dct.keys():
    list.append(key)

print(list)
dicOutput = {"keys": list}
print(dicOutput)

enter image description here

,

您是否考虑过在ADF数据流中执行此操作?您可以将输入字段映射到没有目标架构的SQL数据集。在数据集定义中定义一个新的表名,然后将来自CSV的传入字段映射到新的目标表架构定义。 ADF将使用该文件的架构将行写入新表。

本文链接:https://www.f2er.com/3100316.html

大家都在问