我有一个包含表单事务数据的配置单元表(高度简化)
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 的输出表,其中列条目作为该列中该特定 id 按时间戳排序时的最后一个非 NULL 值。
因此,所需的输出是:
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(Hive 中可能还不支持 IGNORE NULLS)。请建议我如何取最后一个非 NULL 值。