【问题标题】:Azure Data Factory - Set metadata of blob container along with 'Copy' ActivityAzure 数据工厂 - 设置 blob 容器的元数据以及“复制”活动
【发布时间】:2021-03-18 16:53:36
【问题描述】:

我在 Azure 数据工厂中构建了一个管道,该管道使用 http 连接器(链接服务到 http 连接器)调用 Web api,并使用复制活动将数据存储在 Azure 容器中(链接服务到 ADLS gen2)。有什么方法可以保存/写入复制活动中 blob 容器的元数据或使用 ADF 中的其他活动?如果 api 调用成功并且文件保存到容器时,我需要将管道的开始时间作为元数据写入 blob 容器。

感谢和问候, 凯萨万。

【问题讨论】:

  • 嗨@Kesavan,如果我在答案中理解错误,请纠正我。

标签: azure azure-data-factory


【解决方案1】:

我认为我们应该使用 Azure Function activity 来做到这一点。

大体流程应该是这样的:

  1. 正如我们所知,我们可以获取正在运行的管道的一些属性。我们可以在 ADF 中看到 Copy 活动的输出。 start 属性是活动的开始时间,我们可以通过@{activity('<Activity_Name>').output.executionDetails[0].start} 获取。

  2. 然后我们可以使用 Azure 函数活动,并通过 Headers 或 body(POST 请求)将值传递给后端函数。

3.首先,我们需要创建一个C# function。我们可以在 HTTP 请求中解析 Heards 或 body(POST 请求)的参数。根据Manage blob properties and metadata with .NET,我们可以使用BlobClient类的SetMetadataAsync方法来设置Bolb元数据。

伪代码如下:

public static async Task AddBlobMetadataAsync(BlobClient blob)
{
    Console.WriteLine("Adding blob metadata...");

    try
    {
        IDictionary<string, string> metadata =
           new Dictionary<string, string>();

        // Add metadata to the dictionary by calling the Add method
        metadata.Add("startTime", startTime);


        // Set the blob's metadata.
        await blob.SetMetadataAsync(metadata);
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine($"HTTP error code {e.Status}: {e.ErrorCode}");
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

BlobClient Class

【讨论】:

    【解决方案2】:

    现在有一种更好的方法可以做到这一点(在提出这个问题时不可用):

    【讨论】:

    • 我应该提一下,您还可以使用 Azure Function 或 Azure Blob REST API,但不再需要了。
    • 这非常有用,但是如果您有更多文件并且需要一些额外的逻辑来决定元数据属性的值应该是什么,那么应该使用 Azure 函数吗?
    • 可以使用动态内容来指定键名和值。但看起来您必须预先指定您将拥有多少个键,然后您可以动态生成键名和值的值是什么。如果您尝试使用它变得非常复杂,那么可能是 Azure 函数或 REST API 需要执行设置的元数据,但我认为这个 ADF 原生功能应该在 90% 的情况下工作。
    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2020-09-15
    • 2020-08-14
    • 2015-05-06
    • 2021-01-15
    • 2021-06-13
    • 1970-01-01
    相关资源
    最近更新 更多