Qlik Replicate–Azure Synapseターゲットの利用
はじめに
このチュートリアルでは、MySQLのデータソースとAzure Synapseを対象に、Qlik Replicateを利用してリアルタイムにデータをレプリケートするための手順をご紹介します。
【検証環境】
- Qlik Replicate 6.6.0 SR2 on Windows
- MySQL Community Edition 5.7.18 on Windows
- Azure Synapse (Formerly SQL DW)
※Azureアカウントがある前提で本チュートリアルは記述されています。
※Azureの利用料金が発生します。実機検証の際は検証後に環境のクリーンアップをしていただくなど、コストの発生・増加には十分にご注意ください。
準備
ADLS Gen2の作成と設定
Azureポータルで[Storage accounts]を選択します。
[+Add]を選択します。
[Basic]タブの各項目を画像を参考に設定します。設定が完了したら[Next : Networking]を選択します。
- Resource group : 任意の名前を指定。ここでは、QDI_Synapse
- Storage account name : 任意の名前を指定。ここでは、qdisynapsedemo
- Account kind : StorageV2(general purpose v2)を選択
Connectivity methodに[Public endpoint ( all networks)]を指定します。
本チュートリアルでは、ネットワークはpublicに公開する設定としています。お手元で試される場合は、所属組織のポリシーやニーズに従って設定してください。
画面下部の[Next : ~]を二回クリックし、[Advanced]タブに移動します。
[Hierarchical namespace(階層型の名前空間)]をEnabled(有効)にします。その他の設定は既定のままとします。
左下の[Review + create]をクリックし、設定内容を確認して問題なければ[Create]を選択してStorage Accountを作成します。
これでStorage Accountの作成は完了です。(ストレージがデプロイされるまでに数分かかることがあります。)
Azure Active Directoryへのアプリ登録
続いて、Qlikデータ統合製品からAzure上のStorage AccountなどへのAPIアクセスを許可するためにAzure Active Directoryへのアプリ登録を行います。
Azureポータルで[Azure Active Directory]を選択します。
左側のメニューから[App registrations]を選択します。
続いて、[+ New registration]を選択します。
任意の名前を設定し、[Register]を選択して登録します(ここでは「QDISYNAPSEAPP」)。
ここで生成される”Application (client) ID” と “Directory (tenant) ID”を後ほどQlik Replicateからの接続パラメータとして使用しますので、テキストエディタなどにコピー&ペーストして保存してください。
左側のメニューから[API permissions]を選択します。
続いて、[+ Add permission]を選択します。
[Microsoft API]配下の[Azure Data Lake]を選択します。
[Delegated permissions]配下の[user_impersonation]にチェックを入れ、[Add permissions]を選択します。
左側メニューから[Certificates & secrets]を選択します。
続いて、[+ New client secret]を選択します。
Descriptionを空欄のまま、期限を[In 1 year]とし、[Add]を選択します。
直後に生成されるClient secretの[value]をテキストエディタなどにコピー&ペーストし安全な場所に保存してください。以降、このページを離れるとSecretのValueは二度と確認することができなくなりますので、必ず生成直後に保存してください。
ADLS Gen2のストレージアカウントの設定
作成したStorage Accountのページに移動し[Access key]を選択します。後ほどQlik Replicateの設定にこちらのKey1の[Key]を使用しますので控えておいてください。
続いてコンテナを作成します。左側メニューから[Containers]を選択し、[+ Container]を選択します。
右側に表示されるNew containerにて、任意のコンテナ名(ここでは「replicate」)を指定し、[Create]を選択してコンテナを作成します。
コンテナ一覧から、作成した[replicate]を選択します。
[+Add Directory]を選択します。
右側に表示されるメニューからディレクトリを作成します。Nameを「landing」とし、[Save]を選択します。
作成したreplicateコンテナのページからStorage account「qdisynapsedemo」のページに移動します。
[Access Control (IAM) ] を選択します。続いて[+Add]、[Add role assignment]の順に選択します。
画面右側に表示される設定メニューで以下の項目を設定し、[Save]を選択します。
- Role: Storage Blob Data Contributor
- Assign access to: User, group, or service principal
- Select: 先ほどADで登録したアプリ名を選択(ここでは「QDISYNAPSEAPP」)
Qlik ReplicateとAzure Synapseの設定
Microsoft SQL Server Native Client 11.0のインストール
Qlik ReplicateがインストールされているサーバーにMicrosoft SQL Server Native Client 11.0をインストールしてください。※ここでは手順を割愛します。
Microsoft® SQL Server® 2012 Native Client – QFE
Azure Synapse (formerly SQL DW) SQL Poolの作成
Azureポータルから[ Azure Synapse Analytics (formerly SQL DW) ]を選択します。
[+Add]を選択します。
[Basics]タブで以下のように設定します。
- Resource group : 作成したStorage Accountと同じグループを選択します。ここではQDI_Synapse
- SQL pool name : 任意のSQL pool (DWH)名を指定。ここでは「qdisynapsesqlpool」
- Server : [Create new]を選択し、右側に表示される画面でサーバーを作成
- Performance level : [Select performance level]から[DW100C]を選択
※Serverの作成方法:画像を参考に、パラメータを指定し[OK]を選択します。
- Server name : 任意のサーバー名。ここではqdisnapsevmとします。
- Server admin login : 任意のユーザー名。ここではshoとします。
- Password : 任意のログインパスワード。
- Location : 任意のサーバーロケーション。
※Performance levelの変更方法:右側の[Configure performance]でGen2配下のスライダーを動かし、[DW100c]に設定して[Apply]を選択します。
Basicタブの設定が完了したら、画面左下の[Next : Networking > ]を選択します。
[Networking]のタブで以下の設定を行い、[Review + create]を選択します。設定内容に問題が無ければ[Create]を選択し、SQL poolを作成します。
- Connectivity method : [Public endpoint] ※組織のポリシーにあわせて設定してください。
- Allow Azure services and resources to access this server : [Yes]
- Add current client IP address : [Yes]
SQL poolのDeployが完了したら[Go to resource]を選択してリソースの画面に移動します。
[Overview]ページの[Server name]を後ほどQlik Replicateからの接続に使用します。
Master Keyの作成
続いて、Storage AccountとSQL Poolを接続するためのMaster Keyを作成します。
前節で作成したSQL pool「qdisynapsesqlpool」のページに移動します。
作成したSQL Poolのメニューから[Query editor (preview)]を選択し、SQL Poolの認証情報でログインします。
クエリエディタに以下のSQLを貼り付けます。前述の手順で控えておいたStorage Accountの[Access keys]タブにあるKeyの値を、SQLクエリのSECRETに貼り付けてSQLを実行します。
CREATE MASTER KEY;
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH
IDENTITY = 'qdisynapsedemo',
SECRET = '<Key1の値に差し替える>';
以下のメッセージが表示されたら成功です。
firewallの設定
Qlik ReplicateがインストールされているサーバーのFirewall設定を開いて、以下の送信ポートを解放してください。
- 1433
- 11000-11999 ※Qlik ReplicateがAzure上で稼働してる場合のみ
- 14000-14999 ※Qlik ReplicateがAzure上で稼働してる場合のみ
Qlik ReplicateでAzure SynapseのEndpointを作成
Azure Synapseの接続エンドポイントを作成します。ソースとなるMySQLの手順は省略します。MySQLソースの設定方法については以下の記事を確認ください。
Qlik Replicate–MySQLベースのDBソースの利用
Qlik Replicateの画面で、[Manage Endpoint Connections]を選択します。
[+ New Endpoint Connection]を選択します。
以下の項目を設定します。
- Name :
- Role : Target
- Type : Microsoft Azure Synapse Analytics
- Microsoft Azure Synapse Analytics
- Server name : 作成したSQL poolのサーバー名。SQL poolのOverviewから確認できます。ここではqdisynapsevm.database.windows.net
- Authentication method : SQL Authentication
- Port : 1433
- Username : 作成したSQL poolのユーザー名。ここではsho
- Password : 作成したSQL poolのパスワード
- Database name : [Browse…]から、先ほど作成したSQL Poolを選択します。ここではqdisynapsesqlpool
- Automatically create SQL Server credential Use existing SQL Server credential:チェックを入れ
- Azure Storage
- Storage Type : Azure Data Lake Storage (ADLS) Gen2
- Storage Account : 作成したStorage Account名。ここでは、qdisynapsedemo
- File System : Storage Accountで作成したContainer名。ここではreplicate
- Azure Active Directory ID : AADのApp registrationから登録したアプリのOverviewから確認できるDirectory (tenant) ID
- Azure Active Directory application ID :AADのApp registrationから登録したアプリのOverviewから確認できるApplication (client) ID
- Azure Active Directory application key:AADのApp registrationから登録したアプリのCertificates & secretsから作成したClient secretの値。予め控えておいたもの。
- Access key: 作成したStorage AccountのAccess keysから確認できるKey1
- Target folder:[Browse…]から[landing]を選択
[Test Connection]でテスト接続し問題なければ[Save]でエンドポイントを保存して[Close]します。
Replication Taskの作成と実行
[+ New Task]を選択します。
タスク作成画面で、以下の通り設定を行い[OK]を選択します。
- Name : MySQL2AzureSynapse
- Replication Profile : Unidirectional
- Task Option : Full Load, Apply Changes, Store Changes すべてをEnable (青)に
続いて、ソースとターゲットの設定を行います。
MySQL_SRCをソース(上)に、AzureSynapse_TGTをターゲット(下)にドラッグ&ドロップで設定します。
[Table Selection]を選択します。
[Schemas : ]でsalesスキーマを選択し、[Search]をクリックします。9つのテーブルが左下のResultsに表示されます。
続いて、[ >> ]を選択して9つすべてのテーブルを移行対象テーブル(Selected Tables)に指定します。[OK]を選択します。
[Save]でタスク設定を保存したのちに、[Run]でタスクを実行します。
自動的にMonitor画面に切り替わり、[Full Load]の実行状況を確認できます。
SQL PoolのQuery Editorで、データが移行できていることも確認できました。
Replicateを使ってAzure Synapseへリアルタイムにデータをレプリケートする手順は以上です。
なお、Azure Synapse上に移動したsales ODSのデータをQlik Compose for Data Warehousesを使ってデータウェアハウスおよびデータマートを構築することが可能です。
Qlik Compose for Data Warehousesの操作方法については、以下のチュートリアルをご参照ください。