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
我尝试过这样的事情。
从 SQL 表中,将所有已处理的文件作为逗号分隔值,用作select STRING_AGG(processedfile, ',')查找活动中的文件
使用 split 函数将逗号分隔值分配给数组变量(测试)
@split(activity('Lookup1').output.value[0]['files'],',')
用于获取目录中当前文件的元数据活动
过滤活动,根据已处理的文件过滤当前目录中的文件
项目:
@activity('Get Metadata1').output.childitems
Run Code Online (Sandbox Code Playgroud)
健康)状况:
@not(contains(variables('test'),item().name))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15896 次 |
| 最近记录: |