Azure Data Factory(ADF)にデータのコピーツールがあります。これを利用することにより簡単かつ高速(Polybaseベース)にSynapse SQLプールにデータが投入できるようなので試してみました。
今回はAzure PortalからADFを使って、データ投入してみます。
#Azure Data Factoryの作成
①まずはAzure Data Factoryを作成します。
Azure Portalにログインし、+リソース作成
を選択します。
「新規」画面になりましたら、分析
カテゴリを選択し、すべて表示
を選択します。
②Marketplace画面のデータインサイト
のカテゴリにあるData Factoryを選択します。
③作成
を選択してData Factoryの作成画面を起動します。
④ADFを作成していきます。
-
サブスクリプション
、リソースグループ
はADFが起動するサブスクリプションを指定してください。 -
リージョン
は東日本を指定しました。 -
Name
は任意の値を入れてください。またグローバルで一意となる名前の指定が必要です。 -
Version
最新のV2を指定してください。
⑤Gitの設定は今回は不要な為、Configure Git later
のチェックボックスにチェックを入れます。
⑥作成を押せば作成が始まります。
⑦ADF作成が完了しました。
#パイプラインの作成
①Data Factoryが出来たらパイプラインの作成を行います。
作成したData Factory
のページからAuthor & Monitor
を選択します。
②Let's get started
のページで「Copy data」を選択します。
③Properties
ページでタスク名を入力します。今回はCopyFromBlobToSynapseSQL
を入力しました。
④入力元のデータ(Source data store)を設定します。まだ何も作成していないので何も表示されていません。+Create new connection
を選択します。
⑤New linked Service
でAzure Data Lake Storage Gen2
を選択
Blobへアクセスするための必要な情報を入力し、Create
を押します。
⑥作成したリンクサービスを選択し、Next
を押します。
⑦Choose the input file or folder
では投入したいBlob上のファイルを選択します。今回はtpch/sc1/lineitem.tbl
というファイルを選択しています。
⑧File format settings
ではファイルに対する様々なフォーマットの指定が可能です。デリミタ(Column delimiter)や改行文字(Row delimiter)などを指定します。また、先頭行をヘッダーとして扱いたい場合、First row as header
のチェックボックスにチェックを入れます。画面の下にはプレビューが見えています。
⑨次にデータを入れるSynapse SQLプールを指定します。まだ、接続情報などを入力していないので、Create new connection
にて作成を行います。
⑩Synapse SQLプールへ必要な接続情報を入れていきます。
この時にSynapse SQLプールへの接続がうまくいかない場合にはSynapse SQLプール側の「ファイアウォールと仮想ネットワーク」の設定で「Azureおよびリソースにこのサーバーへのアクセスが許可する」が「はい」を設定されているか確認してみてください。
⑪作成したリンクサービスを選択しNext
を押します。
⑫データをロードするSynapse SQLプール上のテーブルを指定します。dbo.LINEITEM
というテーブルを指定しています。
⑬入力テーブルとテーブルのフォーマットよりADFが自動でマッピングを行ってくれます。問題無いかを確認しNext
を押します。
⑭Setting
の画面になりましたら、Copy method
がPolybase
であることを確認してください。また、Synapse SQLプールへPolybaseを行う場合、ステージングとして利用するBlobストレージが必要です。リンクサービスの作成は先ほどのBlobストレージのリンクサービスの作成の方法と同じなので割愛しますが、今回はStagingLinkedService
という名前のリンクサービスを使用しています。
⑮確認画面です。Next
を押します。
⑯パイプラインのデプロイが完了したらMonitor
を押してパイプラインの走行状況を確認します。
#パイプラインの走行状況の確認
①Monitor
→Pipelines runs
から作成したパイプラインの確認が可能です。作成したパイプラインを押下します。
②走行状況はActivity runs
のメガネマーク(Detailes)を押下するとより詳細が確認出来ます。
③読み込んだ件数やSynapse SQLプールへロードした件数などもここで確認することは可能です。
④念の為Synapse SQLプールでもデータを確認しましたが、ちゃんと入っているようです。
#最後に
Synapse SQLプールにADFを使うと簡単にPolybaseでデータロードできるのかと思ったのですが、意外と手番が多かったです。