Ek akıllı zaman gösterimi hesaplamaları
Tek bir tarih döndüren farklı DAX akıllı zaman gösterimi işlevleri de vardır. Bu işlevleri iki farklı senaryoda uygulayarak haklarında bilgi edineceksiniz.
FIRSTDATE
ve DAX işlevleri, LASTDATE
belirtilen tarih sütunu için geçerli filtre bağlamındaki ilk ve son tarihi döndürür.
Yeni oluşumları hesaplama
Akıllı zaman gösterimi işlevlerinin bir diğer kullanım alanı da yeni oluşumları saymaktır. Aşağıdaki örnekte belirli bir zaman aralığındaki yeni müşterilerin sayısını nasıl hesaplayabileceğiniz gösterilmiştir. Yeni müşteriler, ilk alışveriş yaptıkları zaman aralığı içinde sayılır.
İlk göreviniz Sales tablosuna aşağıdaki ölçüyü ekleyerek benzersiz müşterilerin yaşam süresi (LTD) sayısını saymaktır . En başından bugüne, filtre bağlamında zamanın başlangıcından son tarihe kadar olan süreyi ifade eder. Ölçüyü binlik ayıracı kullanan tamsayı olarak biçimlendirin.
Customers LTD =
VAR CustomersLTD =
CALCULATE(
DISTINCTCOUNT(Sales[CustomerKey]),
DATESBETWEEN(
'Date'[Date],
BLANK(),
MAX('Date'[Date])
),
'Sales Order'[Channel] = "Internet"
)
RETURN
CustomersLTD
Customers LTD ölçüsünü matris görseline ekleyin. Her ayın sonuna kadar LTD ayrı müşteri sayısı sonucunu verdiğini göreceksiniz.
işlevi, DATESBETWEEN
belirli bir başlangıç tarihiyle başlayan ve belirli bir bitiş tarihine kadar devam eden tarih sütununu içeren bir tablo döndürür. Başlangıç tarihi BLANK olduğunda tarih sütunundaki ilk tarihi kullanır. (Benzer şekilde bitiş tarihi BLANK olduğunda tarih sütunundaki son tarihi kullanır.) Bu örnekte bitiş tarihi, filtre bağlamındaki son tarihi döndüren MAX işlevi tarafından belirlenmiştir. Bu nedenle, Ağustos 2017 ayı filtre bağlamındaysa, MAX işlevi 31 Ağustos 2017'yi döndürür ve DATESBETWEEN
işlev 31 Ağustos 2017'ye kadar olan tüm tarihleri döndürür.
Şimdi ölçüyü değiştirerek New Customers olarak yeniden adlandıracak ve filtre bağlamındaki zaman aralığı öncesindeki ayrı müşterilerin sayısını depolayacak ikinci bir değişken ekleyeceksiniz. Yan tümcesi RETURN
artık bu değeri LTD müşterilerinden çıkararak zaman aralığındaki yeni müşteri sayısı olan bir sonuç üretir.
New Customers =
VAR CustomersLTD =
CALCULATE(
DISTINCTCOUNT(Sales[CustomerKey]),
DATESBETWEEN(
'Date'[Date],
BLANK(),
MAX('Date'[Date])
),
'Sales Order'[Channel] = "Internet"
)
VAR CustomersPrior =
CALCULATE(
DISTINCTCOUNT(Sales[CustomerKey]),
DATESBETWEEN(
'Date'[Date],
BLANK(),
MIN('Date'[Date]) - 1
),
'Sales Order'[Channel] = "Internet"
)
RETURN
CustomersLTD - CustomersPrior
CustomersPrior değişkeni için işlevin DATESBETWEEN
filtre bağlamındaki ilk tarihe kadar olan tarihleri eksi bir içerdiğine dikkat edin. Microsoft Power BI içinde tarihler sayı olarak depolandığından tarihi kaydırmak için sayılarla toplama veya çıkarma yapabilirsiniz.
Anlık görüntü hesaplamaları
Bazen olgu verileri zaman içindeki anlık görüntüler olarak depolanır. Stok durumları veya hesap bakiyeleri, sık kullanılan örneklerdendir. Değerlerin anlık görüntüsü belirli aralıklarla bir tabloya yüklenir.
Anlık görüntüleri özetlerken (stok durumları gibi) değerleri tarih dışındaki herhangi bir boyutu kullanarak özetleyebilirsiniz. Farklı kategorilere ait ürünlerin stok rakamlarını toplamak mantıklı bir özet oluşturur ancak farklı tarihlerdeki stok rakamlarını toplamak mantıklı olmaz. Düne ait stok rakamlarını bugünün stok rakamlarıyla toplamak faydalı bir işlem olmayacaktır (ortalamasını almak istemediğiniz sürece).
Anlık görüntü tablolarını özetleme aşamasında ölçü formülleri, tek bir tarih filtresi uygulamak için DAX akıllı zaman gösterimi işlevlerinden faydalanabilir.
Aşağıdaki örnekte Adventure Works şirketiyle ilgili bir senaryoyu inceleyeceksiniz. Model görünümüne geçin ve Inventory model diyagramını seçin.
Diyagramda üç tablo gösterildiğine dikkat edin: Product, Date ve Inventory. Stok tablosu, her tarih ve ürün için birim bakiyelerinin anlık görüntülerini depolar. Daha da önemlisi, tabloda eksik tarih ve hiçbir ürün için aynı tarihte birden fazla giriş yoktur. Ayrıca son anlık görüntü kaydı, 15 Haziran 2020 tarihinde depolanmıştır.
Şimdi rapor görünümüne geçin ve raporun Sayfa 2 bölümünü seçin. Inventory tablosunun UnitsBalance sütununu matris görseline ekleyin. Varsayılan özetleme ayarı, değerlerin toplanmasıdır.
Bu görsel yapılandırma, anlık görüntü değerlerinin nasıl özetlenmemesi gerektiğine iyi bir örnektir. Günlük anlık görüntü bakiyelerini toplamak, anlamlı bir sonuç vermez. Bu nedenle UnitsBalance alanını matris görselinden kaldırın.
Şimdi Stok tablosuna tek bir tarih içinUnitsBalance değerini toplayan bir ölçü ekleyeceksiniz. Tarih, her zaman aralığının son tarihi olacak. bu, işlevi kullanılarak LASTDATE
elde edilir. Ölçüyü binlik ayıracı kullanan tamsayı olarak biçimlendirin.
Stock on Hand =
CALCULATE(
SUM(Inventory[UnitsBalance]),
LASTDATE('Date'[Date])
)
Not
Ölçü formülünde işlevinin kullanıldığına SUM
dikkat edin. Toplama işlevi kullanılmalıdır (ölçüler sütunlara doğrudan başvuruya izin vermez), ancak her tarih için her ürün için yalnızca bir satır bulunduğundan işlev SUM
yalnızca tek bir satır üzerinde çalışır.
Stock on Hand ölçüsünü matris görseline ekleyin. Her bir ürünün değeri artık her ayda son kaydedilen birim bakiyesine göre belirlenir.
Haziran ayının son tarihi için herhangi bir kayıt bulunmadığından ölçü Haziran 2020 için BLANK değerini döndürür. Verilere göre bu henüz yaşanmamıştır.
Filtre bağlamındaki son tarihe göre filtre uygulamak bazı sorunlara neden olur: Kayıtlı tarihin mevcut olmamasının nedeni, henüz yaşanmamış olması veya stok bakiyelerinin hafta sonları kaydedilmemesi olabilir.
Bir sonraki adımınız, ölçü formülünü BLANK olmayan bir sonuca sahip olan son tarihi belirleyecek ve bu tarihe göre filtre uygulayacak şekilde düzenlemek. DAX işlevini kullanarak LASTNONBLANK
bu görevi gerçekleştirebilirsiniz.
Stock on Hand ölçüsünü değiştirmek için aşağıdaki ölçü tanımını kullanın.
Stock on Hand =
CALCULATE(
SUM(Inventory[UnitsBalance]),
LASTNONBLANK(
'Date'[Date],
CALCULATE(SUM(Inventory[UnitsBalance]))
)
)
Matris görselinde Haziran 2020 ve toplam (yılın tamamı) değerlerine bakın.
LASTNONBLANK
işlevi yineleyici bir işlevdir. BLANK dışında bir sonuç veren son tarihi döndürür. Bunu yapmak için filtre bağlamındaki tüm tarihlerde azalan kronolojik düzende yinelenir. (Buna karşılık, FIRSTNONBLANK
artan kronolojik sırada yinelenir.) Her tarih için geçirilen ifadeyi değerlendirir. İşlev, BLANK haricinde bir sonuçla karşılaştığında tarihi döndürür. Bu tarih daha sonra işlevi filtrelemek CALCULATE
için kullanılır.
Not
İşlev, LASTNONBLANK
ifadesini satır bağlamında değerlendirir. İşlev, CALCULATE
ifadeyi doğru değerlendirecek şekilde filtre bağlamı için satır bağlamını geçiş yapmak için kullanılmalıdır.
Şimdi Inventory tablosunun UnitsBalance sütununu gizlemeniz gerekir. Bunu yaparak rapor yazarlarının yanlışlıkla birim bakiyesi anlık görüntülerini özetlemesini önlemiş olursunuz.