概要
Pythonコードを逐次実行によって処理結果を確認しながら作業を進めることができる対話型統合開発環境である JupyterLab からTDVで公開されるデータサービス(データベース)を利用する手順について説明します。
検証環境
| 製品 | バージョン | 動作環境 |
|---|---|---|
| JupyterLab | 3.3.4 | macOS Monterey (x86-64) |
| Python | 3.10.3 | |
| Java | OpenJDK 11.0.11 | |
| TDV | 8.5.2 | Windows Server 2019 |
事前準備
本記事では、Python環境構築およびJupyterLab環境構築手順に関する説明は割愛します。
Java
JupyterLab実行環境にJavaがインストールされていることを確認します。
本記事では、OpenJDK 11.0.11 を利用します。

また、環境変数JAVA_HOMEが設定されていることも確認します。

TDV接続用JDBCドライバ
JupyterLabから読み取り可能なディレクトリにcsjdbc.jarを配置します。

TDV8.5.2の場合、TDV接続用JDBCドライバはeDelivery Siteにて提供されるTIB_tdv_drivers_8.5.2_all.zipを展開後の以下のパスに存在します。
apps/jdbc/lib
Pythonパッケージ
以下のPythonパッケージを pip や Anaconda などを利用してインストールします。
JupyterLab
JupyterLabのNotebook上で以下を行います。
1. TDV公開テーブルに対してJDBCで接続
最初にライブラリをインポートします。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import jaydebeapi
次に、TDV Serverに接続するためのJDBC接続文字列や認証情報を記述します。
以下の例では、examplesデータベースにcompositeドメインのadminユーザで接続します。
TDV Serverのホスト情報やadminのパスワード、JDBCドライバのパスはダミー値としています。
url = "jdbc:compositesw:dbapi@xxx.xxx.com:9401?domain=composite&dataSource=examples"
driver = 'cs.jdbc.driver.CompositeDriver'
user = "admin"
password = "xxx"
jarfile = '/xxx/.../xxx/csjdbc.jar'
conn = jaydebeapi.connect(driver, url, [user, password], jarfile)
2. クエリを実行した結果をdataframeに格納
接続したTDV Serverのtutorial.salesテーブルに対してクエリを実行し、結果をdataframeに格納します。
sqlData = "SELECT ProductID, ProductName, CategoryID, CategoryName, ProductDescription, SerialNumber, UnitPrice, ReorderLevel, LeadTime, Status, Discount from tutorial.sales"
df= pd.io.sql.read_sql(sqlData, conn)
3. dataframeを確認
dataframeの内容を確認します。
df.head(15)
以下のように先頭15行が表示されることを確認します。

4. dataframeを可視化
CategoryName別の件数を可視化します。
plt.figure(figsize=(20,10))
chart = sns.countplot(
data=df,
x='CategoryName'
)
以下のようにグラフが表示されることを確認します。

Notebook全体のスクリーンショット


