Как реализовать снимок logi c в большом запросе - PullRequest
0 голосов
/ 03 августа 2020

Данные доступны в таблице этапов Google. Я пытаюсь реализовать снимок журнала c. Я имею в виду, что если данные обновляются, они должны содержать старую запись, а также обновленную запись. Например,

Name Project  EFF_START_DATE  EFF_END_DATE
Bob   P1      01-July-2020    15-July-2020
Jack  J1      01-July-2020    15-July-2020 

После реализации журнала снимков c данные должны быть такими, как показано ниже:

Name Project  EFF_START_DATE  EFF_END_DATE
Bob   P1      01-July-2020    15-July-2020
Jack  J1      01-July-2020    15-July-2020 
Bob   P2      15-July-2020    31-July-2020
Jack  J2      15-July-2020    31-July-2020

Он должен содержать как старую запись, так и обновленную запись.

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

BigQuery - это аналитическая база данных, почему вы не используете функцию аналитики?

Регистрируйте только дату нового проекта в качестве даты начала и с помощью функции аналитики LEAD для расчета даты окончания ( дата начала следующего проекта)

with sample as (
select "Bob" as name,   "P1" as project,  "01-July-2020" as date
  UNION ALL
select "Jack" as name,   "J1" as project,  "01-July-2020" as date
  UNION ALL
select "Bob" as name,   "P2" as project,  "15-July-2020" as date
  UNION ALL
select "Jack" as name,   "J2" as project,  "15-July-2020" as date)

select name, project, date as start_date, 
lead(date) OVER (partition by name order by date ASC) as end_date 
from sample order by name

Результат:

введите описание изображения здесь

У вас работает? Достаточно?

0 голосов
/ 03 августа 2020

BigQuery не имеет встроенной функции для того, что вы ищете, поэтому вам в основном потребуется программировать / управлять своими данными в соответствии с вашим вариантом использования, например, если вы хотите обновить data, вам нужно будет выполнить операцию вставки вместо операции обновления, чтобы сохранить старые данные.

Что касается того, как спроектировать вашу таблицу, чтобы сделать запросы более эффективными по производительности и стоимости, я думаю, вы Вы можете просмотреть различные доступные варианты разбиения и выбрать тот, который лучше соответствует вашим требованиям к моментальному снимку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...