Azure
ETL
AzureDataFactory
AzureSQLDatabase

Azure Data Factory 使って CSV データを SQL Database にインポート

More than 1 year has passed since last update.

目的

私は SQL Server に慣れ親しんでいたので、普通に SQL Server Integration Services (以降、SSIS) を躊躇なく採用していました。
しかし、いざスタートアップで採用してみると、、、

  • SSIS で ETL 開発したことがない
  • てか、SSIS って何?
  • え! Visual Studio いるの?
  • え! Windows 環境でしか開発できないの?
  • え! ライセンス費用、こんなにかかるの!!!

という具合になる確率が非常に高いことを痛感しました。
できるだけ低コストで、でもちゃんとサポート受けられる製品・サービスのひとつとして、Microsoft Azure Data Factory で SSIS に変わる ETL 開発を実現できるかを検証してみました。

参考

Copy data from Blob Storage to SQL Database using Data Factory

準備

  • Microsoft Azure サブスクリプション
    • 一部の MSDN サブスクリプションお持ちの方は、MSDN サブスクリプション特典で Azure をアクティブかできるはずです
    • Visual Studio Dev Essentials にサインアップすれば、1年間毎月 $25 分の Azure を利用できます
  • Blob ストレージ アカウントを作成してアカウント名とアクセス キーをメモ
    • コンテナーも作成しておきます
  • SQL Database (空のデータベース) を作成して、ユーザー名とパスワードをメモ
    • 作成する時、Azure サービスからのアクセスを許可しておきます
  • 適当な CSV ファイルを作成
emp.csv
John, Doe
Jane, Doe
  • 作成した CSV を先に作成した Blob ストレージにアップロード

    • 本家チュートリアルでは、Azure Storage Explore を使用していますが、Azure Portal からでもアップロードできます。 スクリーンショット 2016-12-08 11.54.53.png
  • SQL Database に作成するテーブルの DDL を作成

emp.sql
 CREATE TABLE dbo.emp
 (
     ID int IDENTITY(1,1) NOT NULL,
     FirstName varchar(50),
     LastName varchar(50),
 )
 GO

 CREATE CLUSTERED INDEX IX_emp_ID ON dbo.emp (ID);

できたら、Visual Studio Code で Azure SQL Database に接続して、テーブル作成します。
※ Visual Studio Code で SQL Server に接続する手順はここを参考に接続してみてください。

Data Factory 作成

Azure ポータルで Data Factory を検索して、ウィザードに従って作成します。(詳細は割愛します)
作成したのち、ポータルで Data Facroty を開き、データをコピー (プレビュー)をクリックします。
スクリーンショット 2016-12-08 13.07.05.png

別な画面が開きます。Task name他、入力項目・選択項目は、ここでは既定のものを使用しますので、そのままNextをクリックします。
スクリーンショット 2016-12-08 13.22.08.png

Azure Blob Storageを選択し、Nextをクリックします。
スクリーンショット 2016-12-08 13.22.30.png

Connection nameは自動で入力されているものを使用します。Storage account nameは、CSV ファイルを格納しているものを選択し、Nextをクリックします。
スクリーンショット 2016-12-08 13.22.52.png

emp.csvファイルを選択し、Chooseをクリックします。
スクリーンショット 2016-12-08 13.23.47.png

選択したフォルダー名およびファイル名を確認し、Nextをクリックします。
スクリーンショット 2016-12-08 13.24.01.png

CSV ファイル フォーマットを確認し、下の方にあるプレビューで意図した形で認識しているかを確認したのち、Nextをクリックします。
スクリーンショット 2016-12-08 13.24.33.png

取り込み先の設定でAzure SQL Databaseを選択し、Nextをクリックします。
スクリーンショット 2016-12-08 13.24.54.png

Connection nameは自動入力されたものを使用します。SQL Database Server およびデータベースを選択し、User namePasswordを入力したのち、Nextをクリックします。
スクリーンショット 2016-12-08 13.25.20.png

取り込み先テーブル (先に作成した emp テーブル) を選択し、Nextをクリックします。
スクリーンショット 2016-12-08 13.25.48.png

CSV の列とテーブルの列のマッピングを確認し、問題なければNextをクリックします。
スクリーンショット 2016-12-08 13.26.07.png

ここの項目は、今回は特に設定しませんので、Nextをクリックします。
スクリーンショット 2016-12-08 13.26.22.png

サマリーを確認し、Finishをクリックすると、デプロイ開始となります。
スクリーンショット 2016-12-08 13.26.34.png

デプロイを開始したことを確認し、しばらく待ちます。
スクリーンショット 2016-12-08 13.26.48.png

取り込み完了したのち、Click here ...をクリックしてみましょう。
スクリーンショット 2016-12-08 13.27.06.png

画面中央上ほどで歯車がぐるぐる回っているかと思います。取り込んでいる最中です。
スクリーンショット 2016-12-08 13.27.32.png

取り込み完了したら、SQL Database にクエリしてみます。
スクリーンショット 2016-12-08 13.31.59.png

そうすると、ちゃんとデータが取り込まれていることを確認しました。ID 列は自動採番ですね。

感想

簡単なデータコピーであれば、そこまで難しくないと思います。
ちょっとデータ整形を必要とするものも Azure Data Factory ではできるはずなので、引き続き自分なりにまとめ見ようと思います。