如何在Azure数据工厂中正确展平分号数组?

c0vxltue  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(121)

上下文:我有一个从SQL DB中提取数据的数据流,当数据来的时候只是一个由制表符分隔的字符串的列,为了正确地操作数据,我试图将每一列与其对应的数据分开:

  • 首先,为了正确地“重建”表,我使用了“派生列”活动,将制表符替换为分号(1)dropLeft(regexReplace(regexReplace(regexReplace(descripcion, [\t] ,';'), [\n] ,';'), [\r] ,';'),1)
  • 因此,在此之后使用'split()'函数获取数组并构建列(2)split(descripcion, ';')

问题:当我尝试使用'Flatten'活动(如这里的https://learn.microsoft.com/en-us/azure/data-factory/data-flow-flatten)时,它不起作用,数据流只抛出一列,或者如果我在'Flatten'活动中添加一个额外的列,我只会得到另一列,其中的数据与第一列相同:

预期输出:
| 栏目2|栏目1|栏目3|
| --------------|--------------|--------------|
| 2000017|ENVASE CORONA CLARA 24/355 ML抓斗|PC13|
| 2004297|ENVASE V FAM GRAB 12/940 ML USADO|公司简介|
你能告诉我我做错了什么吗?谢谢。

91zkwejq

91zkwejq1#

您可以使用派生列活动本身,尝试如下。
在第一个派生列之后,您拥有的是一个字符串数组,可以使用派生模式修饰符再次拆分。
其中firstc表示与您的列descripcion等效的源列

Column1: split(firstc, ';')[1]

Column2: split(firstc, ';')[2]

Column3: split(firstc, ';')[3]

也可以选择需要写入SQL接收器的列

相关问题