2
1

More than 1 year has passed since last update.

SPSS ModelerでClickHouseに接続する(Windows)

Last updated at Posted at 2022-06-29

SPSS Modeler 18.4からClickHouseがサポートされました。
接続テストをしてみました。

  • テスト環境

    • Modeler 18.4
    • Windows 11
    • ClickHouse 22.3.7.28
    • ClickHouse ODBC Driver Release 1.1.10.20210822
  • 修正履歴

    • 制約についての記述を追加

*サンプルストリーム

1. ODBCのセットアップ

以下の手順でODBCをセットアップします。SDAPにはODBCドライバーがないのでNativeのODBCドライバーを使います。

ClickHouseにWindowsのODBCで接続する - Qiita

2. Modelerからの接続

データベースのエクスポートノードかインポートノードで<新規データベース接続の追加...>を選びます。

image.png

1で登録したデータソースを選び、ユーザーとパスワードを入力して「接続」ボタンをクリックします。
image.png

接続ができましたら「OK」で閉じます。
image.png

3. データの書きだし

SQLプッシュバックを確認するためにストリームのプロパティの「オプション」タブの「ログとステータス」でSQLメッセージをロギングするチェックを付けます。

image.png

データベースのエクスポートノードで「テーブル名」を指定して「実行」をクリックします。

image.png

実行後メッセージを確認するとCREATE TABLEしてINSERTしていることがわかります。
image.png

CREATE TABLE `COND3N_J1000` 
( `機械ID` UInt32,`経過時間` UInt32,
`温度` UInt32,`電力` UInt32,`メッセージ` String ) 
ENGINE = MergeTree() ORDER BY tuple()

4. データの読みだし

データベースのインポートノードで「データソース名」と「テーブル名」を指定して、テーブルノードを「実行」します。
image.png

正しく読むことができました。日本語の列名やデータも読めています。
image.png

実行後メッセージを確認するとGROUP BYがプッシュバックしていることがわかります。
image.png

5.制約について

3つの制約がマニュアルに記載されています。

5.1 SQLプッシュバックは時間タイプではサポートされていません(ClickHouseに時間タイプがないため)

一通りのデータ型をテストしてみます。時間型も入っています。

image.png

時間型の列はVARCHAR(32)で定義されました。

image.png

CREATE TABLE `データ型テスト` ( 
`INT` UInt32,
`FLOAT` Float64,
STR1 String,
STR2 String,
`DAY` Date,
TS DateTime,
`TIME` VARCHAR(32) ) 
ENGINE = MergeTree() ORDER BY tuple()

プレビュー結果は以下のようになりました。
image.png

5.2 SQLプッシュバックは、データベースエクスポートノードのマージ機能(UPSERT)ではサポートされていません

DBエクスポートノードには、「テーブルに結合」というUPSERTの機能があります(たいていは洗い替えしてしまうので、あまり使っている話は聞いたことがないのですが)。この機能がサポートされていません。「HY010 [Microsoft][ODBC Driver Manager] 関数シーケンス エラーです。」のエラーになりました。

image.png

image.png

5.3 日付のベースラインは1970-01-01です

日付型の起点がModelerは1900-01-01ですが、ClickHouseは1970-01-01です。そのため1970より古いデータが入りません。

1900-01-01のデータを入れてみます。
image.png

自動的に1970-01-01のデータに変換されました。
image.png

2
1
0

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