2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2025-01-23

* IBM Cloud上のSaaS版についての記載です

watsonx.dataは「単一の統合データ・プラットフォームですべての企業データを収集、保存、照会、分析するためのデータ管理ソリューションです。オープン・データ・フォーマットに最適化された、柔軟で信頼性の高いプラットフォームを提供します」とのことで、いわゆるデータレイクハウスです。SW版とSaaS版があります。

当記事はwatsonx.data SaaS版のPrestoエンジンにinsightsoftwareのSimba Presto ODBC driversからからアクセスするための方法について説明します。

今回試した実行環境は以下です:

  • Simba Presto ODBC drivers 1.2.18
  • watsonx.data SaaS(Presto 0.286)
  • Windows 11

1. 事前準備

watsonx.data SaaS版のPrestoエンジンにアクセスするための事前情報取得を参考に
watsonx.data SaaS版のPrestoエンジンにアクセスするための事前情報

  • ホスト名
  • ポート番号
  • IBM API key

を取得しておいてください。

尚、ドキュメントによるとIBM IAM tokenを使う方がワークロード的におすすめとのことですが、GUIでセットするという操作上IBM IAM tokenの入力は向かないと判断しましたので、ここでは記載しません。

また、今回接続するカタログとスキーマも準備をしておきます。
今回はiceberg_dataカタログのspsstestスキーマに接続します。

image.png

2. ODBCドライバーのダウンロード

以下からODBCドライバーをダウンロードします。ここではTrial版を導入します。

Presto ODBC Driver - Presto JDBC Driver - Simba

image.png

メアドなどを登録すると以下のように期間限定のライセンスファイルが送られてきます。
image.png

3. ODBCドライバーの導入

Simba Presto 1.2 64-bit.msiを起動します。
image.png

「Next」で進みます。
image.png

ライセンス条項に同意して「Next」で進みます。
image.png

導入場所を確認し、「Next」で進みます。
ここではデフォルトのC:\Program Files\Simba Presto ODBC Driver\で進みます。

image.png

「Install」で進みます。

image.png

「Finish」します。
image.png

メールで送られてきたライセンスファイルをC:\Program Files\Simba Presto ODBC Driver\libに置きます。
image.png

4. ODBCの設定

ODBCデータソースアドミニストレーター(64bit)を起動します。
image.png

「ドライバー」タブで導入されたODBCドライバーを確認します。
image.png

ユーザーDSNかシステムDSNで「追加」をします。
image.png

「Simba Presto ODBC Driver」を選びます。
image.png

以下の設定を行います。
Data source name: 任意の名前入力します。ここではwx.dataSaaSとしました。
Authorization Type: LDAP Authentication
User: ibmlhapikey
Password: #1 事前準備で得たAPIキー
Host: #1 事前準備で得たホスト名
Port: #1 事前準備で得たポート番号
Catalog: #1 事前準備のデータマネージャーで得たカタログ名
Schema: #1 事前準備のデータマネージャーで得たスキーマ名
Time Zone ID: UTC ←何を選ぶべきかは後述します。

image.png

「Test」をクリックします。
以下のように「SUCCESS!」が戻ればOKです。

image.png

各設定項目についてはマニュアルを参照してください。

Time Zone IDの設定

悩むのはTime Zone IDの設定です。

空欄にするか、Japanを指定するとODBCドライバーで扱う時間はJSTになり、SELECTした場合、DBに格納されているデータに+9時間加算させた値が返ります。INSERTした場合DBに保存されるのは、-9時間されたUTCになります。

例えば、2022-01-31 23:59:59というデータが入っている時に、Time Zone IDUTCに指定した場合、格納された値がそのまま戻ります。
{FDF1730B-FE37-433C-A4D2-B667A7074175}.png
しかし、Time Zone IDを空欄にするかJapanを指定した場合、+9時間された値が戻ります。
{610E020D-BB45-4671-A3E1-3A4E78A80337}.png

watsonx.dataのWebコンソールでは格納された値がそのまま参照されました。
image.png

presto-python-clientではTimeZoneの指定がなく、格納された値がそのまま戻ってきていました。
image.png
ただし、meta社のJDBCドライバー+DBeaverでは、デフォルト設定では+9時間された値が戻りました。
image.png

image.png

接続方法によって結果が異なり、どれを選ぶかの判断が難しいところです。ただ、DBに保存する時間データをUTCで統一するのであればJapan指定するのでもよいかもしれませんが、多くのケースの時間データはローカル時間で保存するのではないかと思います。

個人的には、ODBCドライバーはUTCで設定しておいた方が、無難かと思いました。

ただし、UTCを設定した場合は、current_timestampやlocaltimestampはUTCで戻ることになりますので、DATE_ADDを使って、

DATE_ADD('hour', 9, localtimestamp)`

のように+9時間で補正をして利用する必要があります。

image.png

ロギング

問題判別をする場合はLogging Optionを指定します。

image.png

以下のようにログが出力されます。

{D76ADE0D-F32E-413F-9EE0-0151FF1412E0}.png

3. 関連リンク

insightsoftware Presto Online Documentation

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?