1. Şirketin sorusu ve brif
Kim soruyor? Pazarlama müdürü. 2024’te satışımız %86 büyüdü; yönetim kurulu bunu kutlamak istiyor. Müdür ise temkinli: “Pazar da büyüdüyse, belki sadece dalgaya bindik.”
Hangi karar? 2025 pazarlama bütçesi kategoriler arasında nasıl bölünecek? Brifin soruları:
- Her kategoride pazarın yüzde kaçını alıyoruz ve bu pay geçen yıla göre kaç puan değişti?
- En büyük üç kategorimiz ve “Diğer” grubu pazarda nerede duruyor?
- Hangi kategoride pazardan hızlı büyüyoruz, hangisinde pazarın gerisinde kaldık?
2. Veri ve model
Dış kaynaktan gelen pazar verisi genelde küçük bir Excel tablosudur. Bizim örneğimiz kategori × yıl düzeyinde 14 satır. Power BI’da Hesaplanmış tablo (Calculated table) olarak şöyle kurulabilir:
Pazar =
DATATABLE(
"Kategori", STRING, "Yil", INTEGER, "PazarTL", CURRENCY,
{
{"Elektronik", 2023, 5200000}, {"Elektronik", 2024, 7800000},
{"Ev & Yaşam", 2023, 3400000}, {"Ev & Yaşam", 2024, 4760000},
{"Giyim", 2023, 2900000}, {"Giyim", 2024, 5220000},
{"Spor", 2023, 2200000}, {"Spor", 2024, 3190000},
{"Kitap", 2023, 1500000}, {"Kitap", 2024, 1800000},
{"Kozmetik", 2023, 2600000}, {"Kozmetik", 2024, 3380000},
{"Hediye", 2023, 600000}, {"Hediye", 2024, 1140000}
}
)
| Tablo | Ayrıntı düzeyi | Not |
|---|---|---|
Satislar | Sipariş satırı, gün | Bizim satışımız: [Net Satış] |
Pazar | Kategori × yıl | Örnek pazar büyüklüğü, ₺. Yalnızca 2023 ve 2024. |
Kategoriler, Tarih | Kategori; gün → ay → yıl | İki tablonun ortak boyutları |
Ayrıntı düzeyi sorunu. Satışlar gün düzeyinde, pazar yıl düzeyinde. Bu, Hedef ve gerçekleşen: farklı ayrıntı düzeyleri dersindeki sorunun aynısı. Bağlamak için iki yol var:
- Kategori için ilişki:
Pazar[Kategori]çoka-birKategoriler[Kategori]. Kategori boyutu zaten var; ilişki en temiz yoldur. - Yıl için TREATAS: modelde yıl başına bir satırlık tablo yok;
Tarih[Yil]benzersiz değil, ilişki kurulamaz. Ya küçük birYillarboyutu eklenir ya da ölçüde sanal ilişki kurulur:
Pazar Büyüklüğü =
CALCULATE(
SUM(Pazar[PazarTL]),
TREATAS(VALUES(Tarih[Yil]), Pazar[Yil])
)
-- İlişki yerine kategori için de TREATAS kullanılabilir:
-- TREATAS(VALUES(Kategoriler[Kategori]), Pazar[Kategori])
TREATAS, Tarih’te seçili yılları alır ve sanki Pazar[Yil] sütununa konmuş bir filtreymiş gibi uygular. Ayrıntısı Tablo fonksiyonları, kümeler ve sanal ilişkiler dersinde. Ters yönde de çalışır: pazar tablosunun her satırına bizim satışımızı getirmek için satırın kategori ve yılını iki sütunlu bir filtreye çeviririz:
EVALUATE
VAR Pazar = DATATABLE(
"Kategori", STRING, "Yil", INTEGER, "PazarTL", CURRENCY,
{
{"Elektronik", 2023, 5200000}, {"Elektronik", 2024, 7800000},
{"Ev & Yaşam", 2023, 3400000}, {"Ev & Yaşam", 2024, 4760000},
{"Giyim", 2023, 2900000}, {"Giyim", 2024, 5220000},
{"Spor", 2023, 2200000}, {"Spor", 2024, 3190000},
{"Kitap", 2023, 1500000}, {"Kitap", 2024, 1800000},
{"Kozmetik", 2023, 2600000}, {"Kozmetik", 2024, 3380000},
{"Hediye", 2023, 600000}, {"Hediye", 2024, 1140000}
}
)
RETURN
ADDCOLUMNS(
Pazar,
"Bizim Satış",
CALCULATE(
[Net Satış],
TREATAS(ROW("K", [Kategori], "Y", [Yil]), Kategoriler[Kategori], Tarih[Yil])
)
)
Veri sınırları: 2022 için pazar verisi yok ve bizim 2022 satışımız Haziran’da başlıyor. Pay hesabı yalnızca 2023 ve 2024’te anlamlı. Pazar verisi yıllık olduğu için ay düzeyinde pay hesaplanmaz.
3. Analiz adımları
Adım 1: Pazar payı ve ayrıntı düzeyi koruması. Uygulamanın motorunda Pazar tablosu modelde olmadığı için tabloyu ölçünün içinde bir değişkene koyarız; modelde yukarıdaki TREATAS’lı sürümü kullanırsın. Mantık aynı:
Pazar Büyüklüğü =
VAR P = DATATABLE(
"Kategori", STRING, "Yil", INTEGER, "PazarTL", CURRENCY,
{
{"Elektronik", 2023, 5200000}, {"Elektronik", 2024, 7800000},
{"Ev & Yaşam", 2023, 3400000}, {"Ev & Yaşam", 2024, 4760000},
{"Giyim", 2023, 2900000}, {"Giyim", 2024, 5220000},
{"Spor", 2023, 2200000}, {"Spor", 2024, 3190000},
{"Kitap", 2023, 1500000}, {"Kitap", 2024, 1800000},
{"Kozmetik", 2023, 2600000}, {"Kozmetik", 2024, 3380000},
{"Hediye", 2023, 600000}, {"Hediye", 2024, 1140000}
}
)
RETURN
SUMX(
FILTER(P, [Kategori] IN VALUES(Kategoriler[Kategori]) && [Yil] IN VALUES(Tarih[Yil])),
[PazarTL]
)
Pazar Payı % =
VAR TekTamYil = HASONEVALUE(Tarih[Yil]) && DISTINCTCOUNT(Tarih[YilAy]) = 12
RETURN IF(TekTamYil, DIVIDE([Net Satış], [Pazar Büyüklüğü]))
Pay Değişimi (puan) =
VAR Bu = [Pazar Payı %]
VAR Gecen = CALCULATE([Pazar Payı %], SAMEPERIODLASTYEAR(Tarih[Tarih]))
RETURN IF(NOT ISBLANK(Bu) && NOT ISBLANK(Gecen), (Bu - Gecen) * 100)
Koruma neden gerekli? Koruma olmadan matriste ay satırına inersen, bir aylık satış bütün yılın pazarına bölünür: Elektronik 2024 Ocak için %0,10 gibi anlamsız küçük bir pay çıkar. Hiç yıl seçilmezse de 2022’yi içeren satış, yalnızca 2023–2024’ü içeren pazara bölünür. TekTamYil ikisini de engeller.
| Kategori | 2024 satış | 2024 pazar (örnek) | Pay 2023 | Pay 2024 | Değişim |
|---|---|---|---|---|---|
| Kitap | 95.327 ₺ | 1.800.000 ₺ | %2,99 | %5,30 | +2,30 puan |
| Spor | 98.317 ₺ | 3.190.000 ₺ | %3,19 | %3,08 | −0,11 puan |
| Ev & Yaşam | 144.292 ₺ | 4.760.000 ₺ | %1,97 | %3,03 | +1,06 puan |
| Elektronik | 206.432 ₺ | 7.800.000 ₺ | %2,04 | %2,65 | +0,61 puan |
| Kozmetik | 82.908 ₺ | 3.380.000 ₺ | %1,47 | %2,45 | +0,98 puan |
| Giyim | 110.090 ₺ | 5.220.000 ₺ | %2,36 | %2,11 | −0,25 puan |
| Hediye | 9.700 ₺ | 1.140.000 ₺ | %0,95 | %0,85 | −0,09 puan |
| Toplam | 747.066 ₺ | 27.290.000 ₺ | %2,18 | %2,74 | +0,56 puan |
Bulgu: Toplam payımız %2,18’den %2,74’e çıktı (+0,56 puan): büyümenin bir kısmı gerçekten pazardan pay almaktan geliyor. Ama üç kategoride pay kaybettik: Giyim (−0,25 puan), Spor (−0,11) ve Hediye (−0,09). En güçlü kategori oransal olarak Kitap (%5,30).
Adım 2: İlk 3 + Diğer. Yönetim kuruluna yedi satırlık tablo yerine en büyük üç kategoriyi ve geri kalanı tek satırda gösteririz. Kalıbın ürün düzeyindeki hali İleri iş kalıpları: Top N + Diğer, sepet, LFL, para birimi dersinde; burada sorguyla kuruyoruz:
EVALUATE
VAR Pazar = DATATABLE(
"Kategori", STRING, "Yil", INTEGER, "PazarTL", CURRENCY,
{
{"Elektronik", 2023, 5200000}, {"Elektronik", 2024, 7800000},
{"Ev & Yaşam", 2023, 3400000}, {"Ev & Yaşam", 2024, 4760000},
{"Giyim", 2023, 2900000}, {"Giyim", 2024, 5220000},
{"Spor", 2023, 2200000}, {"Spor", 2024, 3190000},
{"Kitap", 2023, 1500000}, {"Kitap", 2024, 1800000},
{"Kozmetik", 2023, 2600000}, {"Kozmetik", 2024, 3380000},
{"Hediye", 2023, 600000}, {"Hediye", 2024, 1140000}
}
)
VAR T =
ADDCOLUMNS(
VALUES(Kategoriler[Kategori]),
"Satış", CALCULATE([Net Satış], Tarih[Yil] = 2024),
"Pazar", VAR k = Kategoriler[Kategori] RETURN SUMX(FILTER(Pazar, [Kategori] = k && [Yil] = 2024), [PazarTL])
)
VAR Ilk3 = TOPN(3, T, [Satış], DESC)
VAR Diger = EXCEPT(T, Ilk3)
RETURN
UNION(
SELECTCOLUMNS(Ilk3, "Grup", Kategoriler[Kategori], "Satış", [Satış], "Pazar", [Pazar], "Pay", DIVIDE([Satış], [Pazar])),
ROW("Grup", "Diğer", "Satış", SUMX(Diger, [Satış]), "Pazar", SUMX(Diger, [Pazar]),
"Pay", DIVIDE(SUMX(Diger, [Satış]), SUMX(Diger, [Pazar])))
)
Bulgu: Elektronik (%2,65), Ev & Yaşam (%3,03) ve Giyim (%2,11) satışımızın %61,7’sini getiriyor. “Diğer” grubu 286.252 ₺ ile 9.510.000 ₺’lik bir pazarın %3,01’ini alıyor. Dikkat: “Diğer”in payı, içindeki Kitap’ın yüksek payıyla şişiyor. Özet tablo kararı gizleyebilir; detayı araç ipucunda (Tooltip) ver.
Adım 3: Bizim büyüme ile pazar büyümesi. Her kategoriyi iki soruya göre dört bölgeye koyarız: pazar, toplam pazardan (%48,3) hızlı mı büyüyor? Biz pay kazanıyor muyuz?
EVALUATE
VAR Pazar = DATATABLE(
"Kategori", STRING, "Yil", INTEGER, "PazarTL", CURRENCY,
{
{"Elektronik", 2023, 5200000}, {"Elektronik", 2024, 7800000},
{"Ev & Yaşam", 2023, 3400000}, {"Ev & Yaşam", 2024, 4760000},
{"Giyim", 2023, 2900000}, {"Giyim", 2024, 5220000},
{"Spor", 2023, 2200000}, {"Spor", 2024, 3190000},
{"Kitap", 2023, 1500000}, {"Kitap", 2024, 1800000},
{"Kozmetik", 2023, 2600000}, {"Kozmetik", 2024, 3380000},
{"Hediye", 2023, 600000}, {"Hediye", 2024, 1140000}
}
)
VAR T =
ADDCOLUMNS(
VALUES(Kategoriler[Kategori]),
"Biz23", CALCULATE([Net Satış], Tarih[Yil] = 2023),
"Biz24", CALCULATE([Net Satış], Tarih[Yil] = 2024),
"P23", VAR k = Kategoriler[Kategori] RETURN SUMX(FILTER(Pazar, [Kategori] = k && [Yil] = 2023), [PazarTL]),
"P24", VAR k = Kategoriler[Kategori] RETURN SUMX(FILTER(Pazar, [Kategori] = k && [Yil] = 2024), [PazarTL])
)
VAR PazarOrt = DIVIDE(SUMX(T, [P24]), SUMX(T, [P23])) - 1
RETURN
ADDCOLUMNS(
T,
"Pazar Büyümesi", DIVIDE([P24], [P23]) - 1,
"Bizim Büyüme", DIVIDE([Biz24], [Biz23]) - 1,
"Kadran",
VAR Hizli = DIVIDE([P24], [P23]) - 1 >= PazarOrt
VAR Kazan = DIVIDE([Biz24], [P24]) > DIVIDE([Biz23], [P23])
RETURN SWITCH(TRUE(),
Hizli && Kazan, "Yıldız",
Hizli, "Fırsat kaçıyor",
Kazan, "Güçleniyor",
"Geriliyor")
)
| Bölge | Anlamı | Kategoriler (pazar büyümesi / bizim büyüme) |
|---|---|---|
| Yıldız | Pazar hızlı, biz daha hızlı | Elektronik (%50 / %94) |
| Fırsat kaçıyor | Pazar hızlı, biz geride | Giyim (%80 / %61), Hediye (%90 / %71) |
| Güçleniyor | Pazar yavaş, biz hızlı | Kitap (%20 / %112), Ev & Yaşam (%40 / %115), Kozmetik (%30 / %117) |
| Geriliyor | Pazar yavaş, biz daha yavaş | Spor (%45 / %40) |
Bulgu: Giyim %61 büyüdüğü halde pay kaybetti, çünkü pazar %80 büyüdü. 2023 payını koruyabilseydik Giyim’de 13.214 ₺, Spor’da 3.587 ₺, Hediye’de 1.073 ₺ daha fazla satış olacaktı. Elektronik sınırda bir Yıldız: pazarı %50 büyüdü, eşik %48,3. Eşiğe çok yakın kategorileri raporda ayrıca belirt.
4. Rapor sayfası taslağı
| Konum | Görsel | Alanlar |
|---|---|---|
| Üst şerit | 3 kart | Toplam pazar payı 2024; Pay değişimi (puan); Pazar büyümesi ve bizim büyüme yan yana |
| Sol orta | Çubuk grafik | Kategori (İlk 3 + Diğer); Pazar Payı %; araç ipucunda Diğer’in içindekiler |
| Sağ orta | Dağılım grafiği | Pazar büyümesi × Pay değişimi; dört bölge |
| Alt | Matris | Kategori; Net Satış, Pazar Büyüklüğü, Pazar Payı %, Pay Değişimi (puan), Kadran |
| Sayfa notu | Metin kutusu | “Pazar verisi: örnek tablo, yıllık. Ay düzeyinde pay gösterilmez.” Gerçek raporda kaynak ve yayın tarihi. |
5. Bulgu özeti ve öneri
- Büyümenin bir kısmı gerçek pay kazancı: toplam pay %2,18’den %2,74’e (+0,56 puan). Yönetim kuruluna “%86 büyüdük” yerine “pazar %48 büyüdü, biz %86” cümlesini götür.
- Giyim ve Hediye’de fırsat kaçıyor: pazar %80 ve %90 büyürken pay kaybettik. 2025 bütçesinde bu iki kategoriye ek pazarlama payı ayır.
- Spor geriliyor: yavaş büyüyen pazarda bile pay kaybı (−0,11 puan). Önce ürün ve fiyat sorununu ara; bütçe artırmadan önce nedeni bul.
- Kitap, Ev & Yaşam ve Kozmetik güçleniyor: payı koruyacak kadar bütçe yeterli; fazlası Giyim’e kaydırılabilir.
- Pazar verisinin kaynağını ve güncelliğini yaz: bu vakadaki rakamlar örnektir. Gerçek tabloda tanım farkı (ör. pazarın KDV dâhil olması) payı puanlarca değiştirebilir.