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

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

Как да свържем Google Ads с BigQuery: Пълен наръчник

Как да свържем Google Ads с BigQuery: Пълен наръчник

1. Въведение: Защо да свързваме Google Ads с BigQuery?

Google Ads предоставя мощен интерфейс, но за напреднали анализи, комбиниране с други данни или изграждане на персонализирани табла за управление, възможностите му са ограничени. Прехвърлянето на данни в BigQuery, корпоративният склад за данни на Google, ви дава пълна свобода да:
- Анализирате необработени данни на ниво клик, разход и импресия.
- Комбинирате рекламни данни с данни от продажбите, уебсайта или CRM.
- Избягвате ограниченията на API за докладване (напр. максимален брой редове).

2. Сравнение на методите за свързване

Преди да започнем, е важно да изберете правилния инструмент. Основният избор е между BigQuery Data Transfer Service (DTS) и Google Ads API.

ХарактеристикаBigQuery Data Transfer Service (DTS)Google Ads API
Сложност на настройкаНиска (без код, само конфигурация в конзолата)Висока (изисква програмиране, управление на заявки)
Структура на даннитеФиксирана, предварително дефинирана схема от GoogleНапълно персонализируема (вие решавате кои полета да взимате)
Исторически данниСамо последните 30 дни (изисква ръчно "backfill")Неограничени (може да изтегли цялата история на акаунта)
АвтоматизацияВградена (лесни за настройване ежедневни ъпдейти)Изисква собствен скрипт или оркестратор (напр. Cloud Composer)
Подходящ заМалки и средни акаунти, бърз старт, стандартни KPI-таГолеми агенции, сложни отчети, нужда от пълен контрол
Препоръка: Започнете с DTS. Ако усетите нужда от по-специфични данни или по-чести опреснявания, тогава мигрирайте към API.


3. Стъпка по стъпка: Настройка на Data Transfer Service (DTS)

Това е най-директният метод. Следвайте тези стъпки:

Стъпка 1: Подготовка и изисквания
Преди да започнете, уверете се, че притежавате:
- Google Cloud Project: Проект с активиран билинг (BigQuery таксува съхранението и заявките).
- Права: Имате нужда от Owner или Editor роли върху GCP проекта и администраторски достъп до Google Ads акаунта.
- API активиране: Включете BigQuery API и BigQuery Data Transfer API от Cloud Console.

Стъпка 2: Създаване на трансфера
1. Влезте в Google Cloud Console.
2. Отидете на BigQuery > Data Transfer (в лявото меню).
3. Натиснете `+ Create Transfer`.
4. Изберете Google Ads като източник.

Стъпка 3: Конфигурация на детайлите
- Име: Дайте описание (напр. "Google Ads Raw Data - Account X").
- Dataset (набор от данни): Изберете съществуващ или създайте нов Dataset в BigQuery. Това ще бъде "папката", където ще се съхраняват всички таблици на Google Ads.
- Идентификатор на клиент: Въведете Client Customer ID (напр. 123-456-7890) на акаунта в Google Ads. За Manager (MCC) акаунт се използва различен процес, но за начало е по-лесно да свържете директен рекламен акаунт.
- Исторически данни (Backfill): DTS не носи исторически данни автоматично. Ако искате данни от преди днешна дата, изберете "Заявяване на обратно запълване" и изберете период до 30 дни назад.

Стъпка 4: Авторизация
Google ще ви пренасочи към екран за вход в Google Ads. Влезте с акаунта, който има достъп до въведения Client ID и потвърдете, че давате разрешение на BigQuery да чете данните.

Стъпка 5: Настройка на графика (Schedule)
- Честота: Най-често се избира Daily (Ежедневно).
- Час на изпълнение: Изберете час извън работното ви време (напр. 3:00 AM), защото трансферът може да натовари системите. Имайте предвид, че данните в Google Ads не са реално време; трансферът обикновено работи със закъснение от 24-48 часа за предишния ден.

Стъпка 6: Запазване
Натиснете Save. Трансферът ще се активира и на следващия ден трябва да видите първите данни в BigQuery.


4. Как изглеждат таблиците в BigQuery?

След като трансферът работи, в избрания от вас Dataset ще се създадат множество таблици. Това често обърква новите потребители, защото не получавате единен "CSV файл", а нормализирана база данни.

4.1. Структура на имената
Имената на таблиците следват конвенцията: [Свойство_Ниво]_[Тип_отчет]
- Префикс: p_ (performance), s_ (stateless), c_ (campaign), a_ (ad).
- Суфикс: _customer_id, _campaign, _ad_group, _keyword, _geo_targeting и др.

4.2. Най-често използвани таблици
Име на таблицаСъдържание
p_ads_Customer_<ID>Информация за клиента (валута, часови пояс)
p_ads_Campaign_<ID>Данни за кампаниите (име, статус, бюджет)
p_ads_AdGroup_<ID>Данни за Ad Groups
p_ads_AdStats_<ID>Най-важната таблица! Тук са метриките: impressions, clicks, cost_micros, conversions
p_ads_KeywordStats_<ID>Статистики за ключови думи
p_ads_GeoTargetingStats_<ID>Статистики по географски локации
4.3. Схема и типове данни
BigQuery използва силно типизирана схема. Важно е да знаете:
- cost_micros (INTEGER): Цената е в микро-единици (1/1,000,000 от валутата). За да получите реален разход в EUR/USD, трябва да разделите на 1,000,000.
- date (DATE или TIMESTAMP): Повечето статистически таблици са партиционирани по date. Това означава, че всяка дата е отделна "партиция", което ускорява заявките и намалява разходите.
- _PARTITIONTIME (Pseudocolumn): Специална колона, която можете да използвате във WHERE клаузата, за да филтрирате бързо по дата.
- STRUCT и ARRAY: Някои колони съдържат вложени данни. Например campaign.network_settings е STRUCT (обект), достъпен чрез точкуване.

        -- Пример за SQL заявка:
SELECT
  campaign.id AS campaign_id,
  campaign.name AS campaign_name,
  SUM(impressions) AS total_impressions,
  SUM(clicks) AS total_clicks,
  SUM(cost_micros) / 1000000 AS total_cost_euro
FROM `your_project.your_dataset.p_ads_AdStats_*`
WHERE _PARTITIONTIME BETWEEN "2024-01-01" AND "2024-01-31"
GROUP BY campaign.id, campaign.name;
4.4. Как да се справим с дублиращи се редове?
Понякога ще забележите, че ако направите SELECT * FROM table, има много повтарящи се редове. Това обикновено се дължи на "Refresh Windows" (периоди на опресняване). DTS понякога презаписва цели партиции, но при някои таблици добавя нови редове, което води до дублиране на данни за един и същ ден. Решение: Винаги използвайте SELECT DISTINCT или групирайте по всички ключови колони (id + date), когато правите агрегации.


5. Често срещани грешки и как да ги избегнем

Грешка 1: "No data in BigQuery" / Липсващи данни
Проблем: Настроили сте трансфера, но BigQuery е празен.
Причина: Исторически данни – DTS не носи минали данни автоматично. Трябва ръчно да пуснете "Backfill" за периода, който ви интересува (макс 30 дни). Днес няма кликвания – Ако няма активност за деня, таблицата за статистики няма да има запис за този ден. Разминаване във времето – Данните идват със закъснение.

Грешка 2: Грешка при custCustomerId, Missing or wrong data
Проблем: Трансферът пада с грешка или някои метрики са нула, но в Google Ads са положителни.
Причина: Промяна в схемата от страна на Google или проблеми с настройките на акаунта (напр. конфликт на часови зони).
Решение: 1. Проверете логовете на трансфера в Cloud Console. 2. Уверете се, че всички свързани акаунти (MCC и клиентски) имат правилни настройки за часова зона. 3. Препоръчително е периодично да сверявате суми (напр. разход за месеца) директно в Google Ads UI срещу BigQuery.

Грешка 3: Грешки при партициониране и дублиране
Проблем: Duplicate Rows Across Partitions (Един и същ ред съществува в партициите за 2024-11-22 и 2024-11-28).
Причина: Refresh window (период на опресняване) е настроен (напр. 30 дни) и системата презарежда стари данни, но ги записва като нови редове в новите партиции, вместо да презапише старите.
Решение: - Заявки: При писане на заявки, винаги групирайте по date, ad_group_id и campaign_id. - Създаване на View: Създайте VIEW, което прави ROW_NUMBER() OVER (PARTITION BY ad_id, date ORDER BY _PARTITIONTIME DESC) = 1, за да взимате само най-новия запис за всеки ден.


6. Алтернативи (Кога да използваме API?)

Ако срещнете някой от следните сценарии, обмислете миграция към Google Ads API:
1. Вам трябват данни отпреди 30 дни: DTS не може да ги донесе. API може.
2. Вам трябва специфична комбинация от полета: DTS ви дава много таблици с много колони. API ви позволява да напишете SELECT campaign.id, conversions.value FROM campaign, което спестява обработка и пари.
3. Вам трябват данни на всеки час: DTS поддържа основно ежедневни трансфери. API позволява заявки на интервали от 15 минути, 1 час и т.н.

Използване на API: Това включва писане на код (Python, Java) в Cloud Function или насрочен скрипт, който чете от API и записва в BigQuery.

Заключение
BigQuery Data Transfer Service е най-бързият начин да извлечете стойност от данните на Google Ads. Започнете с малък тестов трансфер за един акаунт, усвоете структурата на таблиците (особено AdStats и cost_micros) и след това разширете към всичките си акаунти. Следете логовете за грешки и не забравяйте, че за пълна историческа точност или сложни отчети, API е неизбежната следваща стъпка.