SPSS Modelerからwatsonx.data(Presto)に接続する

SPSS Modeler18.6からwatsonx.data(Presto)への接続がサポートされています。insightsoftwareのSimba Presto ODBC driversで接続します。

* テスト環境
    * Windows 11 64bit
    * Modeler 18.6
    * Simba Presto ODBC drivers 1.2.18
    * watsonx.data SaaS(Presto 0.286)


# ODBC接続
ODBCのドライバー導入と接続設定は以下の手順で行います。

watsonx.data SaaS版のPresto エンジンにSimba ODBC Driverからアクセス - Qiita 

https://qiita.com/spssfun2017/items/e34d78c7531bbce4d766

# Modelerからの接続
データベースインポートノードで「新規データベース接続の追加」を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/391a64e8-889d-68d7-6151-a25b6f4ea597.png)


データソースで設定したデータソースを選び、ユーザーとパスワードを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/94288ccb-f015-b470-d152-69c0a52a7322.png)


接続ができたら、OKで閉じます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/a542c3eb-2a19-890f-7092-79d1ca94c021.png)



テーブル名を指定し、「プレビュー」します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/256804a3-37ff-cdd2-b2a3-3fb108e8f730.png)


参照できました。日本語データも読めています
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/dbc8183d-731d-bb7d-bde6-75722cb1a8a7.png)


SQLプッシュバックもできています。

![{391AFD78-D509-4E92-8594-BA9940807D71}.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/0faa6743-c7dc-0bf5-41c7-deb260d73765.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/24ff052e-e231-ecd7-8e1c-fea9c228e3d1.png)


# リリースノート記載の注意事項

リリースノートにいくつか注意事項が載っています。

https://www.ibm.com/support/pages/release-notes-ibm-spss-modeler-186

以下機械翻訳して一部注を入れたものを掲載します。

Presto
- データソース接続の追加
    - 注: SDAPにPrestoのODBCドライバーは含まれませんので、ユーザーは自身でPresto ODBC ドライバーを入手する必要があります。
    - [このドキュメント](https://www.ibm.com/docs/ja/spss-modeler/18.6.0?topic=node-adding-database-connection)に従って、新しいデータソース接続を追加します。

- データを挿入するためのデータベース エクスポート ノードの変更
    - データベース ソース ノードをソースとして使用し、データベース エクスポート ノードを Presto の作成モードで使用する場合は、新しいテーブルを正確に定義するために必要な正確なデータ型を指定する必要があります。
    - この要件が存在するのは、Presto が厳密なデータ型の互換性を強制し、値自体に互換性があっても異なるデータ型間の挿入を許可しないためです。たとえば、VARCHAR(20) フィールドから VARCHAR(40) フィールドにデータを挿入しようとすると、エラーが発生します。
        - [このドキュメント](https://www.ibm.com/docs/ja/spss-modeler/18.6.0?topic=node-database-export-schema-options)の「SQL データ型の設定」を参照してください。

- Presto スキーマは大文字と小文字を区別しません
    - Presto スキーマは大文字と小文字を区別しないため、大文字の列名を持つテーブルを作成しても効果はありません。Presto はすべての列名を自動的に小文字に変換します。
    - Presto からデータを取得すると、すべての列名が小文字で表示されます。
    - 注: ユーザーは大文字と小文字の区別を無効にする必要はありません。

- Presto のバッチ挿入はサポートされていません
    - SPSS Modeler は、Presto の制限により、次のシナリオでは Presto を使用したバッチ挿入をサポートしていません:
        - 入力ファイルからデータベースにデータを挿入する。
        - SQL プッシュバックなしでデータベース間の挿入を実行する。
    - バッチコミットを使用した場合は`HY000[1060] [Simba][Presto] (1060) Presto Query Error: Current transaction has already been aborted (22)`のエラーになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/1a1b1bf3-4c2e-0437-2cec-b1e207e58605.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/9b1d4197-f228-0311-c27b-d1fa1b0a1961.png)

# その他注意事項
## データベース関数は未サポート
残念ながら[[データベース関数](https://www.ibm.com/docs/ja/spss-modeler/18.6.0?topic=functions-database
)、データベース・ウィンドウ集計は未サポートでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/280f0d3b-ad59-5f57-acfd-3cd56d6673b9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/fdedbe4c-f991-e9c0-bbb7-d230209ac977.png)