【问题标题】:How to Flatten a semicolon Array properly in Azure Data Factory?如何在 Azure 数据工厂中正确展平分号数组?
【发布时间】: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 后,输出数据将在每个数组中的每一项都有一行。
  • 好的,那么我需要用什么来拆分它的列?

标签: azure azure-pipelines azure-data-factory azure-data-factory-2 azure-synapse


【解决方案1】:

您可以使用派生列活动本身,尝试如下。

在第一个派生列之后,您拥有的是一个字符串数组,可以使用派生模式修饰符再次拆分。

其中firstc 表示与您的列descripcion 等效的源列

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

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

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

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

【讨论】:

    猜你喜欢
    • 2021-03-31
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多