google-bigquery - 将 2 个表与每行之间的日期映射

标签 google-bigquery

我有 2 个带有列的表格,如下所示:

表A

rows, key_a, date_a
   1,  'k1', '2015-11-12'
   2,  'k2', '2015-11-20'
   3,  'k3', '2015-12-01'

表B

row, key_b, date_b,     Code
 1,  'k1', '2015-10-12', C1
 2,  'k1', '2015-09-12', C2
 3,  'k1', '2015-11-01', C3
 4,  'k1', '2015-10-20', C4
 5,  'k1', '2015-08-19', C5
 6,  'k1', '2015-11-02', C6
 7,  'k2', '2015-10-12', C7
 8,  'k2', '2015-09-12', C8
 9,  'k2', '2015-11-01', C9
 10,  'k2', '2015-10-20', C10
 11,  'k2', '2015-08-19', C11
 12,  'k2', '2015-11-02', C12
 13,  'k3', '2015-10-12', C13
 14,  'k3', '2015-09-12', C14
 15,  'k3', '2015-11-01', C15
 16,  'k3', '2015-10-20', C16
 17,  'k3', '2015-08-19', C17
 18,  'k3', '2015-11-02', C18

我想查找表 B 中的行,其中 date_b 首先具有相同的 key_b,并且仅选择表 B 中 date_b 之间的数据date_adate_a - 30

意思是:

 'k1' => '2015-11-12' to '2015-10-12' => rows view (1,3,4,6)
 'k2' => '2015-11-20' to '2015-10-20' => rows view (9,10,12)
 'k3' => '2015-12-01' to '2015-11-01' => rows view (15,18)

结果

key_a, date_a,       Code
 'k1', '2015-11-12', C1
 'k2', '2015-11-20', C10
 'k3', '2015-12-01', C15

我该怎么做?

最佳答案

SELECT key_a, date_a, code
FROM (
  SELECT *, ROW_NUMBER() OVER(PARTITION BY key_a ORDER BY date_b) AS num
  FROM (
    SELECT  key_a, date_a, date_b, code,
    FROM    table_a AS a 
    JOIN    table_b AS b
    ON      a.key_a = b.key_b
    WHERE date_b BETWEEN DATE(DATE_ADD(TIMESTAMP(date_a), -1, "MONTH")) AND date_a 
  )
)
WHERE num = 1
ORDER BY key_a

结果:

key_a   date_a      code
k1      2015-11-12  C1
k2      2015-11-20  C10
k3      2015-12-01  C15

关于google-bigquery - 将 2 个表与每行之间的日期映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34083801/

相关文章:

google-bigquery - Python 或仅 JavaScript 中的 BigQuery UDF

sql - 谷歌大查询 : Forward Filling: IGNORE in Window Function

google-bigquery - BigQuery : change date partitioned table to ingestion time partitioned table

python - pandas read_gbq 返回 httplib.ResponseNotReady

sql - 如何统计一个表中的单词到另一表中的注释的出现次数

google-bigquery - BigQuery ML 如何处理 NULL 数字特征?

google-bigquery - 当数据实际包含多个空格时,BigQuery GUI 仅显示 1 个空格

google-bigquery - 如何为BigQuery表中的记录生成唯一键值?

r - 出错时再次循环

mysql - 将数据从 MySQL 复制到 Google BigQuery