如何将 CSV 读入数组变量,忽略自动分配的标头(“Prop_#),最好没有 FE 循环

问题描述 投票:0回答:1

我有一个进程将消息 ID 读入数组,然后将它们保存到 .csv 文件中,以保留这些 ID 以供以后运行(我需要检查传入文件以查看是否已报告相同的 ID)。

将数组保存到 csv 中不是问题,但是当我从 CSV 将其读回到数组中时,它会附带 ADF 分配的自动标头,因为我的数据集没有标头:

生成的 CSV 文件 您可以在 CSV 文件的内容上方看到,其中“干净 ID”来自最新运行,这意味着它们刚刚保存到文件中,但开头从文件中读取的 ID 中包含“Prop_0:”。随着您从文件中读取的次数越多,记录就会不断附加“Prop_0”,这会进一步加剧。

我想要一种方法将 ID 放入变量中,最好不诉诸 FE 循环,因为它可能会影响性能。

目前我正在将它们加载到数组中,如下所示: 通过查找和设置变量活动加载文件

@activity('LookupLog').output.value

我还尝试了一个简单的技巧,将 output.value 转换为字符串并使用替换函数来删除“Prop_0”部分并将其恢复为数组,但我没有成功:

更换尝试

替换尝试生成的 csv

azure-data-factory
1个回答
0
投票

我还尝试了一个简单的技巧,将 output.value 转换为字符串并使用替换函数来删除“Prop_0”部分并将其恢复为数组,但我没有成功:

您可以使用下面的表达式来获取所需的数组,而无需自动分配标头。

@skip(split(replace(replace(replace(replace(replace(replace(string(activity('Lookup1').output.value),'"',''),'[',''),']',''),'{',''),',',''),'}',''),'Prop_0:'),1)

这是我的示例查找输出数组:

 [
        {
            "Prop_0": "ID00034320240513001901125"
        },
        {
            "Prop_0": "ID12345678908763243744788"
        },
        {
            "Prop_0": "ID65811993776814561728290"
        },
        {
            "Prop_0": "ID24262426242624262426246"
        }
]

使用上面的表达式设置数组类型的变量活动。

enter image description here

所需数组:

enter image description here

您可以根据您的要求将上述数组存储到 csv 文件中。

© www.soinside.com 2019 - 2024. All rights reserved.