【问题标题】:Azure Data Factory Passing a pipeline-processed file as a mail attachment with logic appAzure 数据工厂将管道处理的文件作为邮件附件传递给逻辑应用
【发布时间】:2021-05-26 09:13:11
【问题描述】:

我有一个 ADF 管道将文件移动到 blob 存储。我正在尝试将处理后的文件作为我的网络活动的参数传递,以便我可以将其用作电子邮件附件。我成功传递了以下参数:

{
 "Title":"Error File Received From MOE",
 "Message": "This is a test message.",
 "DataFactoryName":"@{pipeline().DataFactory}",
 "PipelineName":"@{pipeline().Pipeline}",
 "PipelineRunId":"@{pipeline().RunId}",
 "Time":"@{utcnow()}",
 "File":???????????????????????????? 
}

但是,我应该如何指定我刚刚在同一管道中处理的文件的路径?

任何帮助将不胜感激,

谢谢

埃里克

【问题讨论】:

  • 我很困惑 - 你是想传递文件内容(坏主意)还是 URL(好主意)?假设您需要 URL,您可能必须根据您用于创建它的信息来构建它。您应该已经拥有 sink 帐户、容器、文件名等。
  • 我要传递网址。迷失在语法中。
  • 标准 Azure 存储 Blob URL 格式为 https://{account}.blob.core.windows.net/{Path}/{FileName}
  • 嗨@EricDBA,一次只能移动一个文件?

标签: azure-data-factory


【解决方案1】:

我正在将数据复制到output 容器。我目前的假设是一天上传一个文件,然后用两个GetMetadata活动获取文件的lastModified属性,过滤掉最近上传的文件名。

  1. 在 Get Metadata1 活动中获取子项。

  2. 然后在 Foreach 活动中,通过动态内容获取子项@activity('Get Metadata1').output.childItems

  3. 在 Foreach 活动中,在 Get Metadata2 活动中,将 json4 数据集指定到 output 容器。
    输入动态内容@item().name foreach 文件名列表。

  4. 在 If 条件活动中,使用@equals(dayOfMonth(activity('Get Metadata2').output.lastModified),dayOfMonth(utcnow())) 来确定文件上传的日期是否是今天。

  5. 在真实活动中,添加动态内容@concat('https://{account}.blob.core.windows.net/{Path}/',item().name) 将值赋给变量。

  6. 输出如下:

【讨论】:

  • 亲爱的 Harris Xu,我的情况有所不同,但您的演示非常有帮助,非常感谢!我终于弄明白了:我将网络活动参数定义如下: { "Title":"Test Title", "Message": "Please review file content.", "DataFactoryName":"@{pipeline().DataFactory} ", "PipelineName":"@{pipeline().Pipeline}", "PipelineRunId":"@{pipeline().RunId}", "Time":"@{utcnow()}", "AttachmentContainer":" /MyContainerName/", "AttachmentName":"@{item().name}" } 然后使用逻辑应用中的函数将“AttachmentContainer”与“AttachmentName”连接起来。
猜你喜欢
  • 1970-01-01
  • 2021-05-01
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 2020-03-26
  • 1970-01-01
相关资源
最近更新 更多