IN Netezza で、日付の値が有効かどうかを確認しようとしています。SQLサーバーのISDATE関数のようなもの。
有効ではない 11/31/2013 のような日付を取得しています。Netezza でこの日付が有効かどうかを確認できるので、プロセスから除外します。
ありがとう
日付が有効かどうかを確認する Netezza 関数が組み込まれているとは思えません。これを行うために LUA 関数を作成するか、次のように「日付」ルックアップ テーブルに結合してみてください。
2 つの列を持つテーブルを作成します。
DATE_VALUE date
DATE_STRING varchar(10)
有効な日付のデータをこのテーブルにロードします (お気に入りのツール、Excel、Unix などでファイルを生成します)。これを使用するのがこのチェックだけの場合、DATE_VALUE ごとに複数の行 (異なる「有効な」形式) が存在することさえあります。例えば1900年から2100年までを記入すれば、その範囲内のデータであれば問題ありません。また、これは小さなテーブルでもあり、200 年間で 7,300 行しかありません。必要に応じてさらに追加します。NZ の日付データ型は AD1 から AD 9999 までなので、わずか 340 万行 (NZ では少ない) で完全に埋めることができます。
次に、無効な日付を含む行を分離するには、DATE_STRING でこのテーブルにaJOIN
またはEXISTS
/を使用します。NOT EXISTS
テーブルが非常に小さいため、netezza はテーブルをすべての SPU にブロードキャストする可能性が高く、パフォーマンスへの影響はわずかです。
Netezza Analytics Package 3.0 (無料ダウンロード) には、日付値を検証するいくつかの LUA 関数、isdate() および todate() が付属しています。インストール/コンパイルが非常に簡単です。