📞
Повече клиенти чрез ефективна реклама и оптимизиран сайт

Създавам и оптимизирам Google Ads, Facebook Ads и сайтове с цел повече запитвания и продажби.
✔ ясна стратегия
✔ измерими резултати
✔ дългосрочно развитие

Автоматизация на репорти с BigQuery и Looker Studio

Автоматизация на репорти с BigQuery и Looker Studio

Въведение: Защо автоматизация на репорти?

Ръчното експортиране на CSV файлове от Google Ads, обработката им в Excel и създаването на PowerPoint отчети отнема часове и води до грешки. С BigQuery + Looker Studio можете да изградите напълно автоматизирана система, която:
- Обновява данните автоматично (дневно, почасово или на поток)
- Визуализира KPI в реално време (с малко закъснение)
- Изпраща имейли или PDF отчети по график
- Намалява човешките грешки до минимум



1. Свързване на BigQuery с Looker Studio (стъпка по стъпка)

Looker Studio (бивш Google Data Studio) е безплатен инструмент за визуализация, който се свързва директно с BigQuery.

Стъпка 1: Подготовка в Google Cloud Console
- Уверете се, че вашият BigQuery dataset е в регион, поддържан от Looker Studio (напр. EU, US).
- Активирайте BigQuery API (обикновено е активен по подразбиране).
- Уверете се, че вашият Google акаунт има BigQuery Data Viewer права върху dataset-а.

Стъпка 2: Създаване на нов отчет в Looker Studio
- Отворете lookerstudio.google.com.
- Натиснете `+ Create` → `Report`.
- Изберете `BigQuery` от списъка с конектори.

Стъпка 3: Конфигурация на конектора
- Изберете `Custom Query` (за пълен контрол) или `Table` (за директно свързване към таблица).
- Въведете вашия SQL код за заявката.
- Изберете `Project ID`, `Dataset`.
- Важно: Задайте `Enable date range parameters` – позволява динамични филтри за дати.

Стъпка 4: Настройване на credentials
- За предпочитане използвайте `Viewer's credentials` (всеки потребител вижда данните според правата си).
- Сложни среди: използвайте `Owner's credentials` + Service Account.

Примерна заявка за Looker Studio (параметризирана с дати)
-- Параметризирана заявка за ROAS dashboard
-- {{ start_date }} и {{ end_date }} се попълват автоматично от контролите в Looker Studio
SELECT
  campaign.name AS campaign_name,
  segments.date AS date,
  SUM(cost_micros) / 1000000 AS cost,
  SUM(conversions) AS conversions,
  SUM(conversions_value) AS conversion_value,
  SUM(impressions) AS impressions,
  SUM(clicks) AS clicks
FROM `your_project.your_dataset.p_ads_AdStats_*`
WHERE _PARTITIONTIME BETWEEN PARSE_DATE('%Y%m%d', '{{ start_date }}') AND PARSE_DATE('%Y%m%d', '{{ end_date }}')
GROUP BY campaign_name, date
ORDER BY date DESC;


2. Как да създадеш автоматични dashboards

2.1. Основни компоненти на един автоматизиран dashboard
КомпонентОписаниеКак се настройва в Looker Studio
Date Range Control Позволява на потребителя да избира период без редакция на SQL Add a control → Date range control → свързва се с всички графики
Filter Controls Филтриране по кампания, устройство, държава Add a control → Drop-down list → изберете поле (campaign.name)
Scorecards (KPI карти) Общ разход, конверсии, ROAS, CTR Add a chart → Scorecard → изберете метрика + агрегираща функция (SUM, AVG)
Time Series Charts Тенденция на разход и конверсии във времето Add chart → Time series → dimension: date, metric: cost+conversions
Bar / Table Charts Детайлен списък на кампании или ключови думи Table chart → rows: campaign_name, metrics: cost, roas
2.2. Примерна структура на автоматичен dashboard за Google Ads
-- SQL за KPI dashboard (агрегирани метрики за даден период)
SELECT
  SUM(cost_micros) / 1000000 AS total_cost,
  SUM(conversions) AS total_conversions,
  SUM(conversions_value) AS total_revenue,
  ROUND(SAFE_DIVIDE(SUM(conversions_value), (SUM(cost_micros) / 1000000)) * 100, 2) AS roas,
  ROUND(SAFE_DIVIDE((SUM(cost_micros) / 1000000), SUM(conversions)), 2) AS cpa,
  ROUND(SAFE_DIVIDE(SUM(clicks), SUM(impressions)) * 100, 2) AS ctr,
  ROUND((SUM(cost_micros) / 1000000) / SUM(clicks), 2) AS avg_cpc
FROM `your_project.your_dataset.p_ads_AdStats_*`
WHERE _PARTITIONTIME BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY) AND CURRENT_DATE();
2.3. Добавяне на "Community Connectors" за допълнителни източници (Google Sheets, GA4, Facebook Ads)

Съвет: За пълен маркетинг dashboard, свържете няколко източника едновременно:
- Google Ads (чрез BigQuery)
- Google Analytics 4 (чрез BigQuery или native connector)
- Facebook Ads (чрез connector или експорт към BigQuery)
- CRM данни (чрез BigQuery таблица)
Looker Studio може да комбинира тези източници в Blended Data – обединение по ключ (например дата + кампания).

3. Scheduled Queries в BigQuery (автоматизиране на данните)

Scheduled Queries ви позволяват да изпълнявате SQL заявки автоматично по график и да записвате резултатите в таблици. Това е критично за:
- Предварително агрегиране на данни (ускоряване на Looker Studio)
- Създаване на исторически таблици с ROAS по кампании
- Изпращане на резултати към Google Sheets или имейл

3.1. Как да създадем Scheduled Query (стъпка по стъпка)

Стъпка 1: Отворете BigQuery Console → Напишете вашата SELECT заявка.
Стъпка 2: Натиснете `Schedule` → `Create scheduled query`.
Стъпка 3: Име на заявката (напр. "daily_roas_by_campaign").
Стъпка 4: Изберете Destination table (къде да се записват резултатите).
Стъпка 5: Изберете Schedule: Daily, Weekly, Monthly или Custom (every 6 hours, etc.).
Стъпка 6: Изберете Write preference:
  - WRITE_TRUNCATE – презаписва таблицата всеки път (за агрегатни таблици).
  - WRITE_APPEND – добавя нови редове (за исторически логове).
Стъпка 7: Натиснете `Schedule`.

3.2. Пример за полезна Scheduled Query – дневен ROAS snapshot
-- Тази заявка се изпълнява всеки ден в 5:00 сутринта
-- Записва показателите от предния ден в таблица daily_performance_snapshot
SELECT
  PARSE_DATE('%Y%m%d', segments.date) AS date,
  campaign.id AS campaign_id,
  campaign.name AS campaign_name,
  SUM(cost_micros) / 1000000 AS cost,
  SUM(conversions) AS conversions,
  SUM(conversions_value) AS revenue,
  ROUND(SAFE_DIVIDE(SUM(conversions_value), (SUM(cost_micros) / 1000000)) * 100, 2) AS roas_percent,
  CURRENT_TIMESTAMP() AS processed_at
FROM `your_project.your_dataset.p_ads_AdStats_*`
WHERE _PARTITIONTIME = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)
GROUP BY date, campaign_id, campaign_name;


Важно: Когато използвате Scheduled Queries за големи обеми данни, винаги добавяйте филтър за дата (като в примера по-горе). Това намалява таксувания обем и ускорява изпълнението.

3.3. Създаване на матрица за "anomaly detection" чрез Scheduled Query
-- Автоматично откриване на кампании с внезапен спад в ROAS
WITH weekly_performance AS (
  SELECT
    campaign_name,
    DATE_TRUNC(PARSE_DATE('%Y%m%d', segments.date), WEEK) AS week,
    SUM(cost_micros) / 1000000 AS weekly_cost,
    SUM(conversions_value) AS weekly_revenue,
    ROUND(SAFE_DIVIDE(SUM(conversions_value), (SUM(cost_micros) / 1000000)) * 100, 2) AS weekly_roas
  FROM `your_project.your_dataset.p_ads_AdStats_*`
  WHERE _PARTITIONTIME >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
  GROUP BY campaign_name, week
),
anomalies AS (
  SELECT
    campaign_name,
    week,
    weekly_roas,
    AVG(weekly_roas) OVER (PARTITION BY campaign_name) AS avg_roas,
    weekly_roas - AVG(weekly_roas) OVER (PARTITION BY campaign_name) AS roas_deviation
  FROM weekly_performance
)
SELECT * FROM anomalies
WHERE ABS(roas_deviation) > avg_roas * 0.5 -- 50% спад или ръст
ORDER BY roas_deviation ASC;


4. Реално време (Real-time) vs Batch данни

Важно е да разберете компромисите между real-time и batch обработка, за да проектирате правилно архитектурата.
ХарактеристикаBatch (партидна обработка)Real-time / Streaming (реално време)
Латентност (закъснение) Часове до дни (обикновено 24 часа за Google Ads DTS) Секунди до минути
Цена в BigQuery По-евтино – зарежда наведнъж големи обеми По-скъпо – стрийминг insert таксува се допълнително
Подходящ за Исторически анализи, ROAS, CPA, дългосрочни трендове Аларми, real-time bidding, оперативни dashboards (последните 5 минути)
Източник за Google Ads Data Transfer Service (DTS) – идеален за batch Streaming API (Google Ads API с push към Pub/Sub + BigQuery)
Типична употреба в Looker Studio Daily или weekly executive dashboards Live мониторинг на разхода, бюджети
4.1. Кога да използвате batch (DTS + Looker Studio)?
- Анализ на вчерашните данни за вземане на стратегически решения.
- Сравнение на ROAS между кампании за последните 30 дни.
- Изграждане на автоматични седмични отчети за екипа.
- Най-често използвания подход за 95% от случаите.
4.2. Кога да използвате real-time (streaming)?
- Мониторинг на бюджети – аларма, когато разходът надхвърли 80% от дневния бюджет.
- Real-time bidding оптимизация (чрез собствени алгоритми).
- Оперативни dashboards за екипи по поддръжка (напр. "Кампании с висок CPC през последния час").

Предупреждение: Real-time streaming за Google Ads изисква собствена интеграция с API (не DTS) и значително по-сложна инфраструктура (Cloud Pub/Sub, Cloud Functions). За повечето бизнеси batch е напълно достатъчен.

4.3. Хибриден подход – най-доброто от двата свята
-- Пример: Таблица с "near real-time" данни (актуализирана на всеки час чрез Scheduled Query)
-- Създайте scheduled query, която се изпълнява на всеки 60 минути
-- и записва резултатите в hourly_performance таблица

SELECT
  TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), HOUR) AS hour,
  campaign.name,
  SUM(cost_micros) / 1000000 AS cost_last_hour,
  SUM(clicks) AS clicks_last_hour
FROM `your_project.your_dataset.p_ads_AdStats_*`
WHERE _PARTITIONTIME = CURRENT_DATE()
  AND TIMESTAMP_DIFF(CURRENT_TIMESTAMP(), TIMESTAMP(segments.date), HOUR) < 24
GROUP BY campaign.name;


Хибридният подход: DTS носи данните веднъж на ден (batch). След това използвате Scheduled Query на всеки час, за да "преизчислите" последните 24 часа от batch таблицата и да създадете приблизителни real-time метрики. Това е баланс между цена и актуалност.


5. Автоматизирано изпращане на отчети (Email / PDF)

Looker Studio предлага вградена функционалност за изпращане на отчети по имейл. 5.1. Настройка на Email schedule в Looker Studio

Стъпка 1: Отворете вашия отчет → натиснете `Share` → `Schedule email delivery`.
Стъпка 2: Изберете честота: Daily, Weekly, Monthly.
Стъпка 3: Изберете формат: PDF attachment или Link to live report.
Стъпка 4: Добавете имейл адреси на получателите.
Стъпка 5: (Опционално) Приложете филтри – например само за конкретен клиент.

5.2. Алтернативен метод: BigQuery to Google Sheets to Email (за по-сложни трансформации)
-- Създайте Scheduled Query, която записва резултата в Google Sheets (чрез BigQuery Connector за Sheets)
-- След това Google Apps Script изпраща имейл с прикачен файл

-- Пример за Apps Script код (тригер за изпращане):
function sendDailyReport() {
  var sheet = SpreadsheetApp.openById('your_sheet_id');
  var range = sheet.getDataRange();
  var pdf = range.getAs('application/pdf');
  MailApp.sendEmail({
    to: 'marketing@company.com',
    subject: 'Daily Google Ads Report',
    body: 'Attached is the daily performance summary.',
    attachments: [pdf]
  });
}


6. Чести проблеми при автоматизацията и как да ги избегнем

Проблем (Issue)Причина (Cause)Решение (Solution)
Looker Studio отчетът е твърде бавен (зарежда > 30 секунди) Заявката сканира твърде много данни, няма партициониране 1. Използвайте _PARTITIONTIME филтър. 2. Създайте агрегирана таблица чрез Scheduled Query.
Грешка "Query timeout" или "Resources exceeded" Твърде сложна заявка с много JOIN или големи обеми Предварително агрегиране (materialized views) или разделяне на заявката
Данните в Looker Studio не се обновяват Кеширане в Looker Studio или в BigQuery резултата Настройте Cache Duration → "Disable caching" или по-кратък интервал
Спад на ROAS/конверсиите не се вижда веднага DTS закъснение от 24-48 часа (batch limitation) Добавете disclaimer в dashboard, или използвайте API за приблизителни real-time стойности


Бърз съвет за производителност:
Когато създавате Looker Studio отчет, който ще се използва от много хора, винаги ограничавайте периода (например последните 90 дни). Добавете контрола за дати, но с дефолт последните 30 дни, за да не сканирате цялата история при всяко зареждане.

Заключение

Автоматизацията на репорти чрез BigQuery и Looker Studio трансформира начина, по който екипите анализират Google Ads. С правилната архитектура:
- Икономите часове ръчен труд всяка седмица.
- Намалявате човешките грешки при копиране на числа.
- Получавате актуални прозрения винаги, когато отворите dashboard-а.
- Можете да мащабирате анализа за стотици акаунти без допълнителни усилия.

Започнете с малко – един dashboard за ROAS по кампании, след това добавете Scheduled Queries, накрая – имейл автоматизация. BigQuery + Looker Studio са вашите най-добри приятели в света на PPC отчетите.