Потоки «Рекламные сервисы → Google BigQuery» собирают данные в партиционные таблицы — данные из каждого рекламного сервиса собираются в отдельную таблицу, разделенную по date/timestamp.
Благодаря этому способу партиционирования, поток OWOX BI загружает исторические данные из рекламного сервиса точно по датам. Обработка данных в таких таблицах происходит быстрее, чем в таблицах с партициями по ingestion-time. Каждый раз, когда вы обращаетесь к таблице с SQL-запросом, обработка запроса занимает меньше времени и стоит дешевле.
При этом, у таблиц с партициями по date/timestamp есть ограничение: в SQL-запросах к таким таблицам Google BigQuery поддерживает только диалект standard SQL.
Если вам важно использовать запросы, написанные на legacy SQL — читайте ниже, как это сделать.
Шаг 1. В Google BigQuery, к таблице, собранной потоком, составьте запрос на standard SQL, который будет сохранять нужные вам данные в структуре, которая подходит для вашего legacy SQL-запроса.
Пример запроса:
#standardSQL
SELECT
account_id,
CAST(date AS STRING) AS date,
CAST(campaign_id AS STRING) AS campaign_id,
campaign.name AS campaign_name,
SUM(impressions) AS impressions,
SUM((SELECT inline_link_clicks FROM UNNEST(insights.data))) AS clicks,
SUM(spend) AS cost,
account_currency AS currency
FROM `Project.Dataset.Table`
WHERE date >= '2020-07-04'
GROUP BY date,account_id, account_currency, campaign_id, campaign_name
ORDER BY date
Шаг 2. Создайте на основе этого запроса scheduled query (запрос по расписанию):
Готово. Теперь вы можете применять запросы на legacy SQL к таблицам, которые будет создавать настроенный запрос по расписанию.
Обратите внимание:Выше описан простой способ создания таблиц, к которым можно применять запросы на legacy SQL. Запросы по расписанию также позволяют создавать sharded-таблицы с помощью шаблонизации названия destination table.
Sharded-таблицы позволяют сохранять только новые данные. Благодаря этому сохранение данных и запросы к ним происходят быстрее и стоят дешевле.
0 Комментарии