目次
NULL値定数変換のバージョン差異
2025-11-20
Pentaho 9とPentaho 10の仕様差異を久々見たのでメモ
概要
デフォルト設定(オプション KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=N )の状態で、 Pentaho 9 と Pentaho 10 の仕様差異がステップ NULL値定数変換 で見られた。
この定義で対象項目(この例ではワード2)がnullだった場合の振る舞いに差異があった。
「置き換える値」には何も定義しない。
入力データはこれ。

変換結果はこうなる。
| バージョン | 変換結果 |
|---|---|
| Pentaho 9 | null |
| Pentaho 10 | 長さゼロ文字列 |
定義
データ変換定義
文字列として読み込みする。
項目ワード2の定義はするけど置換先のデータは登録していない。
項目ワード2がブランク判定なら“so”、非ブランク判定なら“not”に置き換えする。
実行結果(Pentaho 9)
デフォルト状態
デフォルト状態(オプション KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=N )で実行。
項目ワード2はnullとして取り込まれている。

変換先の定義が無かったのでnullだった場合はそのままnullになっている。

数式内のISBLANK([ワード2])の結果がTRUEになる事がわかる。つまりnullはブランクと判定される。

KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y
オプション KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y を設定して実行してみる。
項目ワード2がnullではなく(おそらく)長さゼロの文字列として読み込まれている。

項目ワード2はnullではないから変換もされない。

数式内のISBLANK([ワード2])の結果がFALSEになる事がわかる。つまり長さゼロの文字列は非ブランクと判定される。

実行結果(pentaho 10)
今現在、個人で Pentaho 10 を取得するのはハードルが高いので、実行結果等の例示できない。ごめん。
最近仕事で、類似の定義を扱った。
オプションがデフォルト状態でデータ変換定義を実行したところ、項目ワード2 が null の時 NULL値定数変換 を通すと長さゼロの文字列に無条件で変換される事象を経験した。
意図としては何か要件が増えた時用に配置しておいて通常は無変換にしたかったんだと思われる。
Pentaho 9からのPentaho 10への移行で、無変換を期待したのに、無条件に変換される事になってしまった。
結構な影響がある状態。青くなった。
