如何在 Azure 数据工厂中正确展平分号数组?
Posted
技术标签:
【中文标题】如何在 Azure 数据工厂中正确展平分号数组?【英文标题】:How to Flatten a semicolon Array properly in Azure Data Factory? 【发布时间】:2021-12-01 13:29:13 【问题描述】:上下文:我有一个从 SQL DB 中提取数据的数据流,当数据到来时,只有一列带有一个由制表符分隔的字符串,为了正确处理数据,我尝试用其对应数据:
首先,为了正确地“重建”表,我使用了“派生列”活动用分号替换选项卡 (1)dropLeft(regexReplace(regexReplace(regexReplace(descripcion,
[\t],';'),
[\n],';'),
[\r],';'),1)
因此,之后使用“split()”函数获取数组并构建列 (2)
split(descripcion, ';')
问题:当我尝试使用“Flatten”活动(如此处https://docs.microsoft.com/en-us/azure/data-factory/data-flow-flatten)时,它只是无法正常工作,数据流只会抛出一列,或者如果我在“Flatten”活动中添加额外的列,我只是得到另一列与第一列具有相同的数据:
预期输出:
column2 | column1 | column3 |
---|---|---|
2000017 | ENVASE CORONA CLARA 24/355 ML GRAB | PC13 |
2004297 | ENVASE V FAM GRAB 12/940 ML USADO | PC15 |
你们能告诉我我做错了什么吗,伙计们?顺便谢谢。
【问题讨论】:
使用 flatten 后,输出数据将在每个数组中的每一项都有一行。 好的,那么我需要用什么来拆分它的列? 【参考方案1】:您可以使用派生列活动本身,尝试如下。
在第一个派生列之后,您拥有的是一个字符串数组,可以使用派生模式修饰符再次拆分。
其中firstc
表示与您的列descripcion
等效的源列
Column1: split(firstc, ';')[1]
Column2: split(firstc, ';')[2]
Column3: split(firstc, ';')[3]
您可以选择需要写入 SQL 接收器的列
【讨论】:
以上是关于如何在 Azure 数据工厂中正确展平分号数组?的主要内容,如果未能解决你的问题,请参考以下文章
如何强制 Azure 数据工厂数据流使用 Databricks