如何用多级SQL语句编写ADF动态表达式

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

我正在尝试为过滤器活动编写 ADF 动态内容,其中我需要过滤文件,其名称中包含日期,来自通过多个条件获取元数据活动。我正在编写一个 SQL 查询,它使用

WHERE
条件下的活动输出,然后提供 DATE 作为输出。然后我只需要选择名称中的日期大于或等于 SQL 查询的输出 DATE 的文件。

再次满足上述条件的文件我需要确保它们的扩展名是

.csv
.zip

我正在为此编写动态内容,但它会导致错误。我不明白如何正确地写它。

我试着写这个

@and(or(endswith(item().name,'.zip'),endswith(item().name,'.csv')),
greaterOrEquals(formatDateTime(substring(item().name,6,10),'yyyy-MM-dd'),
formatDateTime(
select last_success_run_Date from dbo.ADF_Control_Table 
where FileName = '@{substring(replace(item().name,".zip",""),17, sub(length(item().name), 21))}',
'yyyy-MM-dd'
)))

sql-server azure-data-factory expression oracle-adf
1个回答
0
投票

我假设在您过滤文件的活动中(可能是内部带有 If 条件的 ForEach 活动),您需要使用其输出。

您可以使用变量last_success_run_Date作为变量或先前活动的输出:

@and(
    or(
        endswith(item().name, '.zip'), 
        endswith(item().name, '.csv')
    ),
    greaterOrEquals(
        formatDateTime(substring(item().name, 6, 10), 'yyyy-MM-dd'),
        formatDateTime(variables('lastSuccessRunDate'), 'yyyy-MM-dd')
    )
)
© www.soinside.com 2019 - 2024. All rights reserved.