6 июня 2018 — OWOX BI Pipeline. Готовьтесь к переходу на партиционированные таблицы в потоках Mandrill, AppsFlyer, SparkPost

В период с 11 по 15 июня в потоках Mandrill→BigQuery, AppsFlyer→BigQuery и SparkPost→BigQuery произойдет переход на сбор данных в партиционированные таблицы — вместо таблиц с разделением по дням.

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

Что такое партиционированные таблицы (partitioned tables)

В партиционированной таблице весь объем данных разделен на части (партиции). При обработке данных в такой таблице работа логически происходит с одной большой таблицей, при этом физически объем данных разделен на отдельные части по одному из двух критериев:

  • Время записи данных в таблицу (по умолчанию)
  • Время из заданного поля таблицы одного из форматов даты

Ранее, при обработке данных за несколько дней в разделенных по днях таблицам необходимо было использовать table wildcard functions (TABLE_DATE_RANGE). Теперь, в партиционированных таблицах для обработки данных за определенный промежуток времени в запросах необходимо указывать значение PARTITIONTIME.

Подробнее о запросах к партиционированным таблицам — в справке Google BigQuery.

Преимущества перехода на партиционированные таблицы

  • В партиционированных таблицах можно делать запросы к строкам за определенный час, минуту и т.д — запросам не нужно обрабатывать данные в таблице за весь день.
  • Обновлять и удалять записи в партиционированных таблицах гораздо удобнее. Поскольку функции DML нельзя применить сразу к нескольким таблицам, раньше необходимо было делать запрос для каждой таблицы. Для партиционированной таблицы же нужен всего один запрос. В том числе, это позволит с помощью одного запроса удалить или анонимизировать данные пользователя в соответствии с требованиями GDPR.

Как произойдут изменения в потоках

В период с 11 по 15 июня мы создадим новые партиционированные таблицы и все данные в потоках Mandrill→BigQuery, AppsFlyer→BigQuery и SparkPost→BigQuery будут отправляться в них.

Названия партиционированных таблиц будут такими же, как у таблиц с разделением по дням.

Таблицы будут партиционированы по времени записи данных в таблицу. Это время может отличаться от времени совершения события и времени отправки события в сервисе-источнике данных.

Исторические данные в таблицах с разделением по дням будут скопированы в таблицы с партициями, после чего мы удалим исходные таблицы с разделением по дням.

Все исторические данные будут скопированы в течение недели после переключения сбора данных в партиционированные таблицы.

Обратите внимание: Начните использовать новые запросы только после того, как все исторические данные будут скопированы.

Как изменения повлияют на обработку данных

Структура таблиц в BigQuery не изменится. Таблицы, которые вы получаете в результате SQL-запросов также не изменятся.

В ваших запросах необходимо будет изменить только способ выбора диапазона дат. Если ранее вы выбирали даты с помощью FROM TABLE_DATE_RANGE(...), то в партиционированных таблицах используйте условие WHERE PARTITIONTIME > AND < (BETWEEN).

____________________________1_.png

Поскольку партиционированные таблицы разделены по времени добавления данных, объемы данных за определенный день могут незначительно — на секунды — отличаться в сравнении с прошлым методом разделения таблиц .

Например, ранее в AppsFlyer таблицы делились по дням на основе поля event_time. В партиционированных таблицах разделение на партиции происходит по времени добавления записи в таблицу, поэтому в некоторых случаях время в этих двух полях может отличаться. События, отправленные на границе дня, могут попасть в партицию, отличную от времени в event_time.

Если у вас есть вопросы о партиционированных таблицах, обращайтесь к нам на bi@owox.com. Будем рады ответить :)

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 0
Еще есть вопросы? Отправить запрос

0 Комментарии

Войдите в службу, чтобы оставить комментарий.