Przejdź do treści

SQL. DISTINCT. Unikalne transaction_id i user_id przed joinem z kosztami kampanii.

Na czym to polega w sklepie

Ten sam koszyk w GA4 pojawia się dwa razy - rehit thank-you page, server + client. Bez deduplikacji join z kosztami kampanii mnoży przychód. SELECT DISTINCT lub COUNT(DISTINCT transaction_id) to pierwsza linia obrony przed zawyżonym ROAS w raporcie dla zarządu.

Przykład ze sklepu internetowego

Sklep modowy DTC po migracji na server-side GTM widzi podwójne wiersze purchase. Lista unikalnych transakcji na dzień przed joinem z spendem Google Ads:

WITH unique_orders AS (
  SELECT DISTINCT
    event_date,
    transaction_id,
    user_pseudo_id,
    purchase_revenue
  FROM raw_ga4_purchase
  WHERE transaction_id IS NOT NULL
)
SELECT
  event_date,
  COUNT(*) AS orders,
  SUM(purchase_revenue) AS revenue
FROM unique_orders
GROUP BY event_date
ORDER BY event_date;

Co zrobić po stronie biznesu

  • Zamów deduplikację przed raportem ROAS - jedna transakcja = jeden wiersz przychodu w joinie z Ads.
  • Wyciągnij unikalne gclid przed importem offline conversions do Google Ads.
  • Gdy dwa duplikaty mają różny revenue, wybierz regułę (ostatni timestamp) zamiast ślepego DISTINCT na wielu kolumnach.

W skrócie

DISTINCT to plaster na duplikaty - docelowo napraw tag purchase w GTM. Do wyboru „właściwego" wiersza przy konflikcie revenue użyj ROW_NUMBER() … = 1 zamiast samego DISTINCT.