努力したWiki

推敲の足りないメモ書き多数

ユーザ用ツール

サイト用ツール


documents:etl:pentaho:pentaho-013

文書の過去の版を表示しています。


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への移行で、無変換を期待したのに、無条件に変換される事になってしまった。
結構な影響がある状態。青くなった。

documents/etl/pentaho/pentaho-013.1763591638.txt.gz · 最終更新: by k896951

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki