[英]Impala SQL - Get Maximum Time Stamp Records - Not Yielding Results
我有下表,需要在每個源和表中獲取具有最新時間戳的記錄。 時間戳為Unix格式,最新的時間戳為1531204200。
表格上的數據如下:
src_sys_id st_mgmnt_cd tblnm execn_ts rcd_cnt
SOURCE1 HOT SUBSCRBR_ACCT_HIST 1531204200 28680
SOURCE1 COLD SUBSCRBR_ACCT_HIST 1531204200 11874
SOURCE1 WARM MEMBR_HIST 1531204200 13698
SOURCE1 WARM SUBSCRBR_ACCT_HIST 1531204200 24211
SOURCE1 HOT MEMBR_HIST 1531204200 18500
SOURCE2 FINAL CLAIM 1531204200 5000
SOURCE2 EXPIRED CLAIM 1531204200 8000
SOURCE2 WARM CLAIM 1531204200 20000
SOURCE2 HOT CLAIM 1531204200 45000
SOURCE2 COLD CLAIM 1531204200 10000
SOURCE3 WARM INDIV_CVRG 1531204200 2763
SOURCE3 HOT INDIV_CVRG 1531204200 11874
SOURCE1 HOT MEMBR_HIST 1528650875 32198
SOURCE2 WARM CLAIM 1528650875 28000
SOURCE2 HOT CLAIM 1528650875 60000
SOURCE3 HOT INDIV_CVRG 1528650875 14637
預期輸出如下:
src_sys_id st_mgmnt_cd tblnm execn_ts rcd_cnt
SOURCE1 HOT SUBSCRBR_ACCT_HIST 1531204200 28680
SOURCE1 COLD SUBSCRBR_ACCT_HIST 1531204200 11874
SOURCE1 WARM MEMBR_HIST 1531204200 13698
SOURCE1 WARM SUBSCRBR_ACCT_HIST 1531204200 24211
SOURCE1 HOT MEMBR_HIST 1531204200 18500
SOURCE2 FINAL CLAIM 1531204200 5000
SOURCE2 EXPIRED CLAIM 1531204200 8000
SOURCE2 WARM CLAIM 1531204200 20000
SOURCE2 HOT CLAIM 1531204200 45000
SOURCE2 COLD CLAIM 1531204200 10000
SOURCE3 WARM INDIV_CVRG 1531204200 2763
SOURCE3 HOT INDIV_CVRG 1531204200 11874
我用下面的查詢
Select distinct s1.src_sys_id ,
s1.st_mgmnt_cd,
from_unixtime(CAST(s2.execn_ts AS BIGINT)) as assessment_dt,
s1.rcd_cnt
from dlrm_data_retention.ret_st_mgmnt_sum s1
INNER JOIN
( select src_sys_id,st_mgmnt_cd,rcd_cnt,execn_ts,row_number() over (partition by src_sys_id order by execn_ts desc) as seqnum
from dlrm_data_retention.ret_st_mgmnt_sum
) s2
on s1.src_sys_id = s2.src_sys_id and s2.seqnum = 1
這沒有產生結果。 任何幫助表示贊賞。
您可以組合使用ROW_NUMBER加OVER(PARTITION BY + ORDER BY):
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY table.src_sys_id,
table.st_mgmnt_cd
ORDER BY table.execn_ts DESC) AS row_number
FROM table) as time_sorted
WHERE row_number = 1
) as recent
WHERE row_number=1;
首先,您需要子選擇所需的分區(又名GROUPS)並對其進行排序-在您的情況下,按時間戳記。 每個組的行號從1..n開始。
所需的結果均具有row_number = 1。
請參閱https://www.cloudera.com/documentation/enterprise/5-6-x/topics/impala_analytic_functions.html#over了解有關Impala-OVER語法的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.