如何在 Azure 数据工厂中正确展平分号数组?
How to Flatten a semicolon Array properly in Azure Data Factory?
上下文:我有一个从 SQL 数据库中提取数据的数据流,当数据到来时只有一列,其中的字符串由制表符分隔,为了正确操作数据,我试过了将每一列与其相应的数据分开:
- 首先,为了 'rebuild' table 正确,我使用 'Derived Column' activity 用分号代替制表符 (1)
dropLeft(regexReplace(regexReplace(regexReplace(descripcion,
[\t],';'),
[\n],';'),
[\r],';'),1)
- 因此,之后使用 'split()' 函数获取数组并构建列 (2)
split(descripcion, ';')
问题:当我尝试使用 'Flatten' activity(如此处 https://docs.microsoft.com/en-us/azure/data-factory/data-flow-flatten)时,它无法正常工作,数据流只会抛出一列,或者如果我添加一个额外的列'Flatten' activity 中的列我刚得到另一列,其数据与第一列相同:
预期输出:
column2
column1
column3
2000017
ENVASE CORONA CLARA 24/355 ML GRAB
PC13
2004297
ENVASE V FAM GRAB 12/940 ML USADO
PC15
你们能告诉我我做错了什么吗,伙计们?顺便谢谢你。
您可以使用派生列 activity 本身,尝试如下。
在第一个派生列之后,您得到的是一个字符串数组,可以使用派生模式修饰符再次拆分它。
其中 firstc
表示等同于您的列的源列 descripcion
Column1: split(firstc, ';')[1]
Column2: split(firstc, ';')[2]
Column3: split(firstc, ';')[3]
您可以选择 select 您需要写入的列 SQL sink
上下文:我有一个从 SQL 数据库中提取数据的数据流,当数据到来时只有一列,其中的字符串由制表符分隔,为了正确操作数据,我试过了将每一列与其相应的数据分开:
- 首先,为了 'rebuild' table 正确,我使用 'Derived Column' activity 用分号代替制表符 (1)
dropLeft(regexReplace(regexReplace(regexReplace(descripcion,
[\t],';'),
[\n],';'),
[\r],';'),1)
- 因此,之后使用 'split()' 函数获取数组并构建列 (2)
split(descripcion, ';')
问题:当我尝试使用 'Flatten' activity(如此处 https://docs.microsoft.com/en-us/azure/data-factory/data-flow-flatten)时,它无法正常工作,数据流只会抛出一列,或者如果我添加一个额外的列'Flatten' activity 中的列我刚得到另一列,其数据与第一列相同:
预期输出:
column2 | column1 | column3 |
---|---|---|
2000017 | ENVASE CORONA CLARA 24/355 ML GRAB | PC13 |
2004297 | ENVASE V FAM GRAB 12/940 ML USADO | PC15 |
你们能告诉我我做错了什么吗,伙计们?顺便谢谢你。
您可以使用派生列 activity 本身,尝试如下。
在第一个派生列之后,您得到的是一个字符串数组,可以使用派生模式修饰符再次拆分它。
其中 firstc
表示等同于您的列的源列 descripcion
Column1: split(firstc, ';')[1]
Column2: split(firstc, ';')[2]
Column3: split(firstc, ';')[3]
您可以选择 select 您需要写入的列 SQL sink