目的
私は 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 ファイルを作成
John, Doe
Jane, Doe
-
作成した CSV を先に作成した Blob ストレージにアップロード
-
SQL Database に作成するテーブルの DDL を作成
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 を開き、データをコピー (プレビュー)
をクリックします。
別な画面が開きます。Task name
他、入力項目・選択項目は、ここでは既定のものを使用しますので、そのままNext
をクリックします。
Azure Blob Storage
を選択し、Next
をクリックします。
Connection name
は自動で入力されているものを使用します。Storage account name
は、CSV ファイルを格納しているものを選択し、Next
をクリックします。
emp.csv
ファイルを選択し、Choose
をクリックします。
選択したフォルダー名およびファイル名を確認し、Next
をクリックします。
CSV ファイル フォーマットを確認し、下の方にあるプレビューで意図した形で認識しているかを確認したのち、Next
をクリックします。
取り込み先の設定でAzure SQL Database
を選択し、Next
をクリックします。
Connection name
は自動入力されたものを使用します。SQL Database Server およびデータベースを選択し、User name
とPassword
を入力したのち、Next
をクリックします。
取り込み先テーブル (先に作成した emp テーブル) を選択し、Next
をクリックします。
CSV の列とテーブルの列のマッピングを確認し、問題なければNext
をクリックします。
ここの項目は、今回は特に設定しませんので、Next
をクリックします。
サマリーを確認し、Finish
をクリックすると、デプロイ開始となります。
取り込み完了したのち、Click here ...
をクリックしてみましょう。
画面中央上ほどで歯車がぐるぐる回っているかと思います。取り込んでいる最中です。
取り込み完了したら、SQL Database にクエリしてみます。
そうすると、ちゃんとデータが取り込まれていることを確認しました。ID 列は自動採番ですね。
感想
簡単なデータコピーであれば、そこまで難しくないと思います。
ちょっとデータ整形を必要とするものも Azure Data Factory ではできるはずなので、引き続き自分なりにまとめ見ようと思います。