Tableau Desktopにwatsonx.data(Presto→ICOS、Netezza)を繋げて、少し遊んでみた

# 記事の概要
本記事はTableauにwatsonx.dataのPrestoを繋げてみた記事です。
BIツールとしてTableuauを使用することも多く、そのデータソースとしてレイクハウスソリューションであるwatsonx.dataに繋げられるか試してみたくなりました。
レイクハウスwatsonx.dataの格安エンジンPrestoに繋げてみて、watsonx.dataに繋げてあるNetezza内のデータとIBM Cloud Object Storageにアクセスしてみようと思います。

## watsonx.data編
こちらの記事[「watsonx.dataのPrestoをDomoに繋げようとしてみた」](https://qiita.com/Tiger-Kid/items/b0affefc83e5ca849b6c)を参照してください。
エンジンとして、Prestoを使用します。
フェデレーション先のデータベースとしてNetezzaを使用します。
IBM Cloud Object Storage(以下ICOS)をデータレイクとして使用します。

Netezzaには、「demo」スキーマ内に「airline_delay_cause_2018_local」テーブルがあります。
ICOSには、「test」スキーマがあり、「CREATE TABLE AS SELECT」でNetezzaのテーブルをICOS内に「test2」として作成します。

## Tableau編
Tableauは、「接続からコラボレーションまでをスムーズに行える、極めて強力でセキュアかつ柔軟な、エンドツーエンドの分析プラットフォームです。」(HPから引用)
データの可視化を行うTableau Desktopがどうやら14日間無料で使えるらしく、私も実際にダウンロードしてみて使ってみました。
### Tableau Desktopのインストール
1. [こちら](https://www.tableau.com/ja-jp/products/desktop)にアクセスします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/0eec20d0-b5d4-c452-c06f-33c840cfff50.png)
2. 「無料トライアルを始める」を選択すると以下のページに遷移します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/6bad4157-1e22-5dfb-23d7-3341d0d1b2cd.png)
3. 「無料トライアルをダウンロード」を選択する。ダウンロードした後は、画像に沿って、ファイルを開き、インストール、登録まで行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/48cae742-7674-0637-162c-4ada9e46fd73.png)

### Prestoのドライバーをインストール
1. それでは、早速watsonx.dataのPrestoに繋げてみよう、、、とTableau Desktopを開いて、「サーバーへ」の「その他」から「Presto」を選択するも、「このコネクターを使用するには、まずドライバーをダウンロードしてインストールする必要があります」と表示されました。（以下の画像では、すでにPrestoのドライバーをダウンロードしてしまったので、代わりにPostgreSQLを選択してます）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/5880544f-a862-5151-e353-4a8380222822.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/a112bd86-9808-95ed-d25f-e5e283d9a5c7.png)
2. [「ドライバーをダウンロードします」](https://www.tableau.com/ja-jp/support/drivers?edition=pro&lang=ja-jp&platform=mac&cpu=64&version=2023.2&__full-version=20232.23.0909.1159#postgres)を選択すると以下のページに遷移します。PrestoとTrinoでは、必要なドライバーが異なるためご注意ください。今回は「PrestoDBに接続している場合は、[PrestoDB](https://prestodb.io/getting-started/)ページから必要なドライバーをダウンロードしてください」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/5d84bf92-d625-4c04-f809-20395b4fc0c9.png)
3. Prestoに必要なドライバーが欲しいので、JDBC Driverの「presto-jdbc-0.283.jar」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/6cf77521-fffd-36f4-6575-233a420a1a34.png)
4. ダウンロードしたファイルを「~/Library/Tableau/Drivers」に置きたいのですが、フォルダがない場合もあるので、まずはフォルダをlsコマンドで確認します。
```php
ls ~/Library/Tableau
# Drivers
```
フォルダがあったので、そこにダウンロードしたjarファイルを移動します、その後ファイルの移動の成功を確認します。
```php
# ダウンロードフォルダにあるjarファイルを「~/Library/Tableau/Drivers」に移動
mv /Users/niwa/Downloads/presto-jdbc-0.283.jar ~/Library/Tableau/Drivers
# lsで確認
ls ~/Library/Tableau/Drivers 
# presto-jdbc-0.283.jar
```
再度Tableau DesktopのPrestoを選択するとPretoに繋げられそうになっていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/fd1d8848-2651-b50c-5423-875227694c1a.png)

### Prestoへ接続
1. 接続に必要な、watsonx.dataのサーバー、ポート、カタログ等々に情報を入力していきます。これらの情報の取得方法は、[こちらの記事](https://qiita.com/nishikyon/items/2687572b6ecce1e54bb5)を参考にしてください。全ての情報を入力し「サインイン」をおして、以下のような画面へ遷移したら成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/9a92dcf2-2757-7c1b-fa74-602105c5633e.png)
2. watsonx.dataのPrestoに繋げてあるNetezzaの「airline_delay_cause_2018_local」を読み込もうと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/42da48f9-8131-b011-6715-3aaceee36d7b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/e3283ddc-1b47-9708-9619-14016f91dd6a.png)
3. Tableau Desktopの「テーブル」に必要なテーブル名「airline_delay_cause_2018_local」を入力して、虫眼鏡マークを押してください。テーブルがあれば、その下にテーブル名が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/004a9fcc-4565-5dab-5349-dc224970f6ad.png)
4. その後見つけたテーブル名をダブルクリックまたは右側にクリック＆ドロップするとテーブルを確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/aa6e20e6-d9a6-e260-9f8d-36057a6e1b84.png)
5. このデータを可視化して分析する場合は、左下の「ワークシートに移動」を選択します。そうすると以下のようなページに遷移します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/a6e80eae-53ca-31a1-1e89-39abd2b8a21a.png)
6. このデータは2018年の飛行機の遅延情報が入っているので、列にMonth（月）、行にAir Delayの合計を入れて、月毎の飛行機が遅れた時間を出してみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/eee94a70-ecbd-c432-a43b-f9a14623dde8.png)

### 蛇足
あまり使わないデータをレイクハウス（オブジェクトストレージ）にオフロードして、そのデータを読み込むのも当然できるかと思いますが、念の為。。。
1. 今回はテーブルを削除したくないので、watsonx.dataの「照会ワークスペース」を開き、「CREATE TABLE AS SELECT」にて、Netezza内にある「airline_delay_cause_2018_local」をICOSに「test2」というテーブル名で作成します。
```php
CREATE TABLE
iceberg_demo_niwa.test.test2
with (format = 'PARQUET')
AS SELECT * FROM 
nz_demo.demo.airline_delay_cause_2018_local
;
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/5178534c-6113-1afc-ae0a-563041e6cccc.png)
2. 左側の関連づけられたカタログ内に作成されたことが確認できればOKです。
その後TableauにてNetezzaの時と同様な処理を行ったところ、ICOS上にある「test2」も同様に見ることができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2505349/798b776a-e121-6fe7-75df-ae63f297c1c3.png)

## 所感
TabeauをBIツールとして使うことも多くあるので、watsonx.dataのPrestoに繋げられてよかったです。
Prestoのフェデレーションやレイクハウスを使うことで、ストレージを意識せずに欲しいテーブルを移動せずにすぐに使えるのはいいと思います。ただ、欲しいデータがどこにあるのかを把握しなきゃいけないので、そこは自然言語で問い合わせをすることができる、Semantic Automationが早く出てくることを願ってます。
また、今後マルチエンジン対応した時に、Db2 WarehouseやNetezza、snowflake、Redshiftなどのエンジンを使い分けた際のスピード感や、オブジェクトストレージとブロックストレージに入れた時のスピードの違いも味わってみたいです。