watsonx.dataのPrestoをDomoに繋げようとしてみた

# 記事の概要
watsonx.dataのSaaS版が使えたので、DomoというBIツールに繋げてみようと思います。
# どんなソリューションか
watsonx.dataはいわゆるレイクハウスであり、クエリーエンジン層とストレージ層が分離している。データレイクにデータをおいたまま、分析できる時代が来たのか。
使用用途・ユーザーに応じてエンジンを使い分けられるので、コストは安くなるだろう（ETL処理などは格安エンジンのPrestoを使用など）。また、データレイクにデータが溜まっているので、データ分析までの時間も短縮するかもしれない。データウェアハウスの高い料金も抑えられるかも。。。まぁ、とりあえず使ってみたいと思います。
watsonx.dataのHPは[こちら](https://www.ibm.com/jp-ja/products/watsonx-data)
Domoとは、データの価値を引き出し、ビジネス成果を最大化するクラウドBIツールらしい。また30日間は無料で使える。
DomoのHPは[こちら](https://www.domo.com/jp)

## watsonx.dataにアクセス
1. [ibmcloud](https://cloud.ibm.com/)にログイン。その後左側のハンバーガーニューから「watsonx」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/c5bc3ff0-7b5e-c983-5da3-6d3714c27e8a.png)
2. watsonx.dataの「Launch」を選択する。（まだ一回も使っていない場合は、「Get start」で始めてください）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/1f13e092-b2b5-7421-5b76-da6d31186a50.png)
3. watsonx.dataのHP画面にいけると思うので、その後必要に応じて、「コンポーネントの追加」から、エンジンやバケット、データベースを追加していく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/6498f170-abdd-ba0a-aadc-6cd999c4d652.png)

## Domo編
1. Domoにログインすると以下のようなトップに入る。その後、「データ」を選択して、データベースやフェデレーテッドで繋いでいく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/a6a238be-e4fc-d082-28b8-64f144fb35fe.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/e419665d-c397-4b68-49ab-0a2938eb1149.png)
2. Prestoは、「フェデレーテッド」で追加ができそうなので、「フェデレーテッド」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/83696e5b-87a6-b8d4-42c6-bec32935c752.png)
3. アカウントを作成する必要があるので、フェデレーテッドDBとして、Prestoを選択し、接続情報を入れていく。Prestoの情報取得は、[こちらの記事](https://qiita.com/nishikyon/items/2687572b6ecce1e54bb5)を参考にしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/f3108b33-0496-d4fb-1841-25ab664e706d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/96ea2720-4cf9-d8bb-9a56-30d46a9d7415.png)
4. アカウントが作成したのちに、そのアカウントを選択し、テーブルを見てみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/9367d15c-b959-5618-cb27-9e65f459310f.png)
5. 見たい対象のテーブルを選択していく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/59c4546b-e516-722d-da93-705c73ddae4e.png)
6. おっと、Offsetが有効になっていないため、テーブルの中身を見ることができない。スキーマは見ることはできました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/06f4b55a-e694-5788-daaa-7851d05ce842.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/478561dc-0146-318a-7543-1e97becac785.png)
7. Prestoの[ドキュメント](https://prestodb.io/docs/current/release/release-0.257.html)を読んでみると、なんと「Add support for the OFFSET clause in SQL query expressions. This feature can be enabled by setting the session property offset_clause_enabled or configuration property offset-clause-enabled to true.」とあった。SaaS版のwatsonx.dataのどこで設定するのだろうか。2023年10月12日時点ではパッとはわからなかった。。。
8. 気を取り直して、Db2を登録してみようと思う。
9. 「データベース」を選択して、「Db2」と入力し、「IBM DB2 Connector」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/f65e2a63-8c5f-8a21-1e6d-e850f02069eb.png)
10. Db2のアクセスに必要な情報を入れていく。今回は、Db2 on cloudを使用しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/0a24063b-909e-c0b8-0cf5-73d277a875c4.png)
11. フェデレーテッドの時と同様アカウントが作れたら、必要なテーブルを選択していく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/9c1ceb25-949a-2a67-f1ef-7d8df856ff4b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/97a45c6e-4623-82b1-453f-cd5e023db615.png)
12. データの更新頻度など諸々設定したのちに、このデータセットの名前を入力して、「保存して実行」を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/0bc0efe9-1a0d-1309-ed5f-70a2dbb9b8db.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/f1ea6b2f-bc5e-fef7-e863-b6f766826a69.png)
13. 少し時間が経つと、以下のようにデータを読み込み、データの可視化・分析ができるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/207247e2-0877-34ae-ec37-467d12321794.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/a4c56d1f-bc73-9e80-7266-6723f55562ae.png)

### SW版のPrestoのconfig.propertiesにてoffsetの設定(2023/10/29 追記)
watsonx.dataを構築した環境へアクセス。root権限ではない場合、切り替えてください。
その後、dockerで立ち上げます。
```
docker exec -it ibm-lh-presto /bin/bash
```
「config.properties」を探します。一般的にはこちら「/opt/presto/etc」にありますが、ない場合は、findコマンドで探してください。
vimでconfig.propertiesを編集します。「offset-clause-enabled=true」を追記します。
```
vim /opt/presto/etc/config.properties
```
以下のようになっていればOKです。
```php
cat /opt/presto/etc/config.properties
#coordinator=true
#discovery-server.enabled=true
#discovery.uri=http://ibm-lh-presto-svc:8080
#http-server.authentication.type=PASSWORD
#http-server.http.port=8080
#http-server.https.enabled=true
#http-server.https.excluded-#cipher=TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_CBC_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
#http-server.https.keystore.key=XXXXXXXXXXXX
#http-server.https.keystore.path=/opt/presto/presto-keystore.jks
#http-server.https.port=XXXX
#node-scheduler.include-coordinator=false
#task.concurrency=16
#offset-clause-enabled=true
```
`exit`で環境から出て、dockerの再起動を行います。
```
docker restart ibm-lh-presto
```
以上でoffsetの設定が完了です。

## 最後に
今回は、PrestoのOffsetの設定がわからずだったのですが、わかったらもう一度チャレンジしたいと思います。
同一のデータレイクにデータをiceberg形式で貯めておけば、データを移動せずにどのエンジンからもアクセスすることができると思うので、それを実感したかったです。よし、違うBIツールでも試しみよう。確かTableauでは動くと記載があったはず！
また、今は、watsonx.dataのエンジンがPrestoしかないのですが、今後Db2　Warehouse on CloudやNetezzaが対応してきたら、それらも追加してみて動きを見てみたいと思います。

2023/10/29 追記
SW版だとPrestoのOffsetの設定が明らかになりました。SaaS版で使用するときについて判明したら、また追記します。