Iteratory i przejścia kontekstowe w zapytaniach DAX

W tym samouczku omówiono przejście kontekstu i zagnieżdżone iteratory. Dowiesz się, jak ważne są te jednostki i jak mogą być dobrym źródłem optymalizacji.

Jeśli pamiętasz, przejście kontekstu następuje, gdy kontekst wiersza zmienia się w równoważny kontekst filtru. Musisz być świadomy tego, co się dzieje, gdy w iteratorach następuje zmiana kontekstu, ponieważ często może to generować powolne wyniki.

Spis treści

Zagnieżdżone iteratory kontra CALCULATE

Jeśli podczas iteracji zostanie wywołane przejście kontekstu, tworzona jest tabela materializacji. Oznacza to, że przejście kontekstu jest wywoływane za pośrednictwem formuł w języku DAX. Tabela to nieskompresowane dane, które są wysyłane do mechanizmu formuł.

Aby zademonstrować, pierwsza miara dotyczy dużej sprzedaży, która otrzymuje aktualną cenę, jeśli jest większa lub równa 500.

Iteratory i przejścia kontekstowe w zapytaniach DAX

Następna miara dotyczy średniej z dużych sprzedaży z zagnieżdżonymi iteratorami.

Iteratory i przejścia kontekstowe w zapytaniach DAX

Ostatnia miara pobiera średnią z Big Sales bez zagnieżdżonego iteratora i CallBackDataID.

Iteratory i przejścia kontekstowe w zapytaniach DAX

Uruchom miarę z zagnieżdżonym iteratorem. Przed uruchomieniem wyczyść pamięć podręczną, a następnie włącz chronometraż serwera i plan zapytań.

Iteratory i przejścia kontekstowe w zapytaniach DAX

Jak widać, wygenerował 3 skany, 2 identyfikatory CallBackDataID i 15 003 wierszy. Jest to powód do niepokoju, ponieważ istnieje tylko 101 wierszy danych wyjściowych. Stało się tak, ponieważ miara ma dwa iteratory lub funkcje X.

Oto w pełni rozwinięta forma przeprowadzonej miary:

Iteratory i przejścia kontekstowe w zapytaniach DAX

Iteruje tabelę sprzedaży faktów za pomocą . Następnie powtarza się ponownie z CallBackDataID przy użyciu . Skrócony format tej miary zawiera dorozumianą funkcję , która wywołuje zmianę kontekstu i materializuje tabelę. Dlatego pociągnął 15 003 wierszy, nawet jeśli jest tylko 101 wierszy do wydrukowania.

Uruchom inną miarę, która nie ma zagnieżdżonych iteratorów. Nadal iteruje tabelę sprzedaży faktów przy użyciu AVERAGEX , ale bieżąca cena jest poza funkcją. Odfiltrowuje produkty, których aktualna cena jest większa lub równa 500, a następnie oblicza średnią.

Iteratory i przejścia kontekstowe w zapytaniach DAX

Możesz zobaczyć, że ma tylko 2 skany, 104 wiersze i nie ma CallBackDataID. Więc jeśli użyjesz CALCULATE , możesz pozbyć się zagnieżdżonych iteratorów i CallBackDataIDs .


Funkcje języka DAX w usłudze LuckyTemplates: korzystanie z iteratorów
Jak korzystać z funkcji iteracyjnej w usłudze LuckyTemplates
Obliczenia w języku DAX — filtrowanie przejść kontekstowych

Wniosek

Istnieje wiele przyczyn wolno działającego języka DAX. Jednym z nich są zagnieżdżone iteratory, które powodują niepotrzebne przejścia kontekstowe. Te iteratory tworzą więcej wierszy niż potrzeba, co powoduje spowolnienie zapytań.

Najlepszym rozwiązaniem jest umieszczenie go w CALCULATE . Powoduje to mniej pracy dla aparatu formuł i maksymalizuje możliwości aparatu magazynu.

Leave a Comment

Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr

Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr

W tym samouczku omówimy pakiet dplyr, który umożliwia sortowanie, filtrowanie, dodawanie i zmianę nazw kolumn w języku R.

Funkcje zbierania w Microsoft Power Automate

Funkcje zbierania w Microsoft Power Automate

Odkryj różnorodne funkcje zbierania, które można wykorzystać w Power Automate. Zdobądź praktyczne informacje o funkcjach tablicowych i ich zastosowaniu.

Oceń wydajność kodu DAX w DAX Studio

Oceń wydajność kodu DAX w DAX Studio

Z tego samouczka dowiesz się, jak ocenić wydajność kodów DAX przy użyciu opcji Uruchom test porównawczy w DAX Studio.

Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Jak zapisać i załadować plik RDS w R

Jak zapisać i załadować plik RDS w R

Dowiesz się, jak zapisywać i ładować obiekty z pliku .rds w R. Ten blog będzie również omawiał sposób importowania obiektów z R do LuckyTemplates.

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Z tego samouczka języka kodowania DAX dowiesz się, jak używać funkcji GENERUJ i jak dynamicznie zmieniać tytuł miary.

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

W tym samouczku omówiono sposób korzystania z techniki wielowątkowych wizualizacji dynamicznych w celu tworzenia szczegółowych informacji na podstawie dynamicznych wizualizacji danych w raportach.

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

W tym artykule omówię kontekst filtra. Kontekst filtrowania to jeden z głównych tematów, z którym każdy użytkownik usługi LuckyTemplates powinien zapoznać się na początku.

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Chcę pokazać, jak usługa online LuckyTemplates Apps może pomóc w zarządzaniu różnymi raportami i spostrzeżeniami generowanymi z różnych źródeł.

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Dowiedz się, jak obliczyć zmiany marży zysku przy użyciu technik, takich jak rozgałęzianie miar i łączenie formuł języka DAX w usłudze LuckyTemplates.