09.2024 | dax | power bi | dax allexcept
Funkcja ALLEXCEPT
w języku DAX pozwala na usunięcie wszystkich filtrów z tabeli, z wyjątkiem tych, które dotyczą określonych kolumn.
Funkcja ALLEXCEPT
usuwa wszystkie filtry z tabeli, pozostawiając aktywne filtry na wybranych kolumnach. W praktyce oznacza to, że możesz usunąć filtry na wszystkich innych kolumnach tabeli, z wyjątkiem tych, które wyraźnie wskażesz. Dzięki temu masz możliwość zachowania kontekstu filtrowania dla określonych kolumn, podczas gdy inne wymiary są ignorowane.
DAXCopy code
ALLEXCEPT ( <Tabela>, <Kolumna1>, <Kolumna2>, ... )
Usuwanie filtrów z wyjątkiem jednej kolumny: Wyobraźmy sobie, że mamy tabelę Sales
(Sprzedaż) z kolumnami Region
, Product
, Amount
. Chcemy obliczyć sumaryczną sprzedaż, ignorując wszystkie filtry z wyjątkiem filtrów na Region
.
DAXCopy code
TotalSalesByRegion = CALCULATE (
SUM(Sales[Amount]),
ALLEXCEPT(Sales, Sales[Region])
)
W tym przypadku funkcja ALLEXCEPT
usuwa wszystkie filtry w tabeli Sales
, ale pozostawia filtry dotyczące kolumny Region
. Oznacza to, że sprzedaż będzie sumowana tylko w odniesieniu do regionu, bez uwzględniania innych filtrów.
Użycie ALLEXCEPT z kilkoma kolumnami: Możemy również zachować filtry na więcej niż jednej kolumnie, np. chcemy obliczyć sprzedaż, uwzględniając filtry na kolumny Region
i Product
, ale ignorując inne filtry.
DAXCopy code
TotalSalesByRegionAndProduct = CALCULATE (
SUM(Sales[Amount]),
ALLEXCEPT(Sales, Sales[Region], Sales[Product])
)
Tutaj pozostawiamy aktywne filtry na dwóch kolumnach (Region
i Product
), co oznacza, że sprzedaż będzie sumowana z uwzględnieniem wyłącznie tych filtrów, ignorując filtry na innych kolumnach, takich jak np. Customer
czy Date
.
Zaawansowane scenariusze z kalkulacjami procentowymi: Funkcja ALLEXCEPT
jest również przydatna w przypadku obliczeń udziału procentowego, gdzie chcemy, aby filtr działał tylko na wybranych kolumnach. Załóżmy, że chcemy obliczyć procentowy udział sprzedaży produktu w danym regionie.
DAXCopy code
SalesPctByRegion = DIVIDE(
SUM(Sales[Amount]),
CALCULATE(SUM(Sales[Amount]), ALLEXCEPT(Sales, Sales[Region]))
)
W tym przykładzie wyliczamy udział procentowy sprzedaży produktu w danym regionie, ignorując filtry na inne kolumny niż Region
.
ALLEXCEPT
pozwala na pozostawienie aktywnych filtrów na wybranych kolumnach.ALLEXCEPT
daje możliwość tworzenia bardziej dynamicznych raportów, które reagują na interakcje użytkownika z raportem, zachowując filtry na najważniejszych kolumnach.ALL
działa na wszystkie kolumny, bez wyjątków.ALLEXCEPT
.Podczas używania funkcji ALLEXCEPT
w bardziej złożonych modelach danych warto upewnić się, że dobrze rozumiemy wpływ filtrów na raporty. W modelach z wieloma tabelami i relacjami, precyzyjne zarządzanie filtrami przy użyciu ALLEXCEPT
może zapewnić lepszą kontrolę nad wynikami obliczeń.
Funkcja ALLEXCEPT
w DAX pozwala na selektywne usuwanie filtrów z tabeli, z zachowaniem filtrów dla wybranych kolumn. Daje zatem kontrolę nad kontekstem filtrowania.
Wdrażam rozwiązania analityczne, buduję raporty zarządcze i pomagam zrozumieć dane.
Korzystam z Google Marketing Cloud, Microsoft Power BI, Google Cloud oraz Python.
Pracowałem m.in. dla Credit Suisse, Phonak, Hansaton, Unitron, Nestle, IBM, Play.
Jestem współtwórcą grupy Hexe Capital SA.
Zapraszam do lektury i współpracy.
Krzysztof Surowiecki
Chcę porozmawiać o współpracy →Moje certyfikaty