Azure 数据工厂 - 将未知数量的文件复制到相应的表中

Azure Data Factory - copy unknown number of files into corresponding tables

我正在尝试将未知数量的文件复制到数据库 tables 中。 假设我有两个名为 1 和 2 的文件,我想将它们复制到名为 A 和 B 的 table 中。

1 - A
2 - B

我已经通过创建映射来做到这一点 table

|SourceFileName|TargetTableName|
|1             |A              |
|2             |B              |

当两个文件都存在时,我能够完成该任务,但有时只有一个文件存在。在那种情况下,我的 ForEach 循环失败了,我希望它仍然通过并转到下一个任务。

现在我有 Get Metadata 将 Childitems 传递给 ForEach 循环,在该循环内我有一个基于映射 table 的查找和基于该查找的 Copy activity @activity('lookup').output.value[0].TargetTableName

您可以参数化查找查询以根据源文件获取单个table名称并传递输出复制 activity 以加载数据的查找。

这将根据来自 Get Metadata 输出的输入文件(1 个或多个)的数量循环 Foreach activity。

映射table(查找table):

获取元数据的输出activity:

  • Foreach循环中-->Lookupactivity,参数化查询根据源文件名获取 table 名称。

    @concat('SELECT top 1 [TableName] FROM [dbo].[MappingTable] where Filename = ''', string(item().name), '''')
    

查找的输出activity:

  • Copy dataactivity中,将当前Foreach文件项作为Source.

  • Copy data activitySink中,通过查找activity输出内容动态传递Table名称。

    @activity('Lookup1').output.firstRow.TableName
    

  • Foreach 循环内容循环基于获取元数据输出 个文件。

  • 当多个输入文件时: