DAX CALCULATETABLE Vs FILTER Funkcja

DAX CALCULATETABLE Vs FILTER Funkcja

Zarówno , jak i to zaawansowane narzędzia do manipulowania i analizowania danych w zapytaniu DAX, ale mają pewne kluczowe różnice, które należy zrozumieć.

W tym blogu omówimy funkcję CALCULATETABLE i jej plan zapytań w DAX Studio oraz zrozumiemy, czym różni się ona od funkcji FILTER . Pod koniec będziesz lepiej rozumieć, jak wybrać odpowiednią funkcję do swoich potrzeb związanych z analizą danych.

Aby zademonstrować, użyjemy poniższego kodu DAX.

DAX CALCULATETABLE Vs FILTER Funkcja

Po uruchomieniu tego kodu otrzymasz tabelę przedstawiającą markę i kolor.

DAX CALCULATETABLE Vs FILTER Funkcja

Na karcie Plany zapytań otrzymasz kod odpowiadający operatorowi CrossApply w Formula Engine .

DAX CALCULATETABLE Vs FILTER Funkcja

Jednocześnie możesz zobaczyć, że kod pobiera tylko kolor i markę produktu na karcie Czasy serwera .

DAX CALCULATETABLE Vs FILTER Funkcja

Spis treści

Wynik chronometrażu serwera DAX Studio dla CALCULATETABLE

Jako przykład przefiltrujmy kolor produktu, aby pokazać tylko czerwony i/lub czarny.

Możesz to zrobić za pomocą funkcji FILTRUJ. Kiedy go uruchomisz, czasy serwera pokażą, że argument FILTER nie jest stosowany do kodu xmSQL .

DAX CALCULATETABLE Vs FILTER Funkcja

Ale jeśli użyjesz funkcji CALCULATETABLE, zapytanie w zakładce Server Timings pokaże, że wyniki zostały przefiltrowane według koloru produktu.

DAX CALCULATETABLE Vs FILTER Funkcja

CALCULATETABLE Plan zapytań w DAX Studio

Przyjrzyjmy się planowi zapytań dla każdej funkcji.

CALCULATETABLE znajduje się w pierwszym wierszu planu zapytań logicznych , ponieważ jest to funkcja najwyższego poziomu w kodzie i dlatego nie zależy od żadnych wymagań.

DAX CALCULATETABLE Vs FILTER Funkcja

Kiedy czytasz plan zapytań funkcji CALCULATETABLE, nie zaczynasz od pierwszego argumentu. Najpierw musisz zrozumieć używany kontekst filtru. Przejdźmy więc do linii 5.

Widać, że operator VertiPaq wymaga kolumny koloru produktu ze względu na zastosowany filtr. Następnie skanuje tę kolumnę i używa kombinacji filtra Not IsEmpty , aby sprawdzić kolor produktu w każdym wierszu.

Po przygotowaniu kontekstu filtru wykonywany jest argument

Z perspektywy czasu, jeśli użyjesz funkcji FILTER, zobaczysz inny plan zapytań, więc argument CROSSJOIN jest wykonywany przed zidentyfikowaniem kontekstu filtru.

DAX CALCULATETABLE Vs FILTER Funkcja

Wadą tego podejścia jest to, że nie przekazuje warunku filtru do aparatu pamięci masowej. Nie będziesz mógł użyć klauzuli WHERE wewnątrz xmSQL, co spowoduje duże obciążenie dla silnika formuł.

A kiedy pracujesz z wieloma tabelami, kombinacja filtrów funkcji CROSSJOIN będzie ogromna. Spowalnia to działanie kodu DAX. Dlatego w większości przypadków zaleca się użycie funkcji CALCULATETABLE.

Zamiast więc wykonywać wszystkie obliczenia w silniku formuł, możesz wstrzyknąć warunek filtru do klasy WHERE kodu XMSQL.

Przejście kontekstu dla podobnych funkcji języka DAX

Czasy serwera

Ta koncepcja ma również zastosowanie do funkcji OBLICZ. Użyjmy poniższego kodu DAX jako przykładu.

DAX CALCULATETABLE Vs FILTER Funkcja

Miara automatycznie ma wokół siebie funkcję CALCULATE.

Po uruchomieniu tego kodu otrzymasz tabelę przedstawiającą łączną kwotę sprzedaży dla każdego koloru.

DAX CALCULATETABLE Vs FILTER Funkcja

Na karcie Czasy serwera widać, że kod wykonuje dwa zapytania. Pierwsze zapytanie polega na obliczeniu sumy kwoty Sales z tabeli Sales w odniesieniu do tabeli Products.

DAX CALCULATETABLE Vs FILTER Funkcja

Z drugiej strony drugie zapytanie ponownie pobiera kolor produktu z tabeli Produkty. Odpowiada funkcji w kodzie języka DAX.

DAX CALCULATETABLE Vs FILTER Funkcja

Formuła Engine umieszcza pamięci podręczne danych dwóch zapytań obok siebie. Rozpoczyna się od pobrania wartości z drugiej pamięci podręcznej danych, a następnie przeprowadza wyszukiwanie w pierwszej pamięci podręcznej danych.

Plan zapytań

Na karcie Plan zapytań logiczny plan zapytań skanuje kolor produktu z powodu argumentu .

Następnie VertiPaq sumuje całkowitą kwotę sprzedaży w zależności od koloru produktu. Wykonuje przejście kontekstu, które konwertuje wartość koloru produktu na równoważny kontekst filtra.

DAX CALCULATETABLE Vs FILTER Funkcja

Filtr utworzony przez przejście kontekstu jest tłumaczony na właściwość DependOnCols w planie zapytań. Gdy VertiPaq przeskanuje kolumny wymagane do obliczenia całkowitej sprzedaży, mnoży sprzedaną ilość przez cenę netto.

Całkowita sprzedaż jest następnie zwracana jako wynik w postaci danych typu waluta. I wreszcie, ADDCOLUMNS zwraca tabelę z dwiema kolumnami zawierającymi wartość Kolor i Łączna sprzedaż.

Wniosek

Plan kwerend może mieć znaczący wpływ na wydajność kwerendy, ponieważ różne plany kwerend mogą mieć różne poziomy wydajności.

W przypadku korzystania z funkcji CALCULATETABLE i FILTER w zapytaniu języka DAX plan zapytań może się różnić w zależności od konkretnego scenariusza i różnych czynników, takich jak używane wyrażenie formuły i możliwości aparatu zapytań.

Ogólnie rzecz biorąc, dobrym pomysłem jest przetestowanie i porównanie wydajności różnych planów zapytań w celu określenia najbardziej wydajnego podejścia dla danego scenariusza.

Wszystkiego najlepszego,


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.

Pomysły na materializację pamięci podręcznych danych w DAX Studio

Pomysły na materializację pamięci podręcznych danych w DAX Studio

W tym samouczku omówiono idee materializacji pamięci podręcznych danych oraz ich wpływ na wydajność języka DAX w dostarczaniu wyników.

Raportowanie biznesowe przy użyciu usługi LuckyTemplates

Raportowanie biznesowe przy użyciu usługi LuckyTemplates

Jeśli do tej pory nadal korzystasz z programu Excel, jest to najlepszy moment, aby zacząć korzystać z usługi LuckyTemplates na potrzeby raportowania biznesowego.

Co to jest brama LuckyTemplates? Wszystko co musisz wiedzieć

Co to jest brama LuckyTemplates? Wszystko co musisz wiedzieć

Co to jest brama LuckyTemplates? Wszystko co musisz wiedzieć