Ana içeriğe geç
Kesit Power BI
Orta · Vaka Çalışmaları

Vaka: pazar payı ve rakip karşılaştırması

Pazarlama müdürü “büyüyoruz ama pazar da büyüyor; payımız artıyor mu?” diye soruyor. Modelde olmayan bir pazar büyüklüğü tablosunu DATATABLE ile kurar, ayrıntı düzeyini ve ilişkiyi (ilişki ya da TREATAS) çözer, pazar payını, puan cinsinden pay değişimini, ilk 3 + Diğer tablosunu ve pazar büyümesine karşı bizim büyümemizi gösteren dört bölgeli bir sınıflamayı hesaplarsın.

Uygulamada aç, 6 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

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ı:

  1. Her kategoride pazarın yüzde kaçını alıyoruz ve bu pay geçen yıla göre kaç puan değişti?
  2. En büyük üç kategorimiz ve “Diğer” grubu pazarda nerede duruyor?
  3. Hangi kategoride pazardan hızlı büyüyoruz, hangisinde pazarın gerisinde kaldık?
Bu vakadaki pazar rakamları örnektirModelde pazar verisi yok. Aşağıdaki pazar büyüklükleri ders için uydurulmuş örnek değerlerdir; gerçek bir sektörü ya da kurumu temsil etmez. Gerçek işte bu tablo bir sektör derneğinden, araştırma şirketinden ya da kamu istatistiğinden gelir ve kaynağı rapora yazılır.

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}
    }
)
TabloAyrıntı düzeyiNot
SatislarSipariş satırı, günBizim satışımız: [Net Satış]
PazarKategori × yılÖrnek pazar büyüklüğü, ₺. Yalnızca 2023 ve 2024.
Kategoriler, TarihKategori; 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:

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.

Puan ve yüzde farkıPay %2,0’dan %2,5’e çıktıysa artış 0,5 puandır (yüzde puan); “%25 arttı” demek de doğrudur ama başka bir şeyi anlatır. Raporda pay değişimini her zaman puanla yaz ve ölçünün adına “(puan)” ekle.
Kategori2024 satış2024 pazar (örnek)Pay 2023Pay 2024Değişim
Kitap95.327 ₺1.800.000 ₺%2,99%5,30+2,30 puan
Spor98.317 ₺3.190.000 ₺%3,19%3,08−0,11 puan
Ev & Yaşam144.292 ₺4.760.000 ₺%1,97%3,03+1,06 puan
Elektronik206.432 ₺7.800.000 ₺%2,04%2,65+0,61 puan
Kozmetik82.908 ₺3.380.000 ₺%1,47%2,45+0,98 puan
Giyim110.090 ₺5.220.000 ₺%2,36%2,11−0,25 puan
Hediye9.700 ₺1.140.000 ₺%0,95%0,85−0,09 puan
Toplam747.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ölgeAnlamıKategoriler (pazar büyümesi / bizim büyüme)
YıldızPazar hızlı, biz daha hızlıElektronik (%50 / %94)
Fırsat kaçıyorPazar hızlı, biz gerideGiyim (%80 / %61), Hediye (%90 / %71)
GüçleniyorPazar yavaş, biz hızlıKitap (%20 / %112), Ev & Yaşam (%40 / %115), Kozmetik (%30 / %117)
GeriliyorPazar 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.

Görsel olarakDağılım grafiğinde X: pazar büyümesi, Y: pay değişimi (puan), boyut: 2024 satışı. X’te %48,3, Y’de 0 için iki sabit çizgi (Analiz bölmesi) dört bölgeyi çizer. Kadran adını renk alanına koy.

4. Rapor sayfası taslağı

KonumGörselAlanlar
Üst şerit3 kartToplam pazar payı 2024; Pay değişimi (puan); Pazar büyümesi ve bizim büyüme yan yana
Sol ortaÇubuk grafikKategori (İlk 3 + Diğer); Pazar Payı %; araç ipucunda Diğer’in içindekiler
Sağ ortaDağılım grafiğiPazar büyümesi × Pay değişimi; dört bölge
AltMatrisKategori; Net Satış, Pazar Büyüklüğü, Pazar Payı %, Pay Değişimi (puan), Kadran
Sayfa notuMetin 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

  1. 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.
  2. 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.
  3. 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.
  4. Kitap, Ev & Yaşam ve Kozmetik güçleniyor: payı koruyacak kadar bütçe yeterli; fazlası Giyim’e kaydırılabilir.
  5. 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.
Alıştırmalara geç (6)