SQL umożliwia analizę SEO poprzez łączenie danych z narzędzi analitycznych, logów serwera i danych crawlowania, normalizację pól i uruchamianie zapytań do identyfikowania trendów, problemów technicznych oraz wpływu zmian na ruch i konwersje.
Jak przygotować dane do analizy SEO w SQL
- Określ cele analizy i kluczowe metryki.
- Zbierz dane z źródeł SEO: Google Analytics, Google Search Console, logi serwera, pliki crawlu.
- Znormalizuj pola: data, strona (page_url), źródło (source), medium, urządzenie, wyświetlenia (impressions), kliknięcia (clicks), sesje, CTR, pozycje.
- Stwórz jedną warstwę danych (data warehouse) z tabelami seo_data, seo_keywords, server_logs itp.
- Ustal strefy czasowe i zakres dat, aby porównania były spójne.
Źródła danych i model danych
- Google Analytics / BigQuery export: ruch organiczny, CTR, sesje.
- Google Search Console: wyświetlenia, kliknięcia, średnia pozycja, słowa kluczowe.
- Logi serwera: statusy HTTP, błędy 404/301, ścieżki użytkowników.
- Dane crawlowe: listy URL, przekierowania, kanoniczność.
- Wspólny model: daty, page_url, keyword, source, medium, device, metrics.
Przykładowa struktura zapytań i praktyki
- Używaj CTE do czytelności, np. zdefiniuj zakres dat w jednym miejscu.
- Utrzymuj unikalne identyfikatory stron i przekierowań, aby uniknąć duplikatów.
- Zabezpiecz się przed błędami typów danych i NULL.
- Zastosuj indeksy/partycjonowanie po dacie dla dużych zestawów danych.
Przykładowe zapytania SQL do analizy SEO
- Najpopularniejsze strony w ruchu organicznym (wybrany zakres):
SELECT page_url, SUM(organic_sessions) AS sessionsFROM seo_data
WHERE date BETWEEN '' AND ''
AND source = 'google' AND medium = 'organic'
GROUP BY page_url
ORDER BY sessions DESC
LIMIT 50;
- Średni CTR i całkowite wyświetlenia wg słów kluczowych:
SELECT keyword, AVG(ctr) AS avg_ctr, SUM(impressions) AS total_impressions, SUM(clicks) AS total_clicksFROM seo_keywords
WHERE date BETWEEN '' AND ''
GROUP BY keyword
ORDER BY total_clicks DESC
LIMIT 100;
- Ruch konwersyjny z SEO:
SELECT page_url, SUM(conversions) AS conversions, SUM(revenue) AS revenueFROM seo_conversions
WHERE date BETWEEN '' AND ''
GROUP BY page_url
ORDER BY conversions DESC;
- Strony z wysokimi wyświetleniami, niskim CTR:
SELECT page_url, SUM(impressions) AS impressions, SUM(clicks) AS clicks,(SUM(clicks) / NULLIF(SUM(impressions), 0)) AS ctr
FROM seo_data
WHERE date BETWEEN '' AND ''
GROUP BY page_url
HAVING SUM(impressions) > 1000
ORDER BY ctr ASC
LIMIT 50;
- Wykrywanie błędów technicznych (404/301) w logach serwera:
SELECT page_url, status_code, COUNT(*) AS occurrencesFROM server_logs
WHERE status_code IN (404, 301, 302)
AND date BETWEEN '' AND ''
GROUP BY page_url, status_code
ORDER BY occurrences DESC;
- Porównanie zmian przed/po update:
WITH before AS (SELECT date, sessions FROM seo_data WHERE date BETWEEN '' AND ''
),
after AS (
SELECT date, sessions FROM seo_data WHERE date BETWEEN '' AND ''
)
SELECT 'Before' AS period, AVG(sessions) AS avg_sessions FROM before
UNION ALL
SELECT 'After', AVG(sessions) FROM after;
Najlepsze praktyki i pułapki
- Dane jakościowe: sprawdzaj źródła i dopasowanie pól, eliminuj duplikaty.
- Zakres dat: uwzględniaj strefy czasowe i czas przetwarzania danych.
- Wydajność: stosuj partycjonowanie, agregacje i indeksy.
- Planowanie ETL: automatyzuj aktualizacje danych i dokumentuj schemat.
- Interpretacja: porównuj okresy rok do roku i miesiąc do miesiąca.
Pułapki przy analizie danych SEO w SQL
- Współistnienie różnych źródeł danych bez jednolitych definicji pól.
- Różnice w samplingu w GA i importowanych danychach.
- Brak kontekstu biznesowego przy interpretacji liczb.
- Niewłaściwe obsłużenie NULL i wartości ujemnych.
Narzędzia i praktyki wdrożeniowe
- Wybierz platformę analityczną: BigQuery, Snowflake, Redshift, PostgreSQL itp.
- Modeluj dane w tematyczne tabele: seo_data, seo_keywords, server_logs, crawls.
- Wdroż ETL/ELT: harmonogramy, walidacje danych, testy jakości.
- Dokumentuj zapytania i twórz katalog metryk SEO.