#sql #google-bigquery
#sql #google-bigquery
Вопрос:
У меня есть две таблицы, как показано ниже:
TableA: host, timestamp, type
TableB: host, timestamp, type
Я хотел бы объединить эти две таблицы по столбцу хоста и метке времени. Он возвращает значение null, потому что обычно между метками времени существует разрыв в несколько секунд, поэтому они не совпадают. Поэтому я хочу объединить их на основе хоста и метки времени (только дата, час и минуты).
столбец метки времени выглядит следующим образом : 2020-11-06 23:33:03.448 UTC
Я создал запрос ниже, который основан только на часах, я хотел бы включить день, минуты (и, возможно, секунду).
with tableA as (
SELECT
EXTRACT(HOUR from timestamp) as hour,
...
),
tableB as (
SELECT
EXTRACT(HOUR from timestamp) as hour,
...
)
SELECT *
FROM tableA
JOIN tableB
USING(host,hour)
Ответ №1:
Используйте timestamp_trunc()
:
with tableA as (
SELECT TIMESTAMP_TRUNC(timestamp, HOUR ) as hour,
...
),
tableB as (
SELECT TIMESTAMP_TRUNC(timestamp, HOUR ) as hour,
...
)
SELECT *
FROM tableA JOIN
tableB
USING(host, hour);