Bölüm 2 / 9
Veri modeli: dört yapı taşı
Amplitude'daki her chart dört kavramın üzerine kurulur: event, event property, user property ve group. Bunları doğru ayırırsan sonradan sorabileceğin her soru açık kalır; yanlış ayırırsan bazı sorular hiç sorulamaz.
- Bir event satırının parçalarını ve hangisinin ne işe yaradığını okuyabileceksin.
- Bir bilginin event property mi user property mi olması gerektiğine karar verebileceksin.
- User property'lerin "o anki değer" davranışının analizi nasıl etkilediğini anlayacaksın.
Dört kavram
| Kavram | Ne demek | Örnek | Adjust'taki en yakın karşılık |
|---|---|---|---|
| Event | Kullanıcının yaptığı tek bir eylem, zaman damgalı | Product Viewed, Checkout Completed | Event token ile tanımlı event |
| Event property | O eylemin o anki bağlamı | category = headphones, price = 49.9 | Callback / partner parametreleri |
| User property | Kullanıcının kalıcı özelliği; son değeri sonraki event'lere taşınır | plan = premium, orders_count = 3 | Doğrudan yok; attribution alanları en yakını |
| Group | Kullanıcının ait olduğu hesap veya organizasyon | company_id = 8812 | Yok |
Bir event'in anatomisi
Amplitude'a giden her event aşağıdakine benzer bir kayıttır. SDK'lar bu alanların çoğunu kendisi doldurur; sen genellikle sadece event adını ve property'leri verirsin.
{
"event_type": "Checkout Completed", // ne yaptı
"time": 1762243200000, // ne zaman (ms)
"user_id": "cust_88231", // kim (senin sistemindeki kimlik)
"device_id": "8F3A2C1E-…", // hangi cihaz
"platform": "iOS", // SDK otomatik doldurur
"country": "Saudi Arabia", // IP'den türetilir
"event_properties": { // bu eylemin bağlamı
"order_id": "ORD-5521",
"revenue": 129.5,
"currency": "SAR",
"items_count": 3,
"payment_method": "apple_pay"
},
"user_properties": { // kullanıcının o anki durumu
"plan": "premium",
"orders_count": 4,
"acquisition_network": "Meta" // örnek: entegrasyondan gelen kaynak
}
}Bu kaydı bir cümle olarak oku: cust_88231, 4 Kasım'da iOS'ta, premium planındayken ve Meta'dan gelmiş biri olarak, Apple Pay ile 3 ürünlük 129,5 SAR'lık bir sipariş tamamladı. Amplitude'un bütün chart'ları bu cümlelerin farklı biçimlerde sayılmasıdır.
acquisition_network burada uydurulmuş örnek bir addır. Adjust entegrasyonunun Amplitude'a gönderdiği alanların gerçek adları entegrasyon dokümanında yazar (Bölüm 7).
Event property mi, user property mi?
Karar kuralı basittir: bilgi o eyleme mi ait, yoksa o kişiye mi? Sipariş tutarı o siparişe aittir, event property'dir. Abonelik planı kişiye aittir ve sonraki her eylemde geçerlidir, user property'dir.
| Bilgi | Doğru yer | Gerekçe |
|---|---|---|
| Görüntülenen ürünün kategorisi | Event property | Her görüntülemede farklı |
| Sipariş tutarı | Event property | O siparişe özgü |
| Abonelik planı | User property | Kişinin durumu, değişene kadar geçerli |
| Toplam sipariş sayısı | User property (artırılarak) | Kişinin birikimli durumu |
| Kazanım kanalı (Adjust'tan) | User property | Kişiye bir kez atanır, tüm davranışı dilimler |
| Ödeme yöntemi | Event property (gerekirse ayrıca "son ödeme yöntemi" user property) | Her siparişte değişebilir |
| Uygulama dili | User property (SDK çoğu zaman otomatik toplar) | Cihaz/kişi ayarı |
User property zaman içinde nasıl davranır?
User property bir kez set edilince, değiştirilene kadar sonraki her event'e o değerle işlenir. Bir event'e işlenen değer, event olduğu andaki değerdir. Bu yüzden "premium iken mi, free iken mi satın aldı?" sorusu doğru cevaplanır.
User property'yi event'ten sonra set etmek. Kullanıcı premium'a geçtiğinde önce Subscription Started event'ini, sonra plan güncellemesini gönderirsen, o event'in kendisi hâlâ plan = free taşır. Sıralamayı tracking plan'da açıkça yaz.
User property'yi değiştirme yolları
SDK'lar user property'ler için birkaç işlem sunar. Hangisini seçtiğin, değerin zaman içinde nasıl biriktiğini belirler.
| İşlem | Ne yapar | Ne zaman kullanılır |
|---|---|---|
set | Değeri üzerine yazar | Plan, dil, son ödeme yöntemi |
setOnce | Sadece ilk kez set eder, sonrakileri yok sayar | İlk kayıt tarihi, ilk kazanım kanalı |
add | Sayısal değeri artırır/azaltır | Sipariş sayısı, toplam harcama |
append / prepend | Diziye eleman ekler | İlgilenilen kategoriler |
unset | Property'yi kaldırır | Artık geçerli olmayan bilgi |
Property tipleri neden önemli?
Amplitude bir property ile yapabileceğin işlemi değerin tipine göre sunar. Sayı olarak gelen bir değerin toplamını, ortalamasını, dağılımını alabilirsin. Aynı değer metin olarak gelirse sadece eşitlik ve gruplama yapabilirsin.
Analizi kısıtlar
"price": "49.9"metin, ortalama alınamaz"is_first_order": "yes"farklı yerlerde "Yes", "true", "1""category": "Headphones"bir platformda,"headphones"diğerinde
Analize açık
"price": 49.9sayı, toplam ve ortalama alınır"is_first_order": truetek tip boolean"category": "headphones"her platformda küçük harf, sabit liste
Otomatik toplanan bilgiler
SDK'lar her event'e bir dizi bilgiyi kendisi ekler: platform, işletim sistemi ve sürümü, cihaz modeli, uygulama sürümü, dil, IP'den türetilen ülke ve şehir gibi. Bunları ayrıca property olarak göndermene gerek yoktur. Yeni SDK'larda ayrıca oturum başlangıcı, sayfa görüntüleme gibi bazı event'ler otomatik toplanabilir (autocapture).
Hangi alanların ve event'lerin otomatik toplandığı SDK'ya, sürümüne ve yapılandırmaya göre değişir. Gizlilik gereksinimi olan müşterilerde (ör. IP veya şehir toplanmaması) bu ayarların nasıl kapatıldığına SDK dokümanından bak.
Group: hesap düzeyinde analiz
B2B ürünlerde soru çoğu zaman "hangi kullanıcı" değil "hangi şirket" olur. Group, kullanıcıları bir hesaba bağlar ve chart'ları kullanıcı yerine hesap bazında saymayı sağlar: "Bu hafta kaç şirket rapor oluşturdu?" gibi.
Hesap düzeyinde analiz Amplitude'da ayrı bir eklenti olarak satılabiliyor. Müşterinin planında olup olmadığını kontrol et. Ryze'ın tipik mobil tüketici uygulamalarında çoğu zaman gerekmez.
Örnek: küçük bir e-ticaret modeli
| Event | Event property'ler | Bu event'le güncellenen user property |
|---|---|---|
Signup Completed | method (email, apple, google) | signup_date (setOnce) |
Product Viewed | product_id, category, price | – |
Product Added to Cart | product_id, category, price, quantity | – |
Checkout Started | cart_value, items_count | – |
Checkout Completed | order_id, revenue, currency, payment_method | orders_count (add 1), last_order_date (set) |
Beş event ile funnel, retention, sepet analizi ve ilk/tekrar sipariş karşılaştırması yapılabilir. Her kategori için ayrı event açmak yerine tek event ve category property'si kullanıldığına dikkat et.
Bir müşterinin Adjust event token listesini al. Her event için şunu yaz: Amplitude'da aynı adla mı kalmalı, birkaç Adjust event'i tek bir Amplitude event'i + property olarak mı birleşmeli (ör. purchase_tier1, purchase_tier2 → Purchase + tier), ve hangi bilgi kişiye ait olduğu için user property olmalı.