DAX alt sorgu ölçüsü?

Nov 04 2020

Bir DAX sorgusuyla uğraşıyorum ve yardım edip edemeyeceğinizi merak ediyorum?

"Yapılar" adlı bu tabloyu (veya görselleştirmeyi) düşünün:

Build....App....Status
Build1...App1...UAT
Build1...App2...Complete
Build2...App1...Complete
Build2...App2...Complete

Bu Derleme için 'Tamamlanmış' olmayan Uygulamaların sayısını göstermek için 'AppsOutstanding' adlı bir ölçü sütunu eklemek istiyorum. Şöyle:

Build....App....Status......AppsOutstanding
Build1...App1...UAT.........1
Build1...App2...Complete....1
Build2...App1...Complete....0
Build2...App2...Complete....0

Neredeyse bir 'alt sorgu' ölçümü yapmam gerekiyor !? Gibi bir şey:

SELECT COUNT(Status) FROM Builds
WHERE Build = [The Build In This Row]
AND Status <> 'Complete'

Bunu DAX'a nasıl çevireceğimi biraz şaşırdım mı? İşte başarısız girişimim:

AppsUnavailable = CALCULATE (
    count(Builds[Build]),
    CALCULATETABLE (
        SUMMARIZE ( Builds,Builds[Status] ),
        Builds[Status] <> "Complete"
    ))

Şimdiden teşekkürler!

GÜNCELLEME

Bunu denedim, ancak sayı çalışmıyor ve ayrıca bu DAX filtreleri "Tamamlandı" durumları gerçek sonuçlarımdan çıkıyor! Ki istemiyorum. Sayım ölçümden yalnızca "Tamamlandı" durumlarını filtrelemek istiyorum ....

AppsUnavailable =
CALCULATE (
    COUNT ( Builds[Build] ),
    FILTER (
        ALL ( Builds[Build] ),
        Builds[Build] = SELECTEDVALUE ( Builds[Build] )
    ),
    FILTER (
        ALL ( Builds[Status] ),
        Builds[Status] <> "Complete"
    )
)

GÜNCELLEME 2

Sanırım temelde yanlış bir şey yapıyorum. Aynı ada sahip diğer 'Yapıları' bulmak için gerçekten basitleştirdim ve hala yalnızca 1'leri döndürüyor!

AppsUnavailable =
CALCULATE (
    COUNT ( Builds[Build] ),
    FILTER (
        ALL ( Builds[Build] ),
        Builds[Build] = SELECTEDVALUE ( Builds[Build] )
    )
)

GÜNCELLEME 3

Bu sorgu (tek bir tablo (birleşim yok) örneği üzerinde test edilirken) şunu üretir:

Build....App....Status......AppsOutstanding
Build1...App1...UAT.........1
Build1...App2...Complete....0
Build1...App2...UAT.........1
Build2...App1...Complete....0
Build2...App2...Complete....0

Ama aslında buna ihtiyacım var:

Build....App....Status......AppsOutstanding
Build1...App1...UAT.........2
Build1...App2...Complete....0
Build1...App2...UAT.........2
Build2...App1...Complete....0
Build2...App2...Complete....0

Yani Build1 tamamlanmamış 2 Uygulamaya sahiptir.

O halde neden tüm 1'leri 'canlı' ortamda aldığımı araştırmam gerekiyor. 1 .... yerine 2 tablo üzerinde filtreleme yapmak gerekir.

Yanıtlar

1 msta42a Nov 04 2020 at 06:00

[Bu Satırdaki Derleme] 'yi SELECTEDVALUE (Derlemeler [Derleme]) ile değiştirebilirsiniz. Bunu dene:

AppsUnavailable =
CALCULATE (
    COUNT ( Builds[App] ),
    FILTER (
        ALL ( Builds[Status], Builds[Build] ),
        Builds[Build] = SELECTEDVALUE ( Builds[Build] )
            && Builds[Status] <> "Complete"
    )
) + 0

powerBI Tablo görselleştirme dahili kullanım SUMMARIZECOLUMNS, bu da hesaplamadan veri olmadan satırı kaldırır. 2 seçeneğiniz var: -Sütuna Göre Grupla -> "Verisiz öğeyi göster" seçeneğine sağ tıklayın -Son parantezden sonra hesaplamaya +0 ekleyin

GÜNCELLEME:

CALCULATE (
    COUNT ( YourTable[App] ),
    FILTER (
        ALL ( YourTable[App], YourTable[Build], YourTable[Status] ),
        YourTable[Build] = SELECTEDVALUE ( YourTable[Build] )
            && YourTable[Status] <> "Complete"
    )
) + 0