Ek akıllı zaman gösterimi hesaplamaları

Tamamlandı

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.

Satırları Year ve Month ölçütlerine göre sıralanmış olan ve Revenue, Revenue YTD, Revenue YoY % ve Customers LTD özetlemelerinin yer aldığı matris görselini gösteren görüntü.

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

Satırları Year ve Month ölçütlerine göre sıralanmış olan ve Revenue, Revenue YTD, Revenue YoY % ve New Customers özetlemelerinin yer aldığı matris görselini gösteren görüntü. New Customers değerleri vurgulanmıştır.

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.

Üç tablodan oluşan model diyagramını gösteren görüntü: Product, Date ve Inventory. Product ve Date tabloları ile Inventory arasında bir-çok ilişkisi var.

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.

FY2020 Mountain-200 Bike Stock adlı matris görselini gösteren görüntü. Satırlar Product, aylar ise Month ölçütüne göre gruplanmış. Her bir ürüne ve aya ait yüksek değerler gösteriliyor.

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.

FY2020 Mountain-200 Bike Stock adlı matris görselini gösteren görüntü. Satırlar Product, aylar ise Month ölçütüne göre gruplanmış. Her bir ürüne ve aya ait düşük değerler gösteriliyor. Haziran 2020 ve Toplam, BLANK.

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.

Matris görselinde artık Haziran 2020 ve Toplam değerlerinin bulunduğunu gösteren görsel.

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.