「Qlik Cloudデータ統合」のハンズオン受講メモ

# はじめに
2023/7/20に行われたインサイトテクノロジーさんの[「Qlik Cloud データ統合」についてのハンズオンワークショップ](https://www.insight-tec.com/news/press/20230622_qlikcloud/)を受講してきました。資料は公開されるかもしれませんが、いったん自身の備忘のために受講メモとして記録します。

#### Qlik Cloud データ統合とは？
ハンズオンの対象となるQlick Cloudデータ統合については、あまり情報はありませんが、ワークショップのページには次のように記載されています。

> Qlik Cloudデータ統合（Qlik Cloud Data Integration）は、従来のQlik Replicateをベースに、Qlik社が提供するすべてのコンポーネント機能を集約し、あらゆるクラウドのデータインテグレーションからELT、BIを一つのサービスとして提供するソリューションです。

Qlik社のQlik Replicateは異種DB間のデータレプリケートツールで、そちらを元にマネージドサービスとしてマルチクラウドで提供される「ソリューション」となるようです。ユーザは qlikcloud.com にログインし、データソース・ターゲットをそれぞれ設定することで、様々なデータソース・ターゲットを一元的に管理することができるようになります。

# ハンズオン概要
ハンズオンは**Qlik Cloudデータ統合**を利用して OracleデータベースからSnowflakeに初期＆CDC(Change Data Capture)のデータ連携を行う、というものでした。具体的には、以下のような流れになります。

1. (事前準備済み)Qlik Cloudのアカウント設定
1. (事前準備済み)データソースとなるOracle Databaseのスキーマ・データ準備
1. (事前準備済み)ターゲットとなるSnowflakeのデータベース準備
1. Oracle側のサプリメンタルロギングを設定
    - Oracleのロジカルレプリケーションにおけるサプリメンタルロギングの説明は[こちら](https://cosol.jp/techdb/2020/04/oracle_logical_replication/#%E3%82%B5%E3%83%97%E3%83%AA%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AB%E3%83%AD%E3%82%AE%E3%83%B3%E3%82%B0%E3%82%92%E7%94%A8%E3%81%84%E3%81%9F%E8%AB%96%E7%90%86%E8%AD%98%E5%88%A5%E5%AD%90%E3%81%AE%E6%8C%87%E5%AE%9A)
    - (Oracleだけではないですが)Qlik Replicateとは違い、ソース側テーブルにプライマリキーもしくはユニークキーの設定が必須となるとのことです
1. Qlik Cloudにてデータプロジェクトを作成・構築(Oracle用のドライバインストール・設定、Snowflake用のドライバインストール・設定)
    - データソースはいろいろなRDBMSが設定可能ですが、ターゲットはSnowflakeをはじめRedshift等、DWH用途に現時点では限られているとのことでした
1. Qlik Cloudにて初期データ連携（フルロード）を実施
1. Qlik Cloudにて差分データ連携（CDC）を実施(※)

(※) Qlik Cloudでの差分データ連携はニアリアル(ジョブでの設定が可能、最低1分間隔？)で実施されるが、ターゲット側では差分データテーブルにいったんデータが挿入されます。ターゲット側ではVIEWを参照することで、ニアリアルでのデータ参照が可能となります。(差分データは定期的にターゲット側で統合されます。また、ターゲット側には差分データテーブルのほかにも管理用のテーブルがいくつか作成されるため、一つのテーブルに対して複数のテーブルが作成されることになります)

## Qlik Cloud上でのデータプロジェクト作成

login.qlik.com にアクセスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/832d5ca0-70e4-3c5f-f09f-5333184441bd.png)


ログイン後、右上の弁当メニューをクリックし、**データ統合**を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/b1b578a1-3fcf-46a2-2923-e87e22d94ac1.png)

新規追加から、データプロジェクト、データソース（Oracle、Snowflake）をそれぞれ作成します。
(手元にデータがないため詳細は省きますが、ドライバのインストールも必要になるため、英語のみですが[help](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Data-services-introduction.htm)を確認しながらでないと難しいと思います)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/a18e4776-478f-d723-27fe-0b08648c2853.png)


今回は workshop というデータプロジェクトを作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/68c843ac-8532-a7ff-3f5d-72e9b9f0de43.png)。

作成したデータプロジェクトworkshopを選択すると以下のような画面が表示されます。
Onboarding_Landing がターゲット（Snowflake）へのCDC含めたデータ連携、Onboarding_Storageがターゲット（Snowflake）上での差分データ統合になります。
![01-project.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/00d8ab35-5b84-bd1d-a3e8-fe5801625a64.png)

## Qlik Cloud上でのデータ連携

Onboarding_LandingのケバブメニューをOpenし、データ連携を実行することが可能です。
この部分で簡単なFilterやRuleを記述することができるとのことです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/bd532aca-a1a2-b7c9-b9f1-7171b7a3d6b5.png)

データ連携を実行すると、Snowflake側にデータが連携されます。
![02-Snowflake-orders-3-datapreview.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/0a3c5844-96e1-99b7-29c5-836f22666257.png)

Landing側を実行したら、Onbording_Storage側も同じように実行すると、Snowflake上でのデータ統合が実行されます。


# まとめ
ハンズオン自体はインサイトテクノロジー様が提供してくださった環境上で実施しており、ハンズオン後少しだけ環境をアクセスできるようにしておきます、ということでオフィスから新ためて私が記憶している手順を少しなぞってみて、記録として残している形になります。
そのため、若干手順が記録から省かれているところや画面ダンプが足りてない箇所もありますし、正確でない記載があるかもしれません。

なお、ワークショップではガイドに沿って丁寧に説明＆QA頂きつつ、データ連携基盤構築を進めることができました。


Qlik Cloudは基本的にはGUIでデータ連携が設定できるため、CUIが苦手な場合にもとっつきやすいと感じました。また、マルチクラウドでのアクセスが可能となるため、様々なデータ連携を一元的に管理したい、という場合に利用できるのかな、と思いました。

ただ、現時点ではQlik Replicateに比べてると制限事項が多く、個人的なイメージとしてはGlueとGlue Studioのような位置づけでしょうか。
今後制限事項が少なくなってくると、データ連携ツール・基盤としての検討の俎上に上がってくると思いました。