【问题标题】:Modify output of an acitivity in Azure Data Factory修改 Azure 数据工厂中活动的输出
【发布时间】:2021-06-15 18:35:08
【问题描述】:

我想对 Azure 数据工厂中活动的输出进行简单的字符串转换。我当然可以为此使用 Databricks 笔记本,但我希望有一个更简单、更轻便的解决方案。 Azure 数据工厂中是否有专门为此目的的内置活动?

【问题讨论】:

  • 你能提供一个简单的例子来说明你想要做什么,最好是样本数据和预期结果? ADF 有一些内置函数可能会有所帮助,但我经常发现自己将事情传递给其他计算来做更复杂的事情,比如使用存储过程任务、笔记本(如你所提到的)或者如果低代码可能映射数据流方法是必需的。
  • 我只想替换字符串中的几个字符。在 Python 和 Java 等语言中,您通常会使用替换函数来执行此操作。

标签: string azure azure-data-factory transformation


【解决方案1】:

无法直接修改或更改活动的输出。

在数据工厂中,如果你想实现这一点,它会很复杂。没有更简单、更轻便的解决方案。此外,Azure 数据工厂中没有专门为此目的的内置活动。

数据工厂的解决方法如下:

  1. 将活动输出存储到 JSON 文件中,然后通过数据流修改 JSON 文件。其他人也发了同样的问题,你可以搜索一下。这一步也有点复杂。

  2. 使用 Set 变量将输出传递给参数或变量。然后使用表达式语言/函数来修改输出。表达式也可能很复杂。

【讨论】:

    【解决方案2】:

    Azure 数据工厂提供有限数量的string functions 用于在管道中操作字符串。 concatreplacesplitsubstring 是一些主要的,它们可以让你做这样的事情

    • 从完整的文件路径获取文件名(使用lastIndexOf with '\'
    • 从完整文件路径获取扩展名(使用lastIndexOf with '.'
    • 基本查找和替换操作(使用replace
    • 字符串连接(使用concat

    在此示例中,我有一个名为 varName 的变量,其值为“MetallicPriest”。我使用 Set Variable 活动将该变量转换 为另一个字符串。如果你能告诉我那个字符串是什么,加分:

    @replace(concat(substring(variables('varName'), 3, 2 ), substring(variables('varName'), 7, 3 ), substring(variables('varName'), 0, 1 ), replace(substring(variables('varName'), 10, 4 ),'e','') ), 'Pr', 'He')
    

    还有collection functions,如splitjoinunion,它们允许您将字符串视为数组并执行一些interesting things

    我认为它缺少一些基本的字符串函数,如reversestuff、任何类型的正则表达式,你应该注意子字符串是从 0 开始的(不像 SQL Server),但也许你可以想出一些 黄金。

    Mapping Data Flows 提供了更广泛的字符串函数数组,但如果您已经拥有可用于管道的计算,例如 SQL 数据库、Databricks、Azure Synapse Notebooks 等,请使用它们,因为它们提供了更强大的字符串操作。

    【讨论】:

    • @MetallicPriest 可能会在这里为您提供一些黄金,如果您已经拥有...的贱金属......哈哈
    猜你喜欢
    • 1970-01-01
    • 2021-01-25
    • 2021-10-01
    • 2019-04-24
    • 2020-06-11
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 2021-12-17
    相关资源
    最近更新 更多