Azure Data Factoryで構築するデータパイプライン&DWH 01

目的

本記事の目的は、 Azure Data Factory を使って(というようりかは、 Azure を使って)データパイプライン&DWHを構築してみる。というような内容になっている。

この記事の対象ユーザー

  • Azure を使ってのデータパイプライン&DWH構築を考えている人
  • ビジネスでありながら、技術的なことを少し深堀したいと考えている人
  • Azure Data Factory の概要を掴みたいと考えている人
  • その他、 Azure Data Facotry に興味がある人など

前提条件

Azureの以下のプロダクトを使用して、データパイプライン&DWHを構築することとする。

  • Azure Data Factory(以下、ADF)
  • Azure Data Lake Storage Gen2(以下、ADLS)
  • Azure Synapse Analytics(以下、Synapse)
  • Azure Key Vault(以下、Key Vault)
  • Azure DevOps(以下、DevOps)

また、上記のそれぞれのサービスはすでに用意されているものとし、 ADF を作成するところからとする。

ざっくりとしたユーザーストーリー

  • 外部のSFTPサーバーにあるデータを、GETしなければならない
  • データ型式は、CSV(UTF-8)で、差分ファイルが日々SFTPサーバにアップされる
  • データパイプラインの方式としては ELT を採用し、 E については ADFLT については、 Synapse とする

ざっくりとした構成図

ざっくりとした構成図
  1. 外部SFTPサーバから、ADFでデータ(差分)をGETし、 ADLS へインポートする
  2. ADLS にインポートしたデータを Synapse へインポートする
  3. SynapseSTORED PROCEDURE もしくは ADFのLook up activity でデータをトランスフォームし、DWHとしての中間テーブルを作成する

というような、ざっくりとした流れになります。
以下、詳細を説明していきます。

ADFの作成

ADFのページに遷移する
追加を押下する
基本項目を入力します

インスタンスの場所は 東日本 、Versionは V2 とします。

ADF と連携する DevOps のリポジトリは、ADF画面に入ってから設定します。

内容に問題なければ、作成を押下します
ADFのデプロイが完了するのを数秒待ちます
デプロイが完了しました

ADFとDevOpsを接続する

ADFとDevOpsを接続します。
ADFはDevOpsと接続することで、ソースコード管理が行えるようになります。

Author & Monitorを押下する
ADFに遷移したら、鉛筆マークを押下する
Set up code repositoryを押下する
DevOpsのリポジトリと連携する
ワーキングブランチを選択し、Saveを押下する

Save という表現がわかりにくいですが、何かを保存しているというわけではなく、機能的には OK と同義だと思います。UX的にはわかりにくく、混乱を招く表現ですが、気にせず Save をします。
これで、ADFでの開発準備が整いました。

ADFとDevOpsのブランチ戦略について

ADFとDevOpsのブランチ戦略についてですが、ADFにはパブリッシュという作業がある関係上、通常のブランチ戦略とはまた違った戦略が必要になってくると思われます。
各事業者によって考え方は違うと思いますが、概ね A successful Git branching model のブランチルールにしたがっていれば問題ないと思いますので割愛します。
各現場にあった戦略を立てていただければと思います。

ADFの設定

Connectionsの設定

Key Vaultの設定

Manage -> Linked services -> Newを押下
keyと検索して「Azure Key Vault」を押下して続ける

Storageの設定

Key Vaultと同じ手順で、 New linked serviceを設定する

Synapseの設定

synapseを検索

SFTPサーバの設定

Triggersの設定


本記事では、ADFを用意して、各サービス(SFTPサーバ、Storage、Synapse)と接続するところまでを解説しました。
次回は、パイプラインを作ってデバッグ処理を行い、Publishするまでを行いたいと思います。

Kenichiro Yamashita

https://www.facebook.com/kenichiro.yamashita1 https://qiita.com/fbp-yamashita