Watson Studioのカタログ機能を試す

# はじめに

[無料でなんでも試せる! Watson Studioセットアップガイド](https://qiita.com/makaishi2/items/b666f847a98c2e42dfbb)
で関連記事をまとめたとき、Konwledge Catalogに関する記事がないことに気付き、簡単なガイドを作ることにしました。

# Knowledge Catalogとは
![スクリーンショット 2020-04-26 13.12.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/b6d5385f-52bf-8847-abdd-9b72901cd55c.png)

　そもそも、Knowledge Catalogとはなんぞやという話ですが、上の図を見て下さい。
これは、現在のAI系Watsonサービスの全体図です。構造化データを使った予測モデル開発の統合プラットフォームがWatson Studioなのですが、構造化データの場合、データベースへのアクセスということが必須になります。
データ接続、データの探索、データ加工などの部分を引き受けるサービスが、Knowledge Catalogということになります。

# 前提
上のリンクでIBM Cloudのアカウント登録、Watson Studioのインスタンス作成、Watson Studioのプロジェクト作成まで済んでいること。

# 事前準備
それでは、これから実際に機能を試すのですが、参照先のデータベースが必要になります。
IBM Cloudでは、無料でDB2も使えるので、まず、そのサービスを作るところから始めます。

## DB2サービスの作成
下のダッシュボードの初期画面で「リソースの作成」をクリックします。
![スクリーンショット 2020-04-26 13.20.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/2eb7ddcd-3655-31e3-b19c-cd2675de59d7.png)

①　検索文字として**db2**を入力し、Enter
②　出てきたリストから**Db2**を選択します。

![スクリーンショット 2020-04-26 13.19.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/1f47b2a3-b4fe-7fa9-dbfb-b4340682fe69.png)
下の画面になったら全部デフォルトで、右下の「**作成**」をクリックします。

![スクリーンショット 2020-04-26 13.24.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/55302f5f-51b5-1c89-c7c5-cab111378506.png)

## 資格情報の作成・確認
下のような画面になったら、Db2のインスタンスができています。最初に資格情報を作成し、結果を確認します。

①　サービス資格情報のメニューをクリック
②　「新規資格情報」をクリック

![スクリーンショット 2020-04-26 13.27.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/fe7f6448-fcb2-82fa-4989-3268d69cd9f3.png)

下のパネルが出てきたら、デフォルトの状態で、「追加」

![スクリーンショット 2020-04-26 13.27.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/eab21891-4f52-c2e4-01b4-42b05e7bacea.png)

下のようになるので、画面右下の小さいアイコンをクリックします。
ちょっとわかりにくいのですが、これは資格情報をクリップボードにコピーする機能です。
コピーした資格情報は、テキストエディタなどにはりつけて保存しておきます。

![スクリーンショット 2020-04-26 13.27.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/323f4b97-e3ce-08c0-0911-501fd49f7556.png)



## サンプルテーブルの作成
次にサンプルテーブルを作成します。DB2の管理コンソールでは、CSVデータからテーブルを生成する機能があるので、その機能を使うことにします。
サンプルで使うデータはなんでもいいのですが、他の記事で使っているAutoAI用の学習データにしましょう。

下記のURLからダウンロードできるので、ブラウザでアクセスして、ファイルとして保存しておいて下さい。

[サンプルCSV](https://github.com/makaishi2/sample-data/raw/master/data/bank-train.csv)

下のDB2の画面で、今度は
① 管理のメニューをクリック
② **Open Consle**をクリック

![スクリーンショット 2020-04-26 13.39.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/4756b148-2301-a3ea-0ca5-56422ea3bd83.png)

下のような画面になるので、画面右上の「三」のアイコンをクリックします。

![スクリーンショット 2020-04-26 13.42.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/233eaa37-6a6f-8069-6e03-6a8eb65d5d43.png)

出てきたメニューから「**Load**」「**Load Data**」を順に選択します。

![スクリーンショット 2020-04-26 13.42.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/3d2abdaa-b832-612b-0483-789aa38908a7.png)

下の画面で
①　事前準備したcsvファイルをドラッグアンドドロップ
②　ファイル名が「Selected file」に入ったのを確認し
③　**Next**をクリック

![スクリーンショット 2020-04-26 13.46.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/562ba2cf-f588-d531-4b02-93e2b8472771.png)

①　スキーマ名選択の画面では、先ほど取得した資格情報内のusernameと同じものがあるはずなので、それを選択します。
②　テーブル名に関しては**New Table**をクリック

![スクリーンショット 2020-04-26 13.51.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/b37e2901-b679-8168-c13f-6d6e0b884ec3.png)

下のような画面に変わるので、
①　テーブル名称を**BANK_TRAIN**とし
② **Create**ボタンをクリックします。

![スクリーンショット 2020-04-26 13.54.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/f598dc85-5a79-a919-097b-af9187ee279b.png)


下の画面で、もう一度「**Next**」

![スクリーンショット 2020-04-26 13.57.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/175b5d3a-6629-125b-8877-98d49bdcee87.png)

今度はこんな画面になります。ここでもう一回**Next**

![スクリーンショット 2020-04-26 13.59.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/fa835bc5-37a8-d438-4636-8e804b7e0c8d.png)

最後にこんな確認画面が出るので、「**Begin Load**」をクリックします。

![スクリーンショット 2020-04-26 14.00.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/e69d517d-6729-e137-41d8-0b5ccda0b1c2.png)

これで、データロードがはじまるはずです。下の画面がでてくれば完成です。

![スクリーンショット 2020-04-26 14.02.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/4d132a4a-fe8b-8e28-87f5-abe672da8da6.png)


余談ですが、私が基盤系をやっていた20年前だったら、自分でデータ型とか長さとか調べてDDLを手で作っていました。データベースの世界も随分楽になったものです。


# 手順
かなり長い手順になりましたが、以上でデータベース側の準備が完了しました。
いよいよ本題のWatson Studio(正確にはKnowledge Catalog)側の作業に入ります。

## 接続情報の登録
Watson Studioのプロジェクト管理の画面から

① 「**プロジェクトに追加**」
② 「**Conenction**」

を選択します。
![スクリーンショット 2020-04-26 14.06.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/46b0bcfd-1fd6-04df-d147-92263eaa96c5.png)

ここで出てきた一覧が、Knowledge Catalogで対応しているデータベースです。随分たくさんのデータベースに対応していることがわかります(グレーアウトで選択できないものは「有償プランのみ対応」を意味しています)。
この中で、Db2を選択します。

![スクリーンショット 2020-04-26 14.09.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/00f9ec05-7e84-7492-34ab-c173ff044115.png)

すると、下の図のような接続情報設定画面が表示されます。
左上の名称は「db2 connection」など適当な名前を入力します。残りは、先ほどテキストエディタに保存した資格情報から必要な項目をコピーして下さい。
Databaseの欄は共通で**BLUDB**です。ポートが50000でSSLはなしです。残りの対応付けは想像つくと思います。

![スクリーンショット 2020-04-26 14.17.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/a292f09d-4c29-786c-6719-5169ec14866b.png)

usernameとpasswordまで入力すると、今まで選べなかった画面右下の**Create**ボタンが選べるようになるので、それをクリックします。この段階で、接続テストをしているので、パスワードが違っている場合は、ここで登録エラーになります。下の図のように正常終了した場合は、接続に成功したことを意味しています。

![スクリーンショット 2020-04-26 14.20.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/75888b5d-acd2-dbc2-b976-27e5c917296b.png)

## テーブルの登録

引き続き、テーブルの登録をしてみましょう。
「プロジェクトに追加」から今度は「**conencted data**」を選択します。

![スクリーンショット 2020-04-26 14.24.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/14a7eb3d-0526-7798-f29f-0b4f2c2be736.png)

下のように「Select connection source」という画面が出てきます。
順に以下の操作をして下さい。

① **Connections**　先ほど作ったibm db2を選びます。
② **Schemas** テーブルを作る際に指定した、db2接続ユーザーと同じものを選びます
③ **Tables** BANK_TRAIN (事前準備で用意したテーブル)
④ ③までを選択すると、画面右下の**Select**ボタンが有効になるので、クリックします。 

![スクリーンショット 2020-04-28 9.32.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/a1ebc5bb-8f96-6b03-b0d9-b9ec6cbad3a4.png)

すると、下のような画面に遷移します。

① **Source**の設定が適切であることを確認します。
② **Name**の欄に **DB2_BANK_TRAIN**と名称を入力します。
③ **Create**ボタンをクリックします。

![スクリーンショット 2020-04-28 9.43.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/4a70f088-dc8d-41fa-fa64-3dd492a74aaa.png)

すると、**Data Assets**が次のように変わり、DB2のテーブルが登録されたことがわかります。
引き続き、登録済みのテーブルの利用例をいくつか紹介します。

![スクリーンショット 2020-04-28 9.48.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/cfe37f79-8ae0-6149-12ed-d10ee0efa659.png)

## Refineryからのアクセス
最初はRefineryというDB簡易ツールからのアクセスです。
上の図の赤枠で囲まれたテーブルのリンクをクリックすると、即座にRefineryが起動されます。
下の図が、Refineryの初期画面です。先ほど登録されたテーブルの内容がプレビュー機能で表示されていることがわかります。
Refinaryの機能を紹介すると、長くなるので、図の赤枠のプロジェクト名の欄をクリックして、いったん画面を抜けることにします。

![スクリーンショット 2020-04-28 9.52.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/30e3e643-472c-64f5-82a0-c679b7dfd233.png)

## Modeler Flowからのアクセス
「プロジェクトに追加」から「Modeler Flow」を選択します。

![スクリーンショット 2020-04-28 9.56.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/a2c5e48f-6a42-2e29-7b40-0949002f2a75.png)

Nameの欄に「DB access sample」と入力し、Create

![スクリーンショット 2020-04-28 9.57.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/9961cbb0-cf2f-f8a6-797d-63f17767e41b.png)

画面中央に編集用のキャンパスが表示されます。画面左のパレットから、「Import」「**Data Asset**」を選択肢、キャンパスに向けてドラッグアンドドロップします。

![スクリーンショット 2020-04-28 10.00.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/5115c50b-db0f-7adf-2739-5beab889f786.png)


下の図のように、中央のキャンパスに、Data Assetのアイコンが配置されます。設定のため、このアイコンをダブルクリックします。

![スクリーンショット 2020-04-28 10.00.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/1eab82e2-4f32-57fb-a8f4-3c305dace1dc.png)

下のような設定画面になるので、「**Change data asset**」のボタンをクリックします。

![スクリーンショット 2020-04-28 10.00.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/1b327286-1bae-4e8f-3951-a20dc70688a4.png)

![スクリーンショット 2020-04-28 10.00.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/73d091f4-13b3-916c-a230-dbef4e233656.png)

下の画面で、①「**Data assets**」②「**DB2_Bank_TRAIN**」を順に選択し、最後に画面右下の③「**OK**」ボタンをクリックします。

これで、Modeler Flow上のアイコンと、Data Assetの対応付けが完了しました。試しにプレビュー機能でそのことを確認してみます。キャンパス上のアイコンで、マウス右ボタンクリックし、コンテキストメニューを表示します。
メニューから「**Preview**」を選択して下さい。

![スクリーンショット 2020-04-28 10.01.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/34f090f3-e8e8-6190-ab1a-972ba35eb2b5.png)

下のような結果が表示され、準備したDBデータがModeler Flowからアクセスできていることがわかります。

![スクリーンショット 2020-04-28 10.01.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/a2f1417c-84e2-d371-b2bf-f2d979209b31.png)

閉じるボタンをクリックして、最後に下の画面のプロジェクト名の領域をクリックしてプロジェクト管理の画面に戻ります。

![スクリーンショット 2020-04-28 10.22.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/ec7f48ac-ab6a-7358-57f0-eefae37cc6ee.png)


## Jupyter Notebookからのアクセス
今度は、Data Assetに登録したテーブルをJupyter Notebookから利用してみます。
まず、「**プロジェクトに追加**」から、「**Notebook**」を選択します。

![スクリーンショット 2020-04-28 10.26.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/b6fbfb12-6547-5827-eca8-9c359f2ddf06.png)

下の画面で
①**Name**の欄に「**Db2 access sample**」と入力し
② 画面右下の「**Create**」ボタンをクリックします。


![スクリーンショット 2020-04-28 11.59.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/f06e28f6-020e-87a7-f10c-e95311abe3c2.png)

下の画面が出てきたら、右上の「閉じる」アイコンで、画面を消します。

![スクリーンショット 2020-04-28 12.04.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/caa94aa8-d245-2aa1-de92-72ce8962299f.png)

画面上部の右から2つめ、「Find and add data」アイコンをクリックします。
![スクリーンショット 2020-04-28 12.05.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/17676585-605c-521e-7287-11e63df82c3f.png)

先ほど、「**Connected data**」として登録した**DB2_BANK_TRAIN**が出てくるはずです。ここのドロップダウンリストをクリックします。

![スクリーンショット 2020-04-28 12.05.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/cae96df7-5bd9-9c0f-3b74-18b798a77865.png)

リストの中から「pandas DataFrame」を選択します。

![スクリーンショット 2020-04-28 12.05.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/9e2efeba-06a7-69b1-68cf-602bbe8fd8f3.png)

Db2のデータにアクセスするためのコードが自動生成されて、Notebookが下の図のようになるはすです。
ここでShift+Enterで、このセルを実行してみます。

![スクリーンショット 2020-04-28 12.06.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/2945a0ae-fb90-f164-310b-42ade8c776c1.png)

すると、Db2のデータがPythonのDataFrameに読み込まれていることがわかります。

![スクリーンショット 2020-04-28 12.06.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206130/3755b58c-64eb-d110-2b73-b7c6ea24cc3f.png)

このように、一度、**Connection**や、**Connected data**を登録しておくと、ユーザーは接続情報など気にすることなく、データベースのデータを利用することができます。これがWatson Studioと連携したKonwledge Catalogの機能の一部ということになります(Konwledge Catalog自体は他にも機能がいくつもあります)。