09.2024 | dax | power bi | allcrossfiltered
Funkcja ALLCROSSFILTERED
jest używana w kontekście zarządzania relacjami między tabelami w modelu danych. Pozwala nam na usunięcie filtrów krzyżowych (cross-filters), które pochodzą z relacji między tabelami, co jest szczególnie przydatne w bardziej skomplikowanych modelach, gdzie owe relacje mogą mieć istotny wpływ na obliczenia.
ALLCROSSFILTERED
działa poprzez usuwanie filtrów, które zostały nałożone na tabelę poprzez relacje z innymi tabelami w modelu danych. Dzięki temu funkcja pozwala na ignorowanie filtrów zdefiniowanych przez te relacje, co umożliwia bardziej precyzyjną kontrolę nad kontekstem filtrowania.
ALLCROSSFILTERED ( <Tabela> )
Usunięcie filtrów krzyżowych na tabeli: Załóżmy, że mamy model danych z tabelami Sales
(Sprzedaż) i Products
(Produkty), które są powiązane relacją. Relacja ta może automatycznie wprowadzać filtry w raportach, ograniczając wyniki do wybranych produktów. Aby obliczyć sumaryczną sprzedaż bez wpływu filtrów pochodzących z tabeli Products
, możemy użyć funkcji ALLCROSSFILTERED
.
TotalSalesWithoutCrossFilters = CALCULATE (
SUM(Sales[Amount]),
ALLCROSSFILTERED(Products)
)
W tym przykładzie ALLCROSSFILTERED(Products)
usuwa wszelkie filtry, które pochodzą z relacji między tabelą Sales
i Products
. Wynik jest sumą sprzedaży, bez wpływu ograniczeń związanych z produktami.
Porównanie sprzedaży z i bez filtrów krzyżowych: Możesz użyć tej funkcji, aby porównać sprzedaż z zastosowaniem filtrów krzyżowych z obliczeniami, które tych filtrów nie uwzględniają.
SalesComparison =
VAR SalesWithFilters = SUM(Sales[Amount])
VAR SalesWithoutCrossFilters = CALCULATE(SUM(Sales[Amount]), ALLCROSSFILTERED(Products))
RETURN SalesWithFilters - SalesWithoutCrossFilters
W tym przypadku tworzysz zmienne, które przechowują obie wartości – jedną z filtrami krzyżowymi, a drugą bez nich. Następnie różnicujesz te wartości, aby zobaczyć, jak filtry krzyżowe wpływają na sprzedaż.
Zaawansowane raportowanie: W bardziej złożonych modelach, gdzie mamy wiele tabel powiązanych relacjami, ALLCROSSFILTERED
jest przydatne, gdy chcemy kontrolować wpływ relacji między tabelami. Na przykład, gdy dane są silnie zależne od kilku wymiarów (takich jak czas, region, kategoria produktu), możemy precyzyjnie kontrolować, które filtry są aktywne, a które ignorowane.
TotalSalesWithoutCrossFilters = CALCULATE (
SUM(Sales[Amount]),
ALLCROSSFILTERED(Regions),
ALLCROSSFILTERED(Products)
)
W tym przykładzie usuwamy filtry zarówno z tabeli Regions
(Regiony), jak i Products
(Produkty), dzięki czemu nasze obliczenia nie są ograniczone przez te tabele.
Funkcja ALLCROSSFILTERED
jest szczególnie przydatna w następujących przypadkach:
ALLCROSSFILTERED
pozwala na lepszą kontrolę nad tym, które filtry są brane pod uwagę w obliczeniach.ALL
.W przypadku skomplikowanych modeli z wieloma relacjami, nieprawidłowe zastosowanie funkcji ALLCROSSFILTERED
może prowadzić do wyników, które mogą wydawać się nielogiczne. Ważne jest, aby dobrze rozumieć strukturę modelu danych i interakcje między tabelami, aby funkcja była używana właściwie.
Funkcja ALLCROSSFILTERED
w DAX pozwala na zarządzanie filtrami wynikającymi z relacji między tabelami w modelu danych. Dzięki niej możemy precyzyjnie kontrolować, jakie filtry są aktywne w kontekście naszych obliczeń, co jest szczególnie przydatne w zaawansowanych modelach danych.
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