检查数组是否包含 Azure 数据工厂中的值

Sau*_*hta 5 azure-data-factory

我需要使用 Azure Datafactory 处理容器中的文件,并在下次执行时跟踪已处理的文件。

所以我在数据库中保留一个表来存储已处理的文件信息,在ADF中我获取已处理文件的文件名,我想检查当前文件是否已被处理。

我正在使用查找活动:获取所有已处理的文件 ,通过使用以下查询从数据库获取已处理的文件:

select FileName from meta.Processed_Files;
Run Code Online (Sandbox Code Playgroud)

然后我遍历目录,并使用获取元数据活动获取目录中当前文件的文件详细信息:“获取迭代中当前文件的详细信息”

在 If Condition 活动中,我使用以下表达式:

@not(contains(activity('Get All Files Processed').output.value,activity('Get Detail of current file in iteration').output.itemName))
Run Code Online (Sandbox Code Playgroud)

即使文件已被处理,这也始终返回 True

我们如何比较返回值中的文件名

活动的输出('获取已处理的所有文件').output.value

{
"count": 37,
"value": [
    {
        "FileName": "20210804074153AlteryxRunStats.xlsx"
    },
    {
        "FileName": "20210805074129AlteryxRunStats.xlsx"
    },
    {
        "FileName": "20210806074152AlteryxRunStats.xlsx"
    },
    {
        "FileName": "20210809074143AlteryxRunStats.xlsx"
    },
    {
        "FileName": "20210809074316AlteryxRunStats.xlsx"
    },
    {
        "FileName": "20210810074135AlteryxRunStats.xlsx"
    },
    {
        "FileName": "20210811074306AlteryxRunStats.xlsx"
    },
Run Code Online (Sandbox Code Playgroud)

活动的输出('在迭代中获取当前文件的详细信息').output.itemName

"20210804074153AlteryxRunStats.xlsx"
Run Code Online (Sandbox Code Playgroud)

小智 0

我尝试过这样的事情。

  1. 从 SQL 表中,将所有已处理的文件作为逗号分隔值,用作select STRING_AGG(processedfile, ',')查找活动中的文件

  2. 使用 split 函数将逗号分隔值分配给数组变量(测试) @split(activity('Lookup1').output.value[0]['files'],',')

  3. 用于获取目录中当前文件的元数据活动

  4. 过滤活动,根据已处理的文件过滤当前目录中的文件

项目:

@activity('Get Metadata1').output.childitems
Run Code Online (Sandbox Code Playgroud)

健康)状况:

@not(contains(variables('test'),item().name))
Run Code Online (Sandbox Code Playgroud)