BigQuery - необходимость разметки - PullRequest
0 голосов
/ 23 сентября 2018

Я проектирую таблицу BigQuery, которая никогда не истекает.Это скорее таблица, в которой строка хранится на основе идентификатора продукта.Могут быть ежедневные вставки, и один и тот же Идентификатор продукта может быть вставлен снова (например, ведение исторических данных).

В этой таблице будет написано ПРОСМОТР, который будет считывать последнюю версию Идентификатора продукта на основе последней вставленной временной отметки..

SELECT ARRAY_AGG(PRODUCTS ORDER BY INSERT_TIMESTAMP DESC LIMIT 2)[OFFSET(0)]   from dataset1.PRODUCTS  
  group by PRODUCTID

Поможет ли разбиение этой таблицы на основе INSERT_TIMESTAMP?Я так не думаю.Пожалуйста, подтвердите.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Это зависит от того, как вы предпочитаете использовать таблицу.Если данные не растут в геометрической прогрессии, вы можете следовать той же структуре, которую вы используете в настоящее время.Если вы думаете, что сохраняющиеся данные в будущем станут огромными, то разделение таблицы и выполнение запросов в течение указанного временного диапазона - это хороший способ планирования.Вы также можете создать ежедневное / еженедельное / ежемесячное (на ваше усмотрение) материализованное представление, которое поддерживает самую последнюю агрегированную дату для всех идентификаторов продукта, чтобы вы могли объединить свое материализованное представление и запрос arr_agg с определенным диапазоном insert_timestamp для всего продуктаидентификаторы

SELECT
  ARRAY_AGG(PRODUCTS
  ORDER BY
    INSERT_TIMESTAMP DESC
  LIMIT
    2)[OFFSET(0)]
FROM
  dataset1.PRODUCTS
WHERE
  INSERT_TIMESTAMP >= `Last X Months Timestamp`
GROUP BY
  PRODUCTID
0 голосов
/ 23 сентября 2018

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

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