LoginSignup
1
0

More than 1 year has passed since last update.

Watson Query で、Db2とSnowflakeのデータを仮想化して結合する。

Last updated at Posted at 2021-12-21

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.データ仮想化編)の記事として位置づけています。

全体概要

前提事項

前提その1

  • CP4DaaSとして、Watson Queryを有効化していることが前提です。
  • 未済の場合は、こちらの手順で有効化して下さい。

前提その2

  • CP4DaaSとして、今回使用するSnowflake、Db2という外部のデータベースへ接続していることが前提です。
  • 接続の手順は以下をご参照下さい。
  • なお、- サポートされるデータソースについては、こちらを御覧ください。

手順

1.データ仮想化(仮想テーブルの作成)

  • データ仮想化画面へ遷移します。CP4DaaSの左上のハンバーガーメニューから、「データ」配下の「Data VIrtualization」をクリックします。
    スクリーンショット 2021-12-21 10.10.30.png

1.1.データ仮想化のサービス設定

  • データ仮想化(Watson Query)画面に来ました。

  • 画面左上のドロップダウンリストから、「設定」の「サービス設定」をクリックします。
    スクリーンショット 2021-12-21 10.16.47.png

  • サービス設定画面です。最初は「一般」タブが表示されていますが、「ガバナンス」タブをクリックします。
    スクリーンショット 2021-12-21 10.19.22.png

- データのガバナンスを効かせるかどうか、という設定、及びガバナンス対象カタログへの強制公開をするか、という設定が可能です。
- 今回は、「データ仮想化でのポリシーの強制」のみONにしてみます。
スクリーンショット 2021-12-21 10.31.14.png
スクリーンショット 2021-12-21 10.31.35.png

  • なお、ガバナンスの設定方法の詳細については、こちらをご参照下さい。

1.2.データソースの追加

  • 画面左上のドロップダウンリストから、「仮想化」の「データ・ソース」をクリックします。
    スクリーンショット 2021-12-21 10.33.57.png

  • (すでにPlatform接続で接続定義を作成している場合)

  • 画面右上の「接続の追加 +」をクリックし、「既存の接続」を選択します。
    スクリーンショット 2021-12-21 10.43.52.png

1.2.1.仮想化データソースとしてDb2の接続定義を追加

  • 作成済のDb2の接続定義を選択し、画面右下の「追加」をクリックします。
    スクリーンショット 2021-12-21 10.44.26.png

  • もし以下のようなエラーが出る場合は、以下のコマンドで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.;
    • コマンド
      • openssl x509 -inform DER -in .crt -out .pem
  • 仮想化のデータソースとして、Db2が追加されました。
    スクリーンショット 2021-12-21 10.46.25.png

  • 仮想化できるかどうか確認するために、画面左上のドロップダウンリストから「仮想化」の「仮想化」をクリックします。

  • 仮想化対象となる、Db2のテーブルが表示されます。
    スクリーンショット 2021-12-21 10.47.59.png

1.2.2.Db2のテーブルを仮想テーブルとして保持する。

  • 今回対象とするテーブル「DUMYMOBILES」を選択し、青い帯の右側に表示される「カートに追加」をクリックします。
    スクリーンショット 2021-12-21 10.54.01.png

  • 画面右上の「カートに表示」をクリックします。
    スクリーンショット 2021-12-21 10.54.50.png

  • カート内で確認していきます。
    スクリーンショット 2021-12-21 10.57.57.png

  • 仮想化するテーブルをどこに割り当てる先として、今回はひとまず「自分の仮想化データ」という一時的な領域に保持するようにします。
    スクリーンショット 2021-12-21 11.06.13.png

  • また、表名を「DUMMYMOBILES」から「モバイル情報」に変更してみます。
    スクリーンショット 2021-12-21 11.08.04.png

  • 仮想テーブルでは、列名も編集可能です。対象仮想テーブルの右端にカーソルを合わせると点々が表示されるので、そこをクリックして、「列の編集」を選択します。
    スクリーンショット 2021-12-21 11.09.21.png

  • 列名を任意に編集可能です。今回は、特に変更の必要がなさそうなので、このままにします。「キャンセル」をクリックします。
    スクリーンショット 2021-12-21 11.10.28.png

  • 仮想化の準備が出来ましたので、画面右上の「仮想化」をクリックします。
    スクリーンショット 2021-12-21 11.11.10.png

  • 確認のメッセージが表示されるので、「続行」をクリックします。
    スクリーンショット 2021-12-21 11.12.18.png

  • 仮想化が完了しました。「自分の仮想化データを表示」をクリックします。
    スクリーンショット 2021-12-21 11.13.43.png

  • 「自分の仮想化データ」画面です。先程仮想化したDb2が表示されています。
    スクリーンショット 2021-12-21 11.15.22.png

  • 対象テーブルの右端にカーソルを合わせると点々が表示されるので、そこをクリックして、「プレビュー」を選択します。
    スクリーンショット 2021-12-21 11.18.24.png

  • 仮想化されたデータ内容が表示されました。
    スクリーンショット 2021-12-21 11.19.20.png

1.2.3.仮想化データソースとしてSnowflakeの接続定義を追加

  • 「データソース」画面で「接続の追加」から「既存の接続」をクリックします。
    スクリーンショット 2021-12-21 11.37.03.png

  • 今回対象とするSnowflakeの接続定義(SNOW_DEMO_...)を選択して、画面右下の「追加」をクリックします。
    スクリーンショット 2021-12-21 11.40.05.png

  • Snowflakeが仮想化対象のデータソースとして追加されました。
    スクリーンショット 2021-12-21 11.42.38.png

1.2.4.Snowflakeのテーブルを仮想テーブルとして保持する。

  • 「仮想化」の画面で、今までデータソースとして設定したDb2とSnowflakeの各テーブル情報がロードされてきます。
    スクリーンショット 2021-12-21 11.59.22.png

  • 件数が多いので、検索窓で今回作成したテーブル名の一部で検索します。
    スクリーンショット 2021-12-21 12.00.35.png

  • 今回は「DUMMYPEOPLE」を対象に仮想化を試します。選択して、「カートに追加」をクリックします。
    スクリーンショット 2021-12-21 12.01.29.png

  • 「カートの表示」をクリックします。
    スクリーンショット 2021-12-21 12.02.02.png

  • 「自分の仮想化データ」を選択し、表明を「ダミー個人テーブル」に変更します。また、右側から「列の編集」をクリックします。
    スクリーンショット 2021-12-21 12.03.01.png
    スクリーンショット 2021-12-21 12.03.25.png

  • 列の編集画面に来ました。ここでは、日本語名に編集してみます。
    スクリーンショット 2021-12-21 12.05.06.png

  • 例えばこんな感じにして、右側の「適用」ボタンをクリックします。
    スクリーンショット 2021-12-21 12.06.34.png

  • 編集終了後、画面右上の「仮想化」ボタンをクリックして仮想化します。
    スクリーンショット 2021-12-21 12.07.49.png

  • 確認画面で「続行」をクリックします。
    スクリーンショット 2021-12-21 12.08.18.png

  • 仮想化が完了しました。「自分の仮想化データを表示」をクリックします。
    スクリーンショット 2021-12-21 12.09.13.png

  • 作成した仮想テーブルが表示されます。
    スクリーンショット 2021-12-21 12.09.48.png

  • ダミー個人テーブル右端から「プレビュー」をクリックします。
    スクリーンショット 2021-12-21 12.10.07.png

  • 先程編集した列名でテーブルが表示されます。ちょっと連番がDOUBLET型ですね。。。
    スクリーンショット 2021-12-21 12.11.13.png

2.仮想テーブル同士の結合

2.1.テーブル結合

  • 「自分の仮想化データ」に戻って、今度はこの「ダミー個人テーブル」と「モバイル情報」を結合して一つのテーブルにしてみようと思います。
    スクリーンショット 2021-12-21 13.03.19.png

  • チェックボックスを2つクリックして、「結合」をクリックします。
    スクリーンショット 2021-12-21 13.04.58.png

  • 結合画面で、今回もともと同じ項目であった「連番」と「ダミー連番」を結合します。

  • 「ダミー連番」の行をクリックしたまま、「連番」へドラッグアンドドロップします。
    スクリーンショット 2021-12-21 13.07.39.png

  • また、結合後のテーブルで使用しない項目はチェックを外します。今回は「ダミー連番」のチェックを外します。

  • その状態で右上の「プレビュー」をクリックします。
    スクリーンショット 2021-12-21 13.09.42.png

  • 結合された後の姿が表示されます。問題なさそうなので、画面右上の「✗」ボタンをクリックしてプレビューを終了します。
    スクリーンショット 2021-12-21 13.10.38.png

  • 画面右上の「次へ」をクリックします。
    スクリーンショット 2021-12-21 13.11.47.png

  • 列名の編集画面です。こちらでも列名を編集可能です。
    スクリーンショット 2021-12-21 13.12.27.png

  • 列名にすべて「仮想」と付けて「次へ」をクリックします。
    スクリーンショット 2021-12-21 13.13.40.png

  • 最後の割当画面が表示されます。
    スクリーンショット 2021-12-21 13.14.50.png

  • 割当先は、今回は自分のプロジェクトを指定してみます。また、カタログにも公開してみます。

  • (残念ながら今回のIDで管理しているカタログはガバナンス対象外でした。。。)

  • また、ビュー名も任意で付けます。

  • 「ビューの作成」をクリックします。
    スクリーンショット 2021-12-21 13.17.22.png

  • 仮想化が完了しました。「自分の仮想化データ」にもデータが入っていました。。。
    スクリーンショット 2021-12-21 13.17.58.png

2.2.結合されたテーブルの確認(プロジェクトにて)

  • 自分のプロジェクトを確認します。ハンバーガーメニューから「プロジェクト」配下の、先程対象としたプロジェクトを選択します。
    スクリーンショット 2021-12-21 13.21.07.png

  • 「資産」タブで、先程仮想化した結合後のテーブル、及び同時刻に作成された接続情報が登録されていることがわかります。
    スクリーンショット 2021-12-21 13.37.35.png

  • この「DS。。。」で始まる文字列の接続定義を確認するためにクリックします。

  • 「資格情報」の箇所には現在何も資格情報が入っていません。そのため、この時点でデータのプレビューは出来ません。
    スクリーンショット 2021-12-21 14.57.59.png

  • そこで、この仮想化されたテーブルを確認するためのAPIキーを次項で取得します。

2.3.APIキーの取得

  • IBM Cloudの管理画面からアクセス(IAM)へ遷移します。
    スクリーンショット 2021-12-21 15.00.36.png

  • 画面左側の「APIキー」をクリックして、「IBM Cloud API キーの作成」をクリックします。
    スクリーンショット 2021-12-21 15.04.14.png

  • APIキーの名前と説明を入力し、「作成」をクリックします。
    スクリーンショット 2021-12-21 15.04.46.png

  • APIのキーが作成されました。この文字列を使用します。この文字列は、なくさないように保管しておいて下さい。
    スクリーンショット 2021-12-21 15.05.55.png

2.4.APIキー入力

  • 取得したAPIキーを先程の「資格情報」の箇所のAPIキーの欄に入力します。

  • APIキーのみを入力すると、IDをとパスワード欄は不要な為消えます。

  • 画面右上の「接続のテスト」をクリックして接続するか試します。
    スクリーンショット 2021-12-21 15.08.41.png

  • 問題なく接続できることが確認出来ました。画面右下の「保存」をクリックします。
    スクリーンショット 2021-12-21 15.10.33.png

  • プロジェクト画面から、改めてデータ資産を確認します。
    スクリーンショット 2021-12-21 15.14.42.png

  • 「プレビュー」タブを見ると、問題なく、仮想化した後で結合できたDb2とSNowflakeから仮想化・結合されたテーブルが確認出来ました。
    スクリーンショット 2021-12-21 15.12.04.png

3.まとめ

  • このように、データ仮想化機能であるWatson Query を使用すると、様々な種類のデータベースを、単一のテーブルのように扱うことが可能となります。
  • Watson Query は、Liteプランでは30日間使用することが出来ますので、ぜひお試し下さい。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0