BigQuery объединяет наборы данных, используя даты и диапазоны дат - PullRequest
0 голосов
/ 19 февраля 2019

Есть ли способ объединить 2 таблицы по серийному номеру и использовать диапазон дат из одной таблицы и даты из другой?

У меня есть 2 таблицы: table.events содержит данные о событиях для трекера, а table.dates содержит дату работы трекера.Трекер может работать несколько раз и поэтому имеет UID при каждом включении.Например, Tracker A может иметь UID A1, A2, A3 и т. Д.

Как я могу объединить table.events с такими данными, как

Date,Serial,Quality,
12/01/2019,A,1,
12/01/2019,B,2,
13/01/2019,C,3,
14/01/2019,A,4,
15/01/2019,A,5,
16/01/2019,B,6,
17/01/2019,B,7,
17/01/2019,C,8,
17/01/2019,B,9

с table.dates

Start_Date,End_Date,Serial_id,
15/01/2019,18/01/2019,A1,
08/01/2019,14/01/2019,A2,
10/02/2019,18/01/2019,B1,
13/01/2019,16/01/2019,C1,
17/02/2019,18/01/2019,C2

Чтобы дать мне конечный результат, такой как

Date,Serial,Serial_id,Quality,Start Date,End Date
12/01/2019,A,A1,1,15/01/2019,18/01/2019
12/01/2019,B,B1,2,10/02/2019,18/01/2019
13/01/2019,C,C1,3,13/01/2019,16/01/2019
14/01/2019,A,A1,4,15/01/2019,18/01/2019
15/01/2019,A,A2,5,08/01/2019,14/01/2019
16/01/2019,B,B1,6,10/02/2019,18/01/2019
17/01/2019,B,B1,7,10/02/2019,18/01/2019
17/01/2019,C,C2,8,17/02/2019,18/01/2019
17/01/2019,B,B1,9,10/02/2019,18/01/2019

Любая помощь будет высоко ценится.

Редактировать:

Одна дата будет содержать более одного серийного номера, поэтому я хочу присоединиться и по серийному номеру.

Например:

У меня есть трекеры D1 и E1, которые оба отслеживали 23/01/2019.У меня есть отдельные записи в table.events для D и E, поэтому мне нужно будет сопоставить по диапазону дат и подстроке серийного идентификатора.

1 Ответ

0 голосов
/ 19 февраля 2019

Вы просто хотите join?

select a.*, b.*
from a join
     b
     on b.serial like concat(a.serial, '%') and
        a.date >= b.start_date and a.date <= b.end_date;
...