Hareketli Ortalama: DAX ile Kayan Pencerede Ortalama Almak
Beceri rehberi

Hareketli Ortalama: DAX ile Kayan Pencerede Ortalama Almak

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

Hareketli ortalama, her dönem için son birkaç dönemin ortalamasını alarak dalgalanmayı yumuşatır. Power BI’da bunu DATESINPERIOD ile kurmak, ilk dönemlerdeki yanıltıcı düşüşü önlemek ve pencere genişliğini işe göre seçmek birkaç ölçüyle mümkündür.

Bir bakışta

  1. Hareketli ortalama her noktada son N dönemi ortalar. Pencere zamanla kayar; böylece mevsimsel dalgalanmalar yumuşar ve eğilim daha net okunur.
  2. Pencereyi DATESINPERIOD tanımlar. Son tarihten geriye doğru belirtilen ay ya da gün sayısı kadar tarih döndürür; CALCULATE içinde filtre olarak kullanılır.
  3. Ortalama toplamı sabit sayıya bölerek değil, penceredeki dönem sayısına bölerek alınmalıdır. Sabit paydalı bölme, veri başlangıcındaki ilk dönemleri olduğundan düşük gösterir.
  4. Tarih tablosu zorunludur. Eksik günler pencereyi bozar; ay ve gün eksenlerinde tarih tablosunun sütunları kullanılmalıdır.
  5. Pencere genişliği bir denge kararıdır. Dar pencere güncel kalır ama az yumuşatır; geniş pencere yumuşatır ama değişimi geç yansıtır.

Hareketli ortalama neyi çözer?

Aylık satış grafiği tek tek aylara bakıldığında dalgalıdır: bir ay kampanya yüzünden yükselir, bir ay tatil yüzünden düşer. Bu dalgalanma eğilimi, yani satışların genel olarak artıp artmadığını görmeyi zorlaştırır. Hareketli ortalama her ay için kendisi ve ondan önceki birkaç ayın ortalamasını alarak bu gürültüyü azaltır.

Pencere sabit uzunlukta ve kayan bir aralıktır. Son 3 ay ortalaması söz konusuysa, mart noktası ocak, şubat ve martın ortalamasını verir; nisan noktası şubat, mart ve nisanı. Pencere her adımda bir dönem kayar. Son 12 ay ortalaması da aynı mantıkla yıllık mevsimselliği büyük ölçüde siler, çünkü pencere her mevsimi bir kez içerir.

Bu hesap kümülatif toplamdan ve yılbaşından bugüne toplamdan farklıdır. Kümülatif toplam dönem boyunca birikir, yılbaşından bugüne toplam her yıl sıfırlanır. Hareketli ortalama ise her zaman aynı uzunlukta bir pencere kullanır ve toplam yerine ortalama verir.

Şekil 1

Hareketli ortalama, tanımdan doğrulamaya her adımın bir öncekine yaslandığı bir kurgudur

DAX ölçüsünün kuruluş sırası

  1. Aylık toplamı tanımlaPencerede ortalaması alınacak temel ölçüyü yazın.
  2. Pencereyi belirleSon tarihten geriye doğru kaç ay ya da gün alınacağını seçin.
  3. Pencerenin toplamını alTemel ölçüyü pencere tarihleriyle hesaplayın.
  4. Pencerenin dönem sayısını sayPaydayı sabit bırakmayın, penceredeki ay sayısını sayın.
  5. Böl ve doğrulaSonucu elle hesapladığınız küçük bir örnekle karşılaştırın.
Kaynak: sayfa içeriğiMindset Institute

Ölçünün parçaları: temel ölçü, pencere, pay ve payda

Önce ortalaması alınacak temel ölçü bulunur. Satış örneğinde bu toplam satış tutarıdır:

Toplam Satış = SUM('Satışlar'[Tutar])

Pencere için DATESINPERIOD kullanılır. İşlev bir tarih sütunu, başlangıç tarihi, dönem sayısı ve birimi alır. Dönem sayısı negatifse tarihler geriye doğru alınır. Microsoft belgesindeki örnek, rapor haziran ayına filtrelenmişken son tarihten geriye bir yıllık tarih aralığı döndürür; kalıp aynıdır, yalnızca dönem ve birim değişir. Pay, pencere içindeki toplamdır:

Hareketli Toplam = CALCULATE( [Toplam Satış], DATESINPERIOD('Takvim'[Tarih], MAX('Takvim'[Tarih]), -3, MONTH) )

MAX('Takvim'[Tarih]) o noktadaki son tarihi bulur ve pencere o tarihten geriye 3 ay uzanır. Payda penceredeki ay sayısıdır:

Penceredeki Ay Sayısı = CALCULATE( DISTINCTCOUNT('Takvim'[Ay Başı]), DATESINPERIOD('Takvim'[Tarih], MAX('Takvim'[Tarih]), -3, MONTH) )

Sonuç ikisinin oranıdır:

Hareketli Ortalama 3 Ay = DIVIDE([Hareketli Toplam], [Penceredeki Ay Sayısı])

Son 12 aylık ortalama için iki ölçüde de -3 yerine -12 yazmanız yeterlidir. Tarih tablosundaki 'Ay Başı' sütunu, her günün ait olduğu ayın ilk gününü tutan yardımcı bir sütundur. Bu sayaç tarih tablosundaki ayları sayar; tarih tablosu ilk veri ayından önce başlıyorsa veri öncesi aylar da paydaya girer. Bu yüzden tarih tablosunu ilk veri ayından başlatın.

Günlük veride hareketli ortalama

Eksen aylık değil günlükse, pencerenin birimi gün olur ve ortalama günlük değerler üzerinden alınır. Burada AVERAGEX, pencere tarihlerini tek tek dolaşıp her gün için temel ölçüyü hesaplar ve ortalamasını verir:

Hareketli Ortalama 7 Gün = AVERAGEX( DATESINPERIOD('Takvim'[Tarih], MAX('Takvim'[Tarih]), -7, DAY), [Toplam Satış] )

Bu biçim pencereyi tarih tablosunun günleri üzerinden dolaşır; ancak satışı olmayan bir günde ölçü boş döndüğü için AVERAGEX o günü ortalamaya katmaz. Satışsız günlerin ortalamayı sıfırla çekmesini istiyorsanız temel ölçüyü boş yerine sıfır döndürecek şekilde yazmalısınız. Bu karar iş anlamına bağlıdır: hafta sonu satış yapılmayan bir işletmede sıfırlar ortalamayı gerçeğinden düşük gösterebilir.

Aynı kalıp ay ekseninde de AVERAGEX ile kurulabilir, ancak ay ekseninde aylık toplamlarla çalışmak için pay ve payda yöntemi daha sade ve her eksenle tutarlıdır.

Pencere genişliğini seçmek

Pencere genişliğinin doğru bir değeri yoktur; bir denge seçimidir. Dar bir pencere (örneğin son 3 ay) değişiklikleri hızlı yansıtır ama yumuşatması azdır. Geniş bir pencere (son 12 ay) eğilimi net gösterir ama bir değişimi gecikmeyle yansıtır; satış düşüşü başladığında ortalama çok daha geç düşer.

Mevsimsellik olan işlerde pencere, mevsimin uzunluğuna eşit seçildiğinde mevsimsel etkiyi siler. Aylık verilerde yıllık mevsimselliği temizlemek için 12 ay kullanılır. Eğilimi görmek yerine kısa vadeli sapmayı izliyorsanız dar pencere uygundur.

Bir rapor sayfasında farklı genişlikteki pencereleri birlikte göstermek işe yarar: dar pencere güncel durumu, geniş pencere uzun vadeli eğilimi verir. Aralarındaki kesişme noktaları olası bir yön değişikliğine işaret edebilir; tek başına kanıt sayılmaz, alttaki aylık değerlerle birlikte okunmalıdır.

Başlangıç dönemi, toplam satırı ve doğrulama

Verinin ilk aylarında pencere henüz dolmamıştır. Payda olarak penceredeki ay sayısını kullanan yöntem, tarih tablosu ilk veri ayından başladığında bu aylarda mevcut aylar üzerinden ortalama verir; sabit bir sayıya bölen formül ise ilk aylarda olduğundan düşük sonuç üretirdi. Yalnızca tam pencereli noktaları göstermek istiyorsanız, ilk veri tarihinden itibaren yeterli ay geçip geçmediğini ölçüye koşul olarak ekleyin.

Toplam satırında MAX('Takvim'[Tarih]) görünen dönemin son tarihidir; bu nedenle toplam satırı, son pencerenin ortalamasını verir. Bu davranış birçok raporda kabul edilebilir, ama bir toplam beklenen kullanıcıları şaşırtabilir; gerekirse ölçüyü yalnızca eksen dönemlerinde göstermek için HASONEVALUE ile koşullayın.

Doğrulama için küçük bir örnek seçin: belirli bir ay için pencerenin aylık değerlerini bir tabloda yan yana gösterin, elle toplayıp pencere uzunluğuna bölün ve ölçü sonucuyla karşılaştırın. Ay ekseni ile yıl-ay ekseni gibi farklı eksenlerle de deneyin.

Sık hatalar

Hareketli ortalamada sık yapılan hatalar şunlardır.

  • Tarih tablosu yerine olgu tablosundaki tarih sütunuyla çalışmak. Satış olmayan günler tabloda bulunmadığından pencere boşluklu olur ve zaman fonksiyonları beklenen sonucu vermez.
  • Eksende olgu tablosunun tarih sütununu, ölçüde tarih tablosunu kullanmak. Eksen ve ölçü aynı tarih tablosundan beslenmelidir.
  • Toplamı sabit bir sayıya bölmek. Veri başlangıcında ve eksik dönemlerde sonuç yanlış çıkar.
  • Ortalamaların ortalamasını almak. Günlük ortalamaları aylık ortalamayla tekrar ortalamak, farklı gün sayılı ayları eşit ağırlıkta sayar.
  • Boş dönemleri sıfır sayıp sayılmayacağını netleştirmemek. Satışsız günlerin ortalamaya girmesi ya da girmemesi iş anlamına göre belirlenmelidir.

Ölçü yazıldıktan sonra tarih tablosunun ilişkisini, tarih tablosu olarak işaretlendiğini ve Ay Başı gibi yardımcı sütunların doğru dolduğunu kontrol etmek, birçok sorunu önceden yakalar.

Bu beceriyi Mindset programlarında nerede çalışırsınız?

Uygulamalı Power BI ile Veri Analitiği ve Görselleştirme Sertifika Programı, DAX analiz dili ve kullanımı ile veri güdümlü iş zekası geliştirme başlıklarıyla ölçü yazmanın temelini verir. Power BI İleri Düzey ve DAX programında zaman zekası ve dönem analizi ayrı bir başlıktır. Satış, finans ve operasyon raporlarında eğilimi okutmak isteyen analistler bu kalıbı sık kullanır.

İlgili Mindset programı

Uygulamalı Power BI ile Veri Analitiği ve Görselleştirme Sertifika Programı

Sık sorulanlar

Sık sorulan sorular

Tarih tablosu olmadan hareketli ortalama hesaplanabilir mi?

Teknik olarak denenebilir ama güvenilir değildir. Olgu tablosunda yalnızca satış olan günler bulunur; pencere bu günlerle sınırlı kalır ve eksik günler hesabı bozar. DATESINPERIOD gibi işlevler kesintisiz bir tarih sütunu bekler. Ayrı bir tarih tablosu kurmak çözümü sağlamlaştırır.

Neden ilk aylarda ortalama düşük çıkıyor?

Toplamı sabit bir sayıya, örneğin pencere uzunluğuna bölüyorsanız veri başlangıcında pencere dolmadığı için sonuç olduğundan düşük kalır. Payda olarak penceredeki gerçek ay sayısını kullanın. Böylece mevcut aylar üzerinden ortalama alınır ve başlangıç etkisi azalır.

Son 12 ay ortalaması ile yıllık ortalama aynı mıdır?

Hayır. Yıllık ortalama belirli bir takvim yılının ortalamasıdır ve yıl boyunca tek değer verir. Son 12 ay ortalaması ise her noktada kayan bir pencere kullanır ve her ay güncellenir. İlki bir dönemi özetler, ikincisi eğilimi izler.

Toplam satırında hareketli ortalama neden son pencerenin değerini veriyor?

Toplam satırında MAX tarih tüm görünür dönemin son tarihidir. Pencere bu tarihten geriye hesaplandığı için sonuç son pencerenin ortalamasıdır. Bunu istemiyorsanız ölçüyü, bağlamda tek bir dönem varsa gösterecek şekilde koşullayın.

Ağırlıklı hareketli ortalama DAX ile yapılabilir mi?

Yapılabilir; ancak her dönem için ayrı bir ağırlık tanımlamak gerekir. Ağırlıklar bir tabloda tutulur ve pencere tarihleriyle eşleştirilerek ağırlıklı toplam alınır. Bu, temel kalıbın üzerine kurulan ileri bir uygulamadır ve önce basit ortalamanın sağlam çalıştığından emin olunmalıdır.