1

データに多くの null エントリがあります。後で処理するため、null のデフォルト値を文字列「other」に設定できれば非常に役立ちます。これを行う方法が見つかりませんでした (バージョン 0.8.1-cdh3u4)

また、NULL を返す可能性のある GENERATE ステートメントにいくつかの変数があり、NULL の代わりに「その他」の文字列を取得するには、SQL DECODE 関数に似たものが必要になります。

例:

tmp = FOREACH dump GENERATE site, REGEX_EXTRACT(name, '^(?:([^.]+)\\.?){1}', 1) AS project, ((ami MATCHES '.*datatype.*') ? REGEX_EXTRACT(name, '^(?:([^.]+)\\.?){5}', 1) : 'other') AS datatype, ami, duid, nbfiles, length, rnbfiles, rlength, name; 

ここで: 'site' と 'datatype' は空の文字列 (有効) を返す可能性があり、null として解釈されますが、代わりに "other" にする必要があります。

どうもありがとう。

4

1 に答える 1

1

私が見つけたのは ?: 三項演算子だけでした。これにより、豚のスクリプト全体が少し冗長になりますが、うまく機能します:-)

(((ami MATCHES '.datatype.') ? REGEX_EXTRACT(name, '^(?:([^.]+)\.?){5}', 1) : 'other') IS NULL ? 'other' : ((ami MATCHES '.datatype.') ? REGEX_EXTRACT(name, '^(?:([^.]+)\.?){5}', 1) : 'other')) AS datatype
于 2012-06-12T05:32:30.853 に答える