Modeler 18.6のwatsonx.data関連の修正で気づいたものをまとめました。
1. 文字列型などで最初の一文字目しか表示されない。
文字列型でFord、Dodge、Chevroletのデータが入っていたのですが、以下のように一文字目しか表示されませんでした。
Simba Presto ODBC drivers 1.4.0で発生していました。Simba Presto ODBC 1.4.1.1000 で解決しています。
2. TIME型の列にINSERTをするとConversion errorで失敗する
TIME型の列にINSERTをすると以下のエラーが発生していました。
[2025-01-23 10:47:30] SQL を実行中: INSERT INTO "spsstest"."timetest" ("TIME") VALUES ( ?)
[2025-01-23 10:47:30] 22003[40470] [Simba][Support] (40470) Conversion error at column 1 and row 1: numeric value out of range.
Known Issue: DT423430
修正ファイル : IF006
3. datetime_now関数の結果が$null$になってしまう
datetime_now関数の結果が$null$になってしまっていました。
Known Issue: DT423431
修正ファイル : IF003
4. to_date(@TODAY
)関数を使用するとPresto Query Errorが発生する
Known Issue: DT434836
https://www.ibm.com/mysupport/s/ibm-community-support-search-results?q=DT434836&language=en_US
修正ファイル : IF008
5. random関数で返る数値の範囲が想定と異なる
random(2.0)と設定した場合、「0 < ... <= 2.0」が想定される範囲です。
しかしながら、ストリームを実行した際のSQLでは「RAND() * 2.0」のFunctionが使用されていました。
Prestoのドキュメントを参照するとrand関数はrandom関数と同じであり、random(n)ではnは含まれません。https://prestodb.io/docs/current/functions/math.html#random-double
Returns a pseudo-random number between 0 and n (exclusive)
「0 < ... < 2.0」 となるため、想定した範囲(0 < ... <= 2.0)と異なり2.0を含めることができません。
Known Issue: DT436036
修正ファイル : IF010
「2.0 - (RAND() * 2.0)」が実行されるように修正されました。
6. データ区分ノードの「ランダムシードの設定」
データ区分ノードで「ランダムシードの設定」を行うと、間違った範囲でデータ区分が行われ、また繰り返した時に同じ結果を得られません。
「ランダムシードの設定」にチェックを入れないでください。
以下のように「ランダムシードの設定」にチェックを入れて実行すると、すべてのデータが「2」になってしまいました。
これはFLOOR(RAND(1234567) * 100.0)を行っているためです。RANDの引数は、乱数範囲の上限でありランダムシードではないためです。
SELECT T0.C0 AS C0,T0.C1 AS C1,T0.C2 AS C2,T0.C3 AS C3,T0.C4 AS C4,T0.C5 AS C5,T0.C6 AS C6,T0.C7 AS C7,T0.C8 AS C8,(CASE WHEN (T0.C9 < 50) THEN '1_学習' ELSE '2_テスト' END) AS C9 FROM (SELECT T0."car" AS C0,T0."mpg" AS C1,T0."cylinders" AS C2,T0."displacement" AS C3,T0."horsepower" AS C4,T0."weight" AS C5,T0."acceleration" AS C6,T0."model" AS C7,T0."origin" AS C8,FLOOR(RAND(1234567) * 100.0) AS C9 FROM "spsstest"."cars" T0) T0
ランダムシードによって結果を固定することができませんので、同じデータ区分結果を得たい場合には、データ区分ノードのキャッシュを有効化にしたり、一旦別のテーブルに出力して結果を保存してください。
7. データベース・キャッシング用のテーブルの作成に失敗
キャッシュを行った場合にデータベースキャッシングが行われず、メッセージに以下のWarningが出ていることがありました。
「データベース内キャッシング用のテーブルの作成に失敗しました。 代わりにファイル キャッシュを使用。」
これは、テーブルの作成権限がない場合に発生することがあります。その場合は、watsonx.dataのアクセス制御ポリシー設定でテーブルの作成権限を与えてください。
4. fix
フィックスが必要な場合は、IBM Supportにフィックスを要求してください。
watsonx.dataのアクセス制御ポリシー設定
- テスト環境
- Windows 11 64bit
- SPSS Modeler Client 18.6
- Simba Presto ODBC drivers 1.4.1.1000
- watsonx.data SaaS Enterprise (Version : 2.1.0.0.2/Console Build : wxd-v2.1.0-2.1.0-20250123142017b2952)
- Presto (Java) v0.286