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からの接続
データベースのエクスポートノードかインポートノードで<新規データベース接続の追加...>を選びます。
1で登録したデータソースを選び、ユーザーとパスワードを入力して「接続」ボタンをクリックします。
3. データの書きだし
SQLプッシュバックを確認するためにストリームのプロパティの「オプション」タブの「ログとステータス」でSQLメッセージをロギングするチェックを付けます。
データベースのエクスポートノードで「テーブル名」を指定して「実行」をクリックします。
実行後メッセージを確認するとCREATE TABLEしてINSERTしていることがわかります。
CREATE TABLE `COND3N_J1000`
( `機械ID` UInt32,`経過時間` UInt32,
`温度` UInt32,`電力` UInt32,`メッセージ` String )
ENGINE = MergeTree() ORDER BY tuple()
4. データの読みだし
データベースのインポートノードで「データソース名」と「テーブル名」を指定して、テーブルノードを「実行」します。
正しく読むことができました。日本語の列名やデータも読めています。
実行後メッセージを確認するとGROUP BYがプッシュバックしていることがわかります。
5.制約について
3つの制約がマニュアルに記載されています。
5.1 SQLプッシュバックは時間タイプではサポートされていません(ClickHouseに時間タイプがないため)
一通りのデータ型をテストしてみます。時間型も入っています。
時間型の列はVARCHAR(32)で定義されました。
CREATE TABLE `データ型テスト` (
`INT` UInt32,
`FLOAT` Float64,
STR1 String,
STR2 String,
`DAY` Date,
TS DateTime,
`TIME` VARCHAR(32) )
ENGINE = MergeTree() ORDER BY tuple()
5.2 SQLプッシュバックは、データベースエクスポートノードのマージ機能(UPSERT)ではサポートされていません
DBエクスポートノードには、「テーブルに結合」というUPSERTの機能があります(たいていは洗い替えしてしまうので、あまり使っている話は聞いたことがないのですが)。この機能がサポートされていません。「HY010 [Microsoft][ODBC Driver Manager] 関数シーケンス エラーです。」のエラーになりました。
5.3 日付のベースラインは1970-01-01です
日付型の起点がModelerは1900-01-01ですが、ClickHouseは1970-01-01です。そのため1970より古いデータが入りません。