【问题标题】:Issue with Filtering data With Filter Activity in Azure Data Factory在 Azure 数据工厂中使用筛选器活动筛选数据的问题
【发布时间】:2021-12-03 08:09:15
【问题描述】:

我正在尝试使用过滤器活动过滤以下文件夹,并仅从整个 blob 容器中选择最新日期。

文件夹名称示例:2020-04-21、2021-08-11、2020-01-07

我需要选择2021-08-11

我正在使用 Get metadata (ChildItems) 活动来获取文件夹名称,并使用以下逻辑在过滤器活动中过滤它们。

@greater(max(array(int(replace(item().name, '-', '')))),0)

但是在过滤之后,我得到了所有文件夹。 我知道我的逻辑有问题,但我是 ADF 的初学者

【问题讨论】:

    标签: azure-pipelines etl azure-data-factory


    【解决方案1】:

    您可以首先获取元数据以获取完整的文件夹列表,使用 ForEach 查找最新的文件夹并将文件夹名称分配给变量,最后使用变量复制数据,该变量现在存储您的最新文件夹名称。

    父管道:

    GetMetadata 的输出:

    ForEach 中使用的动态内容:@activity('Get Metadata1').output.childItems

    forEach 仅包含 1 个 if 条件活动:

    使用的表达方式与您的相似:@greater(int(replace(item().name, '-', '')), int(replace(variables('latestFolder'),'-','')))

    在真正的情况下,只有变量赋值:

    最后使用变量,它现在包含最新文件夹的文件夹名称,在 复制活动:

    【讨论】:

    • 我知道你在那里做了什么,似乎它应该可以工作。但有些东西导致管道失败。这是截图ibb.co/NCjbNJH
    • 这是一个相当模糊的例外。您能否通过编辑您的问题向我们展示它在 ADF 中的位置? (即哪个活动抛出此异常)
    • 查看监控选项卡,你会得到详细的异常信息。我想这与表达式有关。
    • 我一开始调试就会抛出异常。所以即使在管道运行开始之前ibb.co/b3kX7sL
    • 您可能希望删除一些块并首先从简单开始以隔离有问题的部分。另外,请使用您当前使用的表达式更新您的问题,最好是每个活动块中的设置/表达式。
    猜你喜欢
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 2022-10-24
    • 2020-03-11
    • 1970-01-01
    • 2022-08-25
    相关资源
    最近更新 更多