是否可以使用具有 SSIS 的 ETL 将数据上传到 Azure 数据仓库?



我有一个本地SAP数据库,我想每天将其中一些数据(SAP数据库中的一些表(推送到Azure。数据将使用合并策略上传(如果检测到更改则更新,如果缺少记录则删除,否则插入(。我正在考虑使用以下设置来执行此操作:

- Install on premise integration Services (SSIS). The client already has license for this.
- Install SAP connector on premise.
- Pull data from SAP into text files (on premise, into multiple CSV files) (create  ETL's for this).
- Push those files into a Blob Storage (via AzCopy), so I create a job or process somehow locally that will handle newly created files.
- Load data into Data Warehouse using PolyBase (https://learn.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-get-started-load-with-polybase) using an UP-SERT strategy. 

这肯定会起作用,但我想知道是否可以使用 ETL(使用 SSIS 包(直接上传该数据,基本上跳过这些步骤:

  1. 将普通文件保存到本地磁盘上。
  2. 将它们推送到 Azure Blob 存储。
  3. 使用虚拟表从文件加载数据,覆盖上传的文件。

我的担忧是: -性能 -成本

你认为最好的方法是什么?

谢谢!

可以使用SQL Server Integration Services (SSIS( 通过 Azure SQL DW Upload Task(集成服务的 Azure Feature Pack 的一部分(将数据加载到 Azure SQL 数据仓库。 此任务从本地文件共享获取文件,并在后台使用 Polybase 将它们加载到仓库表中。 使用此方法,无需将文件显式推送到 Blob 存储或使用 AzCopy。 此设计如下所示:

SAP>平面文件> SQL DW 上传任务

您还可以使用数据流任务将数据直接加载到仓库表,但过去性能非常慢。 我认为这种设计的优点是您不必将文件提取到平面文件中。 我最近没有尝试过这个,因为推荐的方法是Polybase。 此设计如下所示:

SAP> Azure SQL 数据仓库(使用数据流任务(

要考虑的另一种方法是 Azure 数据工厂,它现在具有 SAP 连接(对于某些产品(。 需要一个网关来简化从本地到 Azure 的复制。 ADF 可能更具可扩展性,但如果您以前没有使用过它,则存在一些学习曲线。

最新更新