Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Chcę się dzisiaj skupić na czymś, co nazywam ukrytą pułapką DAX. Jeśli spotkasz się z taką sytuacją, poczujesz się, jakbyś tracił rozum, ponieważ Twój DAX będzie wyglądał dobrze, ale nie będzie działał. Pokażę Ci, kiedy to nastąpi i co możesz z tym zrobić, a przy okazji opowiem też o kilku ogólnych najlepszych praktykach optymalizacji języka DAX. Możesz obejrzeć pełny film z tego samouczka na dole tego bloga.

Najpierw przyjrzyjmy się temu, z czym tutaj pracujemy. Mamy około 10 lat danych z Internetowej Bazy Danych Filmowych. Tabele faktów są dość proste i mamy dane ratingowe, dane budżetowe i dane brutto.

Dziś przyjrzymy się światowym dochodom.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Mamy też nasz rozszerzony terminarz. Będzie to analiza czasowa oparta na tabeli dat i tabeli faktów.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Spis treści

Całkowity światowy brutto rocznie

Chcemy zrobić coś naprawdę powszechnego i prostego. Nasz Total Worldwide Gross to po prostu bardzo prosta zbiorcza miara sumy, którą chcemy przeliczyć na procent.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Aby to zrobić, bierzemy licznik ( miara Total Worldwide Gross ) i mianownik ( miara Total Worldwide Gross , ale usunęliśmy kontekst z filtra roku).

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Użyłem ponieważ myślę, że jest bardziej intuicyjna podczas czytania kodu, ale jeśli wolisz , to działa równie dobrze. Po prostu dzielimy licznik przez mianownik, aby otrzymać wynik.

Jeśli weźmiemy wynikową miarę i upuścimy ją do naszej tabeli, zobaczysz, że robi dokładnie to, czego oczekujemy. Dostajemy 100% na dole i otrzymujemy lata przeliczone na ich indywidualne wartości procentowe. Jak dotąd jest dobrze i nie napotkaliśmy jeszcze żadnych problemów.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Całkowity światowy brutto na kwartał

Przyjrzyjmy się podobnej sytuacji, w której idziemy przez kwartał. Ta miara może być przydatna, ponieważ istnieją hipotezy, że dochody z letniego sezonu filmowego różnią się od początku roku i pod koniec roku prowadzącego do sezonu oscarowego.

Ponownie mamy dokładnie taką samą miarę z funkcją REMOVEFILTERS na numerach kwartałów zamiast roku.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

A jeśli umieścimy w tabeli miarę, którą właśnie wprowadziliśmy, zrobi ona dokładnie to, czego oczekujemy.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Całkowity światowy brutto miesięcznie i rocznie

Przyjrzyjmy się trzeciemu przypadkowi, który może być bardzo powszechny, gdzie chcemy patrzeć według miesiąca i roku.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

I znowu użyjemy tej samej miary, co poprzednio. Ale tym razem usuniemy filtr dotyczący miesiąca i roku.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Wrzućmy to do naszego stolika. Nagle to nie działa.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Możemy powiedzieć, co w nim nie działa. Wiemy, że miara Worldwide Gross działa, więc oznacza to, że licznik jest w porządku, ale mianownik nie. W każdym z poprzednich przypadków funkcja REMOVEFILTERS prawidłowo usunęła filtr, ale tutaj wyraźnie tego nie zrobiła.

W rzeczywistości możemy to przetestować, zmieniając to, co zwróciliśmy tutaj w wyniku.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Zamiast Result użyjmy Mianownika. Pamiętaj, że zostanie to sformatowane w procentach, więc będzie wyglądać trochę zabawnie.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

To, co powinniśmy otrzymać za mianownik, to ta sama liczba w każdym rzędzie, ale tak nie jest.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Możemy powiedzieć, że nie usuwa filtra miesiąca i roku, i myślimy, że dzieje się tak, ponieważ miesiąc i rok są w tekście.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Ale poprzedni dla kwartału był również wyrażony w tekście, więc nie tylko dlatego, że jest to tekst. Trzeba to tylko uporządkować. Gdy upuścisz pole bez sortowania, zostanie ono posortowane alfabetycznie.

W rozszerzonej tabeli dat przyjrzyjmy się temu polu o nazwie Month & Year . Jeśli spojrzymy na to w kolumnie Sortuj według , zobaczymy coś ciekawego.

Zobaczymy, że ta kolumna jest posortowana według wartości liczbowej o nazwie MonthnYear. Kiedy sortujesz jedną kolumnę według drugiej, ta kolumna sortowania faktycznie staje się częścią kontekstu filtru. To właśnie odrzuca te obliczenia.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Wróćmy do naszej miary i usuńmy kontekst miesiąca i roku, których używamy jako sortowania.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Otrzymujemy teraz dokładnie to, co powinniśmy, czyli miesiąc i rok obliczone jako odpowiedni procent.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Podczas usuwania kontekstu filtru posortowanie zajmie dwa pola . Możesz zapytać, dlaczego zamiast robić tutaj dwa pola, nie możemy po prostu usunąć filtrów z całej tabeli dat?

Odpowiedź brzmi: możemy, i to zadziała w przypadku trzech przykładów, o których mówiliśmy, ponieważ każda z tych kolumn jest częścią naszej tabeli dat. Usunięcie całego kontekstu filtra z tej tabeli zadziała we wszystkich trzech przypadkach, ale w rzeczywistości jest to zły pomysł.

Zgodnie z ogólną zasadą optymalizacji języka DAX należy usunąć tyle kontekstu filtru, ile potrzeba, aby uzyskać pożądany wynik.

W większości przypadków nie będziesz przedstawiać tego w formie tabelarycznej. Przedstawisz to jako macierz i będziesz potrzebować bardziej złożonej miary, ponieważ masz dwie różne granulacje w tej samej kolumnie. Ta miara wygląda na skomplikowaną, ale tak naprawdę nie jest.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

To tylko rozszerzenie tego, co już zrobiliśmy. Pierwsza część tego obliczenia optymalizacji języka DAX pokazuje mianowniki dla różnych stopni szczegółowości. Usuwamy kontekst filtra na miesiąc, rok i całą tabelę.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

W drugiej części obliczeń użyliśmy SWITCH TRUE. W przypadku tej funkcji musisz przejść od najbardziej szczegółowego do najmniej szczegółowego. Miesiąc to nasz najwęższy i najbardziej szczegółowy zakres, więc od tego zaczynamy. Będziemy musieli usunąć kontekst, używając tych dwóch pól, które zidentyfikowaliśmy.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Dla zakresu roku musimy usunąć kontekst z roku i usunąć kontekst z całej tabeli.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Przyjrzyjmy się, co się stanie, jeśli weźmiemy i usuniemy kontekst z całej tabeli dat . We wszystkich trzech przypadkach użyjemy innej miary, która usunie kontekst z całej tabeli dat.

Optymalizacja języka DAX: gdzie znaleźć ukrytą pułapkę języka DAX

Zobaczymy, że środkiem jest nadmierne usuwanie kontekstu. Zamiast obliczać udział każdego miesiąca w tym roku, oblicza udział tego miesiąca w całym zbiorze danych. To nie jest to, czego chcemy, ponieważ usunięcie kontekstu z całego stołu jest tak naprawdę tępym narzędziem, gdy potrzebny jest skalpel.

Wniosek

Istnieje wiele przypadków, w których masz macierz i musisz dokładnie kontrolować, jaki kontekst usuwasz. Samo usunięcie kontekstu z całej tabeli spowoduje tego rodzaju problemy.

Mam nadzieję, że kiedy taka sytuacja się pojawi (co w pewnym momencie niezmiennie nastąpi), rozpoznasz w niej ukrytą pułapkę, o której mówiliśmy w tym poście dotyczącym optymalizacji języka DAX, i będziesz w stanie jej uniknąć bez takiej samej frustracji że spowodowało to, kiedy zobaczyłem to po raz pierwszy i nie mogłem zrozumieć, dlaczego mój DAX nie działa poprawnie.

Jeśli podoba Ci się temat optymalizacji języka DAX omówiony w tym samouczku, zasubskrybuj kanał telewizyjny LuckyTemplates . Cały czas publikujemy ogromną ilość treści ode mnie i wielu twórców treści, z których wszyscy poświęcają się ulepszaniu sposobu, w jaki korzystasz z usługi LuckyTemplates i platformy Power Platform.

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.