Azure数据工厂:从postgresql数据库复制数据(或数据流)

时间:2019-07-04 11:35:05

标签: azure azure-data-factory

关于Azure数据工厂,我有些失落。

我的目标是从我们公司的postgresql数据库中检索数据,并将其转换为Azure SQL数据库(以后可以由Power BI访问)。

我创建了一个管道,并尝试将“数据流”用作活动。但是,我不能选择我的postgresql数据库作为那里的源。有效的来源例如是其他Azure SQL数据库。

因此,我尝试执行“复制数据”活动,以将数据从Postgresql数据库复制到Azure SQL database (1),然后使用“数据流”将数据转换为Azure SQL database (2)(具有不同的表格结构)。

这是一种好方法吗?

此方法存在两个问题:

  • 我无法从源Postgresql数据集中选择多个表(从目标数据集Azure SQL database (1)中都不能选择)。 Azure使我可以选择一个表或“无”。如果我要创建几个具有不同表的数据集,则可以解决此问题,但这似乎是错误的,并不可行。
  • 我不确定如果Azure SQL database (1)中已经存在数据将会发生什么。在“数据流”活动中,我可以选择“允许插入”,“允许更新”或其他键列。在“复制数据”活动中,我没有这个机会。

有人可以引导我朝正确的方向吗?

1 个答案:

答案 0 :(得分:2)

有三种方法可以处理转换:

  1. 在数据源端 您可以将逻辑放入存储过程(不确定使用postgresql是否可行)或直接放入sql查询。然后仅获取结果表。

    • 较少的网络流量
    • 更多的源负载,也许不允许
  2. 在数据工厂集成运行时上进行处理 这将是数据流的选项。在这里,将表复制到集成运行时,然后进行处理,然后将结果复制到接收器。 由于这是一个安静的新选项,因此没有很多连接可用。您可能需要先解决将数据复制到ASQL Server的问题。

    • 可能较慢,具体取决于资源的大小
    • 易于构建的逻辑/可视界面
  3. 在接收器上处理 将原始数据复制到ASQL Server并在其中运行查询或存储过程。

    • 最大的灵活性,因为如果需要更多资源,您可以调整ASQL的大小
    • 快速处理
    • 如果可以进行增量摄取和处理(进行向上插入/合并),则更加灵活
    • 大量维护

这三个都是有效的选项,并且完全取决于您的用例和要求(关于操作,SLA,...)

关于选择多个表的问题: 您将需要分别处理每个表,但是如果它们都遵循相同的逻辑,则可以创建水印表,在其中查找所有表名并在复制模块上循环。这样,您只有一个管道可以按顺序复制所有表。

关于当前数据: 复制仅插入数据。如果要首先截断该表,则可以将其添加为“预复制脚本”。

如果我忘记了任何内容,请发表评论,我将相应地更新帖子