KETTLE_XML_MISSING_TAG_YIELDS_NULL_VALUEをYにしていると、ステップ「XMLデータ取得(Get data from XML)」でXPathに関数を使えない。
Pentaho 9.4 でも Pentaho 10.2でも再現する。
データベースでの空データとnullの扱いを調整するためのパラメタ KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL の追加が発端の模様。
https://github.com/pentaho/pentaho-kettle/commit/6d0e66de465e25f2623614e2e9971f42be3673bc
区別が必要になったためか、他にもパラメタが新設された。KETTLE_XML_MISSING_TAG_YIELDS_NULL_VALUEもそのうちの一つ。
# | プロパティ | 説明 | デフォルト | 設定値等 |
---|---|---|---|---|
1 | KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL | Pentaho全体でのnull値扱い指定 | N | デフォルトはnullとemptyを区別しない Yを指定するとnullとemptyを区別する |
2 | KETTLE_DO_NOT_NORMALIZE_NULL_STRING_TO_EMPTY | nullの文字列をemptyに変換するか否か | N | デフォルトはnullをemptyへ変換する Yを指定するとnullをemptyへ変換しない |
3 | KETTLE_XML_EMPTY_TAG_YIELDS_EMPTY_VALUE | 空タグ時、値にnullを生成するか否か | N | デフォルトはnullを生成する Yを指定するとnullを生成しない(empty) |
4 | KETTLE_XML_MISSING_TAG_YIELDS_NULL_VALUE | 指定タグが無い場合nullを生成するか否か | N | デフォルトはemptyを生成する Yを指定するとnullを生成する |
empty : ISBLANK()=Trueになる値
KETTLE_XML_MISSING_TAG_YIELDS_NULL_VALUE=Y で事が起こるのは、XPathの関数をノード(タグ)だと思って探しに行く処理になっているのではないかと。
※このパラメタ有効時は、すべてノード(タグ)だと思って処理しているもしくは関数が来ることを想定していない
GitHubリポジトリのコードが現行と一致すると仮定する。
KETTLE_XML_MISSING_TAG_YIELDS_NULL_VALUE=Y の時はSelectSingleNodeメソッドを使うようだけど、ノード検索メソッドならXPath関数は当然ヒットしない。
ValueOfメソッドはXPath関数の評価まで面倒を見てくれているんじゃないかな。