フォームのトランザクションデータを含むハイブテーブルがあります (非常に単純化されています)
id Status Value UpdatedTimeStamp
515 Open 1 2014-05-08T11:43:27
516 Open NULL 2014-05-08T11:43:27
515 Answered 1 2014-05-09T11:43:27
515 Closed NULL 2014-05-10T11:43:27
517 Open NULL 2014-05-09T11:43:27
516 Closed NULL 2014-05-09T11:43:27
私のユースケースでは、タイムスタンプでソートしたときに、その特定の ID の列の最後の非 NULL 値として列エントリを持つ一意の ID を含む出力テーブルが必要です。
したがって、望ましい出力は次のとおりです。
id Status Value UpdatedTimeStamp
515 Closed 1 2014-05-10T11:43:27
516 Closed NULL 2014-05-09T11:43:27
517 Open NULL 2014-05-09T11:43:27
パーティションでウィンドウ関数を使用してそれを達成しようとしています
INSERT OVERWRITE TABLE testSample2 SELECT id, FIRST_VALUE (Status) OVER SortedData, FIRST_VALUE (Value IGNORE NULLS) OVER SortedData, FIRST_VALUE (UpdatedTimeStamp) OVER SortedData FROM testSample WINDOW SortedData (PARTITION BY id ORDER BY UpdatedTimeStamp DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING);
これにより、NullPointerException が発生します (おそらく、IGNORE NULLS は Hive ではまだサポートされていません)。NULL 以外の最後の値を取得する方法を教えてください。