Watson Query で、Db2とSnowflakeのデータを仮想化して結合してみた。
この記事でやりたいこと
- この記事は、[IBM Cloud Paks Advent Calendar 2021 Advent Calendar 2021] (https://qiita.com/advent-calendar/2021/cloudpaks) の12/21分として記載します。
- 先日GAされたWatson Query というデータ仮想化機能を使用して、外部にある異なるデータベースを仮想的なテーブルとして同じように扱えるようになります。
- 2022年1月時点でCP4DaaSハンズオン資料(5.データ仮想化編)の記事として位置づけています。
全体概要
-
Watson Query で、Db2とSnowflakeのデータを仮想化、結合し、データカタログに登録する様子のポンチ絵動画。https://t.co/LuBDa1eshD #Qiita #Db2 #Snowflake #CP4D #datatechjp #IBM #日本IBM #データ仮想化 #データカタログ #Chicago #WatsonQuery #WatsonKnowledgeCatalog pic.twitter.com/NDpzNhh6RF
— ぼうさん/ Shumpei Kubo / 外資IT魔法戦士(技術営業) (@_bou_3) December 7, 2022
前提事項
前提その1
- CP4DaaSとして、Watson Queryを有効化していることが前提です。
- 未済の場合は、こちらの手順で有効化して下さい。
前提その2
- CP4DaaSとして、今回使用するSnowflake、Db2という外部のデータベースへ接続していることが前提です。
- 接続の手順は以下をご参照下さい。
- なお、- サポートされるデータソースについては、こちらを御覧ください。
手順
1.データ仮想化(仮想テーブルの作成)
1.1.データ仮想化のサービス設定
-
データ仮想化(Watson Query)画面に来ました。
- データのガバナンスを効かせるかどうか、という設定、及びガバナンス対象カタログへの強制公開をするか、という設定が可能です。
- 今回は、「データ仮想化でのポリシーの強制」のみONにしてみます。
- なお、ガバナンスの設定方法の詳細については、こちらをご参照下さい。
1.2.データソースの追加
-
(すでにPlatform接続で接続定義を作成している場合)
1.2.1.仮想化データソースとしてDb2の接続定義を追加
-
もし以下のようなエラーが出る場合は、以下のコマンドでDb2からダウンロードしたCRTファイルをPEMファイルに変換して再入力してみて下さい。
- エラー
- The data source could not be added. Ensure that the specified parameters are correct and try again.
qpendpoint_1:6415, failed with The exception 'java.lang.Exception: Input certificate did not contain any valid certificates, ensure certificate is provide using PEM format.' was thrown while evaluating an expression.;
- The data source could not be added. Ensure that the specified parameters are correct and try again.
- コマンド
- openssl x509 -inform DER -in .crt -out .pem
- エラー
-
仮想化できるかどうか確認するために、画面左上のドロップダウンリストから「仮想化」の「仮想化」をクリックします。
1.2.2.Db2のテーブルを仮想テーブルとして保持する。
-
仮想化するテーブルをどこに割り当てる先として、今回はひとまず「自分の仮想化データ」という一時的な領域に保持するようにします。
-
仮想テーブルでは、列名も編集可能です。対象仮想テーブルの右端にカーソルを合わせると点々が表示されるので、そこをクリックして、「列の編集」を選択します。
1.2.3.仮想化データソースとしてSnowflakeの接続定義を追加
1.2.4.Snowflakeのテーブルを仮想テーブルとして保持する。
2.仮想テーブル同士の結合
2.1.テーブル結合
-
「自分の仮想化データ」に戻って、今度はこの「ダミー個人テーブル」と「モバイル情報」を結合して一つのテーブルにしてみようと思います。
-
結合画面で、今回もともと同じ項目であった「連番」と「ダミー連番」を結合します。
-
また、結合後のテーブルで使用しない項目はチェックを外します。今回は「ダミー連番」のチェックを外します。
-
割当先は、今回は自分のプロジェクトを指定してみます。また、カタログにも公開してみます。
-
(残念ながら今回のIDで管理しているカタログはガバナンス対象外でした。。。)
-
また、ビュー名も任意で付けます。
2.2.結合されたテーブルの確認(プロジェクトにて)
-
自分のプロジェクトを確認します。ハンバーガーメニューから「プロジェクト」配下の、先程対象としたプロジェクトを選択します。
-
この「DS。。。」で始まる文字列の接続定義を確認するためにクリックします。
-
そこで、この仮想化されたテーブルを確認するためのAPIキーを次項で取得します。
2.3.APIキーの取得
-
IBM Cloudの管理画面からアクセス(IAM)へ遷移します。
2.4.APIキー入力
-
取得したAPIキーを先程の「資格情報」の箇所のAPIキーの欄に入力します。
-
APIキーのみを入力すると、IDをとパスワード欄は不要な為消えます。
-
「プレビュー」タブを見ると、問題なく、仮想化した後で結合できたDb2とSNowflakeから仮想化・結合されたテーブルが確認出来ました。
3.まとめ
- このように、データ仮想化機能であるWatson Query を使用すると、様々な種類のデータベースを、単一のテーブルのように扱うことが可能となります。
- Watson Query は、Liteプランでは30日間使用することが出来ますので、ぜひお試し下さい。