adls 中包含 200 列的 csv 文件。仅从配置表中获取列列表。配置表位于 Azure SQL 中。配置表只有 10 个列名

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

adls 中包含 200 列的 csv 文件。仅从配置表中获取列的列表。配置表位于 Azure SQL.config 表中只有 10 个列名。如何在Azure datafactory中创建具有此场景的管道?

创建了一个查找活动以从 Azure SQL 配置表中获取列名称。 添加了 ForEach 活动来迭代列名称。 在 ForEach 活动中,创建了一个变量来存储当前列名称。 添加了复制活动以根据当前列名称过滤 CSV 文件。 它不起作用。

azure-data-factory
1个回答
0
投票

您可以使用数据流活动将所需的 10 列从 200 列 CSV 文件复制到 Azure SQL 表。根据您的要求,请按照以下步骤操作:

  1. 使用“查找”活动使用以下查询列出名为 Config 的 SQL 表的列,以逗号分隔:
SELECT STRING_AGG(COLUMN_NAME, ',') AS ColumnNames
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Config';

这将产生如下所示的输出:

enter image description here

  1. 创建数据流如下:

    • 添加包含 200 列的 ADLS 文件作为源。
    • 将选择活动添加到源的选择转换中。
    • 单击
      Rule-based mapping
      选择
      +Add mapping
      选项。
    • 转到表达式生成器,创建一个字符串参数
      columnlist
      ,然后使用下面的表达式从文件中选择所需的列:
contains(split($columnlist,','), #item==name)

enter image description here

  • 将 Sink 转换添加到 Select 转换中,并选择 SQL 表作为 Sink 数据集。
  • 发布数据流。
  • 将 Dataflow 活动添加到 Lookup 活动,选择上面的 Dataflow,并将 Lookup 输出传递给之前创建的参数
    columnlist
    。选择
    pipeline expression
    选项并使用下面的动态表达式:
@activity('Lookup1').output.firstRow.ColumnNames

enter image description here

  1. 调试管道。所需列的数据将成功复制到SQL表中,如下所示:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.