【问题标题】:How to set and get variable value in Azure Synapse or Data Factory pipeline如何在 Azure Synapse 或数据工厂管道中设置和获取变量值
【发布时间】:2022-01-05 10:59:01
【问题描述】:

我在 Azure Synapse Analytics 工作区中创建了一个带有 Copy Activity 的管道,例如 activity1,它使用 source 作为 REST Api 和 @ 将以下 JSON 加载到 Azure Data Lake Storage Gen2 (ADLSGen2) 987654330@(目的地)为ADLSGen2Ref.

MyJsonFile.json(存储在 ADLSGen2 中)

{"file_url":"https://files.testwebsite.com/Downloads/TimeStampFileName.zip"}

在同一个管道中,我需要添加一个activity2,它从上面的JSON 读取URL,并添加一个activity3,它将zip 文件(在那个URL 中提到)加载到同一个@ 987654338@.

问题:我们如何在现有管道中添加一个activity2,以便从上面的JSON 获取URL,然后将其传递给activity3?或者,是否有更好的建议/解决方案来完成这项任务。

备注:我尝试过Set Variable Activity(如下所示),首先在管道中声明一个变量,然后在此活动中使用该变量,例如myURLVar,但我不确定如何动态地将 myURLVar 的值设置为来自上述 JSON 的 URL 的值。请注意 Json 文件名 (MyJsonFile.json) 是一个常量,但 URL 中的 zip 文件名是动态的(基于时间戳),因此我们不能只对上述 url 进行硬编码。

【问题讨论】:

  • 您可以尝试在复制活动之后添加一个查找活动,其来源是存储在 ADLSGen2 中的 MyJsonFile.json。然后通过查找活动的输出来获取 file_url。

标签: azure azure-data-factory azure-synapse azure-data-lake-gen2


【解决方案1】:

正如@Steve Zhao 在 cmets 中提到的,使用 lookup 活动从 JSON 文件中获取数据,并使用 set variable 活动从查找输出值中提取所需的 URL。

  • lookup 活动连接到先前复制数据活动的接收器数据集。

输出查找活动:

  • 我在 set 活动中使用了 substring 函数从查找输出中提取 URL。

    @replace(substring(replace(replace(replace(string(activity('Lookup1').output.value),'"',''),'}',''),'{',''),indexof(replace(replace(replace(string(activity('Lookup1').output.value),'"',''),'}',''),'{',''),'http'),sub(length(string(replace(replace(replace(string(activity('Lookup1').output.value),'"',''),'}',''),'{',''))),indexof(replace(replace(replace(string(activity('Lookup1').output.value),'"',''),'}',''),'{',''),'http'))),']','')
    

检查设置变量的输出

设置变量输出值

【讨论】:

  • 您如何测试以确保Set-Variable 活动确实从查找输出值中获得了所需的 URL?我以相同的顺序使用了LookupSet variable 活动。管道也运行良好。但我无法验证set variable 活动是否获得了所需的 URL。
  • 您可以在管道的 OUTPUT 属性中检查设置变量的输出。用一个片段更新了我的答案以检查设置变量输出。
  • 知道了 - 谢谢 (+1)。
猜你喜欢
  • 1970-01-01
  • 2020-03-14
  • 2018-05-12
  • 1970-01-01
  • 2022-02-22
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
相关资源
最近更新 更多