Azure数据工厂验证固定长度txt文件的标题行和校验和并插入

zbwhf8kr  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(104)

我当前正在使用Azure数据工厂从blob存储中检索固定长度的文件,并尝试将记录导入我的数据库。
Fixed-length.txt

0202212161707
1Tom
1Kelvin
1Michael
23

第一行是标题记录,以“0”开头,并显示创建时间。接下来的一行是详细记录,以“1”开头,并显示用户名。最后一行是结束记录,以“2”开头,并显示详细记录的总和。
但是,我想在插入这些记录之前验证文件的数据是否正确。我想先检查校验和是否正确,然后只插入所有以1开头的记录。
目前,我将所有这些记录逐行插入到SQL DB中,并运行存储过程来执行这些任务。是否可以使用Azure数据工厂来完成这些任务?谢谢。

zpgglvta

zpgglvta1#

我复制了您的问题,请执行以下步骤。

首先采取一个查找活动,查看文件中的所有数据,并对该数据应用筛选器。

然后取一个集合变量活动并获取最后一行的最后一个元素**,例如23为3**,并使用以下动态表达式。

@last(activity('Lookup1').output.value[sub(length(activity('Lookup1').output.value),1)].Prop_0)

然后执行一个筛选活动,以筛选具有1个前缀且具有以下项目值和条件的行

items : @activity('Lookup1').output.value
condition : @startswith(item().Prop_0,'1')

after filter执行ForEach活动以将这些值追加到数组中

然后在每个活动中获取Append变量活动,它将创建一个包含过滤值的数组。

现在,用表达式取If条件,该表达式检查集合变量1的值与Append数组变量的长度是否相同。

@equals(int(variables('sum')),length(variables('username')))

然后在true condition中,如果条件为true,则添加复制活动以复制数据

我的示例输出:

0202212161707
1Tom
1Kelvin
23

对于上述数据,控制将进入错误状态。

0202212161707
1Tom
1Kelvin
1Michael
23

对于上述数据,控制将变为真条件。

相关问题