Pazarlama Verilerini Modellemesi
Temizlenmiş ve birleştirilmiş tablolar.
Pazarlama Verilerini Modellemesi, CoddyKit'te ücretsiz bir Digital Marketing Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Digital Marketing Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Digital Marketing Academy kursu toplamda 4 dersten oluşur.
Neden Modelleme Yapmalı?
Ham bağlayıcı tabloları dağınıktır: tutarsız sütun adları, karışık para birimleri, farklı ayrıntı düzeyleri ve platforma özgü tuhaflıklar içerir. Bunları doğrudan sorgulamak yanlış ve yeniden üretilemeyen sayılar ortaya çıkarır.
Veri modelleme, ham satırları temiz, tutarlı ve işletmeye hazır tablolara dönüştürme disiplinidir. ROAS, dönüşüm ve gelirin bir kez ve doğru biçimde tanımlandığı yerdir; böylece her rapor aynı fikirde olur.
Yıldız Şema
Analitik alandaki baskın model yıldız şemadır: ölçülebilir olaylardan oluşan merkezi bir olgu tablosu ve bu olayları açıklayan boyut tabloları bulunur. Olgular sayıları (harcama, tıklamalar, gelir), boyutlar ise bağlamı (kampanya, tarih, kanal, müşteri) taşır.
Bu yapı pazarlamacılar için sezgiseldir ve BI araçları açısından verimlidir; bu araçlar, ölçümleri herhangi bir niteliğe göre incelemek için bir olguyu birkaç boyutla birleştirir.
dim_date
|
dim_channel -- fct_ad_spend -- dim_campaign
|
dim_account
fct_ad_spend (facts): impressions, clicks, cost, conversions
dims: who / what / when contextOlgular ve Boyutlar
Bir olgu tablosu uzun ve toplamsaldır: olay veya gün-kampanya başına bir satır içerir ve toplayacağınız sayısal ölçüleri barındırır. Bir boyut tablosu geniş ve açıklayıcıdır: kampanya veya müşteri başına bir satır içerir ve filtreleyip gruplayacağınız nitelikleri barındırır.
Kural şudur: SUM ile toplarsanız olgudur; GROUP BY ile gruplarsanız boyuttur. Harcama bir olgudur; kampanya adı bir boyuttur.
fct_ad_spend dim_campaign
---------------- ----------------
date campaign_id (PK)
campaign_id (FK) campaign_name
cost <-SUM-> channel
clicks <-SUM-> objective
conversions start_dateAyrıntı Düzeyi: İlk Karar
Ayrıntı düzeyi, bir olgu tablosunun tek bir satırının temsil ettiği şeydir. Bunu en başta belirlemek, modellemedeki en önemli karardır. Günlük satırları yaşam boyu toplamlarla karıştırmak, aşağı akıştaki tüm ölçümlerin iki kez sayılmasına ve bozulmasına neden olur.
Ayrıntı düzeyini sade bir dille belirtin: kampanya ve gün başına bir satır. Bundan sonra her sütun bu ayrıntı düzeyinde doğru olmalı ve her yükleme bu düzeye uymalıdır.
Declared grain: one row per campaign per day
-- enforce uniqueness on the grain
SELECT date, campaign_id, COUNT(*)
FROM fct_ad_spend
GROUP BY 1,2
HAVING COUNT(*) > 1; -- must return 0 rowsHazırlama Modelleri
Olgulardan ve boyutlardan önce hazırlama modelleri oluşturun: her kaynak tablosu için bir model; sütunları standart adlarla yeniden adlandırın, türleri dönüştürün ve birimleri standartlaştırın (sentleri dolara, UTC tarihlerini uygun biçime çevirin). Her hazırlama modeli yalnızca bir ham tabloya karşılık gelir.
Hazırlama katmanı temizlik katmanıdır. Kaynağa özgü tuhaflıkları yalıtır; böylece aşağı akıştaki veri martlarınız Meta'nın buna harcama, Google'ın ise maliyet dediğini bilmek zorunda kalmaz.
-- stg_google_ads__spend
SELECT
date AS spend_date,
campaign_id,
'google' AS channel,
cost_micros / 1000000 AS cost, -- micros -> dollars
clicks,
conversions
FROM raw.google_ads__campaign_stats;Kanalları Birleştirme
Her reklam platformu farklı raporlama yapar, ancak hazırlama işleminden sonra ortak bir biçimi paylaşırlar. Sonraki model, bunları harmanlanmış raporlamanın temeli olan tek bir kanallar arası harcama olgusunda birleştirir.
Toplam ROAS'ı mümkün kılan bu tek tablodur. Her kanal aynı sütunlara uyarlandığında tek bir sorgu Google, Meta ve TikTok genelindeki harcamayı aynı anda toplar.
-- fct_ad_spend: union all channels
SELECT * FROM stg_google_ads__spend
UNION ALL
SELECT * FROM stg_meta_ads__spend
UNION ALL
SELECT * FROM stg_tiktok_ads__spend;
-- now: SUM(cost) GROUP BY channel worksUyumlu Boyutlar
Kanallar arası analiz için boyutların uyumlu olması gerekir: her olgunun aynı şekilde birleştirildiği ortak bir tarih boyutu ve kanal boyutu. Böylece "aya ve kanala göre gelir", kaynağın reklam, e-posta veya web olması fark etmeksizin aynı anlama gelir.
Harcama ile geliri tek bir grafikte yan yana göstermenizi sağlayan uyumlu boyutlardır. Bunlar olmadan birleştirmeler hizalanmaz ve toplamlar fark ettirmeden birbirinden ayrılır.
Conformed dims shared across facts:
dim_date -> joined by every fact on date
dim_channel -> 'google','meta','email','organic'
dim_campaign -> unified campaign keys
-> spend and revenue line up on the same axesSQL'de Katkı Atama
Katkı atama, bir dönüşümün temas noktalarına verdiği krediyi belirler. Son tıklama modeli en basitidir: dönüşümden önceki son pazarlama kaynağı tüm krediyi alır. İlk tıklama, doğrusal ve konuma dayalı modeller krediyi farklı biçimlerde dağıtır.
Veri ambarında katkı atamayı bir platformun kapalı kutusu olarak değil, bir model olarak uygularsınız. GA4 olay düzeyindeki verileriyle kullanıcı başına temas noktalarını pencereleyebilir, herhangi bir kuralı uygulayabilir ve ardından sonuçları modeller arasında dürüstçe karşılaştırabilirsiniz.
-- last non-direct click per conversion
WITH touches AS (
SELECT user_id, channel, event_time,
ROW_NUMBER() OVER (PARTITION BY user_id
ORDER BY event_time DESC) AS rn
FROM web_touchpoints
WHERE channel <> 'direct'
)
SELECT channel, COUNT(*) FROM touches WHERE rn=1
GROUP BY 1;Yavaş Değişen Boyutlar
Boyut nitelikleri zaman içinde değişir: bir kampanyanın bütçe sorumlusu değişir, bir müşterinin seviyesi yükselir. Tür 2 yavaş değişen boyut, mevcut satırın üzerine yazmak yerine geçerlilik tarihleri olan yeni bir satır ekleyerek geçmişi korur.
Bu, belirli bir andaki raporlamanın doğru olması için önemlidir. Bir müşterinin dönüşüm gerçekleştirdiği sırada hangi segmentte olduğunu bilmek için bugünkü değil, o tarihte geçerli olan boyut sürümüne ihtiyacınız vardır.
dim_customer (SCD Type 2)
cust_id tier valid_from valid_to is_current
101 free 2026-01-01 2026-04-01 false
101 pro 2026-04-01 9999-12-31 true
-- join on event_date BETWEEN valid_from AND valid_toSınama ve Belgeleme
Modeller koddur; bu nedenle onları sınayın. dbt gibi araçlar, anahtarların benzersiz ve boş olmadığını, kanal değerlerinin kabul edilen bir küme içinde bulunduğunu ve tablolar arasındaki ilişkilerin geçerli olduğunu doğrulamanızı sağlar.
Sınamalar, şema kaymasını ve hatalı birleştirmeleri gösterge paneline ulaşmadan yakalar. Otomatik oluşturulan belgeler ve veri kökeniyle birlikte kullanıldıklarında modeli kırılgan bir kapalı kutu olmaktan çıkarıp güvenilir ve ekibe yeni katılanların anlayabileceği bir yapıya dönüştürür.
# dbt schema test
models:
- name: fct_ad_spend
columns:
- name: campaign_id
tests: [not_null]
- name: channel
tests:
- accepted_values:
values: ['google','meta','tiktok']Veri Martları: Son Katman
En üst katman veri martlarıdır: marketing_performance veri martı gibi, belirli kitlelere göre şekillendirilmiş ve işletmeye hazır tablolardır; bu mart, harcamayı gelire bağlar ve kanal başına gün bazında ROAS'ı hesaplar.
BI araçları yalnızca veri martlarından okur. Birleştirmeleri ve toplulaştırmaları burada önceden yaptığınızda gösterge panelleri hızlı ve ucuz kalır; her analist de aynı doğru tanımları kullanır.
-- marts.marketing_performance (1 row / day / channel)
SELECT s.spend_date, s.channel,
SUM(s.cost) AS spend,
SUM(r.revenue) AS revenue,
SAFE_DIVIDE(SUM(r.revenue), SUM(s.cost)) AS roas
FROM fct_ad_spend s
LEFT JOIN fct_revenue r USING (spend_date, channel)
GROUP BY 1,2;Hızlı Kontrol
Reklam performansı için bir olgu tablosu oluşturuyor ve iki kez saymayı önlemek istiyorsunuz. Herhangi bir sütun yazmadan önce belirtmeniz gereken en önemli tek şey nedir?
Özet
Modelleme, dağınık ham tabloları katmanlar aracılığıyla güvenilir ve iş dünyasının kullanımına hazır verilere dönüştürür: hazırlama katmanı her kaynağı temizler ve standartlaştırır, olgu tabloları ile uyumlu boyutlar bir yıldız şeması oluşturur, veri martları da her şeyi önceden birleştirir.
Önce ayrıntı düzeyini tanımlayın, harmanlanmış ölçümler için kanalları birleştirin, ilişkilendirmeyi ve SCD Tür 2 geçmişini SQL ile uygulayın ve her modeli sınayın; böylece hatalı sayılar bir gösterge paneline ulaşmak yerine açıkça hata verir.
Sıkça Sorulan Sorular
“Pazarlama Verilerini Modellemesi” dersi ücretsiz mi?
Evet — “Pazarlama Verilerini Modellemesi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Digital Marketing Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Digital Marketing Academy kursu toplamda 4 dersten oluşur.
“Pazarlama Verilerini Modellemesi” dersinde ne öğreneceğim?
Temizlenmiş ve birleştirilmiş tablolar. Digital Marketing Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Digital Marketing Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Digital Marketing Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Pazarlama Verilerini Modellemesi” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Digital Marketing Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Digital Marketing Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Veri Ambarı Neden Kullanılır
- ETL ve Bağlayıcılar
- Pazarlama Verilerini Modellemesi
- Eyleme Yön Veren Gösterge Tabloları