创建一个 ADF 删除活动表达式,如果目标文件夹不存在则不执行任何操作

问题描述 投票:0回答:1

我有一个源文件夹,已上传到 ADLS 容器中的“load”目录。我使用表达式

@concat(item().container, '/load/', activity('Get Metadata1').output.childItems[0]['name'])
创建了一个 ADF 删除活动,该表达式获取“获取元数据”活动的输出。这运作良好,但如果另一天没有上传文件夹,则会失败,因为它无法在“加载”目录中找到该文件夹。

我尝试过的:

我修改了表达式以包含 if 语句

@if(not(equals(activity('Get Metadata1').output.childItems, '[]')), concat(item().layer, '/load/', activity('Get Metadata1').output.childItems[0]['name']), null )

但是我收到以下错误:

'表达式 'if(not(equals(activity('Get Metadata1').output.childItems, '[]')), concat(item().layer, '/load/', Activity('获取元数据1').output.childItems[0]['name']), null )' 无法计算,因为无法从空数组中选择数组索引 '0'。'

我有点困惑,因为我在表达式中包含了如果目标文件夹不存在它不应该执行任何操作(空)。我已尝试使用 ''、null 和 [] 代替 '[]',但仍然给出相同的错误。请注意,我无法使用 IF 条件活动,因为我已经在 ForEach 活动中的 IF 条件活动中工作。所以我只想对条件进行编码 请帮忙

azure-data-factory
1个回答
0
投票

尝试将所有当前活动的 if 条件置于“True”条件下,其中条件从“获取元数据”活动获取输入。将这个附加元数据活动配置为“存在”属性,如下面的 URL 中所述

https://azurelib.com/how-to-check-if-file-exist-in-azure-data-factory-adf/

这将使您的工作流程仅在预期位置有可用文件/文件夹时才能工作

© www.soinside.com 2019 - 2024. All rights reserved.