BigQuery - 如何按最接近的日期进行左连接?

问题描述 投票:0回答:1

使用 BigQuery,如何按客户评分表上最接近的日期对客户预订表进行左连接? 我想选择 Open_Date_Book 之前最接近的 Open_Date_Score?

enter image description here

想要的结果

enter image description here

google-bigquery google-analytics analytics
1个回答
0
投票

基本上,根据 ID 对数据进行分区,并对日期的密切程度进行排名,然后过滤日期以仅显示最接近的日期。此代码应该为您指明正确的方向 Customer Book Table=cbt 顾客评分表=cst

SELECT
cbt.ID,
cbt.Open_Date_Book,
cst.Score,
cst.Open_Date_Score
FROM
CustomerBookTable cbt
LEFT JOIN (
SELECT
ID,
Open_Date_Score,
Score,
ROW_NUMBER() OVER(PARTITION BY ID ORDER BY 
ABS(TIMESTAMP_DIFF(Open_Date_Score, 
Open_Date_Book, SECOND))) AS rn
FROM
CustomerScoreTable
JOIN
CustomerBookTable
ON
CustomerScoreTable.ID = CustomerBookTable.ID
WHERE
Open_Date_Score <= Open_Date_Book
) cst ON cbt.ID = cst.ID
WHERE
cst.rn = 1
© www.soinside.com 2019 - 2024. All rights reserved.