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

时间:2017-07-13 07:09:24

标签: performance azure ssis azure-sql-database data-warehouse

我有一个内部部署的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://docs.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. 使用虚拟表在上传的文件中加载文件中的数据。
  4. 我的担忧是: - 表现 - 费用

    您认为最好的方式是什么?

    谢谢!

1 个答案:

答案 0 :(得分:4)

可以使用SQL Server Integration Services(SSIS)通过Azure SQL DW Upload Task中的Azure Feature Pack for Integration Services将数据加载到Azure SQL数据仓库。此任务从本地文件共享获取文件,并在后台使用Polybase将它们加载到仓库表。使用此方法,您不必将文件显式推送到Blob存储或使用AzCopy。这个设计看起来像:

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

您还可以使用Dataflow任务将数据直接加载到仓库表,但历史上性能非常慢。我想这个设计的优点是你不必将文件解压缩到平面文件。我最近没有尝试过,因为推荐的方法是Polybase。这个设计看起来像:

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

另一种需要考虑的方法是Azure数据工厂,它现在具有SAP连接(对于某些产品)。您需要一个网关来促进从内部部署到Azure的复制。 ADF可能具有更大的可扩展性,但如果您之前没有使用它,则会有一些学习曲线。