azure - 从 azure blob 插入数据,并根据 blob 的名称插入到 Azure 数据工厂中的某个表中

标签 azure azure-data-factory

所以基本上我的问题是这样的,我将使用元数据从 azure 的存储帐户中的源文件夹中获取文件的名称。我需要解析该名称并将其插入到相应的表中。下面的例子。

文件名将采用这种格式。 customer_GUIID_TypeOfData_其他信息.csv 即 1c56d6s4s33s4_Sales_09112021.csv 156468a5s5s54_Inventory_08022021.csv

所以这是 2 个不同的客户和两种不同类型的信息。

SQL 中的表将与没有日期的表完全相同。 156468a5s5s54_库存或1c56d6s4s33s4_销售
如何根据文件名将数据从 CSV 复制到相应的表?我还需要使用 AZURE 数据工厂根据文件数据集中的唯一标识符插入或更新目标表中的现有行。

最佳答案

使用获取元数据事件获取文件名,并使用启用Upsert的Dataflow事件将数据从CSV复制到Azure SQL表。

输入 blob 文件:

enter image description here

第 1 步:

• 创建分隔符源数据集。为文件名创建一个参数以动态传递它。

• 创建Azure SQL 数据库接收器数据集并创建参数以动态传递表名称。

源数据集:

enter image description here

接收器数据集:

enter image description here

第 2 步:

• 将源数据集连接到“获取元数据”事件,并传递“*.csv”作为文件名,以获取 blob 文件夹中所有文件名的列表。

enter image description here

获取元数据的输出:

enter image description here

第三步:

• 将Get Metadata 事件的输出连接到ForEach 循环,以将所有传入的源文件/数据加载到Sink。

• 向项目添加表达式以从之前的事件中获取子项目。

@activity('Get Metadata1').output.childitems

enter image description here

第四步:

• 在 foreach 循环内添加 dataflow 事件。

• 将源连接到源数据集。

数据流来源:

enter image description here

第五步:

• 将接收器连接到接收器数据集。

enter image description here

• 如果基于唯一键列存在记录,则启用允许更新插入进行更新。

enter image description here

第六步:

• 在源和接收器之间添加 AlterRow 以添加更新插入条件。

• 当唯一键列不为空或找到时更新插入

Upsert if: isNull(id)==false()

enter image description here

第七步:

• 在ForEach 循环中,数据流 设置中,动态添加源文件名和接收器表名称的表达式。

Src_file_name: @item().name

• 当我们从源文件名中提取接收器表名称时。根据下划线“_”拆分文件名,然后组合第 1 2 个字符串以消除日期部分。

Sink_tbname: @concat(split(item().name, '_')[0],'_',split(item().name, '_')[1])

enter image description here

第8步:

当管道运行时,您可以看到循环执行了 blob 中的源文件数量,并根据文件名将数据加载到各个表中。

enter image description here

关于azure - 从 azure blob 插入数据,并根据 blob 的名称插入到 Azure 数据工厂中的某个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69144723/

相关文章:

Azure:无法将字节发送到 XContainer wad-tracefiles

Azure 数据工厂数据流任务无法将本地作为源

azure - 如何在 Azure 数据工厂中定义表

azure - ForEach 事件如何在数据工厂中宣告成功?

azure - 应用程序中心未跟踪的事件

Azure表存储设计问题: Is it a good idea to use 1 table to store multiple types?

javascript - React应用程序未在azure应用程序服务中启动

c# - 在 documentDb 中动态创建查询

SQL Server 约束强制执行在瞬间被违反

azure - 如何在复制数据映射中包含 blob 元数据