Watson StudioからSQLQueryへのアクセス

Waston StudioからSQL Queryで定義したTABLEへのアクセス方法について説明します。


全体像は以下になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/331669a9-271a-de5d-2719-0e1f00e016c6.png)
1.SQL QueryのStandardのインスタンス作成
2.ソースファイルを準備
3.SQL Queryでテーブル定義作成
4.API Keyの作成
5.SQL Queryへの接続オブジェクトを作成
6.接続データオブジェクトを作成

テスト環境
CP4D 4.0.1

#1.SQL QueryのStandardのインスタンス作成
SQL Queryのインスタンスを用意します。Watson Studioのデータソースにするためにはライトプランではなく、標準プランのインスタンスが必要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/455d3a2a-9f57-3155-1f37-9f815044b021.png)

作成したらCRNをメモしておきます。①
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/debec8a7-75d8-cd93-d25c-faef830a3a5b.png)



#2.ソースファイルを準備
SQL QueryのソースとなるCSVファイルやParquetファイルをICOSバケットに用意します。

以下では211008icostestというバケットにCond4n_e104.csvというソースファイルを用意しています。
SQLでアクセスをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/bd4e0c24-3c00-30b1-e8ea-70cd972ec661.png)

SQL照会で開くで開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/6f33751f-5002-c47e-d8a8-f5b32a977409.png)

#3.SQL Queryでテーブル定義作成
Target locationをメモしておきます。②
以下の例だと
cos://us-south/sql-1964a5de-6054-4fd2-beef-abdb3da460c9/result/
です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/75b53d07-5aef-230a-8143-f0b87d5b570c.png)

以下のようなCREATE TABLE文でソースファイルからテーブル作成します。Runで作成してください。

```sql
CREATE TABLE COND4N_E104
USING CSV
location cos://jp-tok/211008icostest/Cond4n_e104.csv
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/adc5d672-f25e-7436-8616-72bc269521ee.png)

#4.API Keyの作成
IAMでまずサービスIDを作成し、以下のような権限を与えます。
以下では211008sqlquery_sidというサービスIDを作ってアクセスポリシーの設定をしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/f3b7fac2-e638-8690-a651-b0550bd1d935.png)

アクセス権限の中身を確認します。
まずSQL Queryの管理者権限が必要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/efc2c4e2-9aa9-51da-1235-bc5a19a98155.png)

ソースバケットに対してリーダー権限などが必要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/5ed87fc0-4f67-df1c-3e44-263b57f2f605.png)

ターゲットバケットに対してライター権限などが必要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/aba179fa-1ff5-bd18-7d11-5005dca778ef.png)

APIキーのタブでAPIキーの作成して、APIキーをメモしておきます。③
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/be2841bf-f05f-c2e5-aed1-d72945ac1113.png)


#5.SQL Queryへの接続オブジェクトを作成
「プロジェクトに追加」で、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/8cdde5ab-389a-0070-7b6b-a6ff97026962.png)

「接続」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/cf2de32c-ecfd-3b20-b53e-3e205cd029a0.png)

「SQL Query」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/55a91921-ef18-1077-2a10-fb0d6075779e.png)

接続の詳細と資格情報に上の手順でメモした①CRN、②ターゲットバケット、③APIキーを入力します。
「接続のテスト」で接続を確認して保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/371c98e3-8553-d01e-4103-fbd2cebb500f.png)

#6.接続データオブジェクトを作成
「プロジェクトに追加」で、「接続データ」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/d0a779ab-2517-3186-7eba-47dbbd60a699.png)

「ソースの選択」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/16a986b4-6101-54c0-8fa0-38efce4feccd.png)

先ほど作成した接続オブジェクト（ここではsqlquerya4）を選びCREATE TABLEしたSQL Queryのテーブルを選択します。緑のチェックがつけばOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/3c3c5d5b-25b9-d7fe-5d2a-eec9857edd56.png)

任意の名前をつけて保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/a6229f46-e5b6-9fcf-0c10-86c535e36030.png)

作成した接続データをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/d4d04e77-cd4b-8a22-1612-dfbad0fbf1d0.png)

正しく読み込むことができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/b5e5e9d9-a92a-81e9-03cc-c7122ca7b943.png)

#参考
SQL Queryの結果のICOSバケットにアクセスだけなら以下で可能です。

https://qiita.com/kawada2017/items/31a7b03e84bb14fd2c9b