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

Przyjrzyjmy się jeszcze raz problemowi omówionemu w tym samouczku , który dynamicznie porównywał pierwsze N ​​dni roboczych każdego miesiąca. Ten problem powstał na podstawie zapytania członka LuckyTemplates na naszym forum, gdzie chciał dynamicznie spojrzeć i porównać pierwsze 5, 10, 15 i 20 rozliczonych dni (nie weekendy i święta) dla danego miesiąca z poprzedni miesiąc.

Zamiast korzystać z Power Query, opracujemy rozwiązanie języka kodowania DAX. Możesz obejrzeć pełny film z tego samouczka na dole tego bloga.

W pierwszym filmie wymyśliłem rozwiązanie zapytania zasilania, jak rozwiązać ten problem. Ale wtedy jeden z naszych ekspertów LuckyTemplates, Antriksh Sharma, wpadł na genialnie skuteczny środek, który również warto poznać głębiej. Omówimy niektóre techniki, których użył do opracowania miary, co zapewni dodatkowe narzędzia w zestawie narzędzi języka DAX.

Z pewnością zrobiło to dla mnie i dla niektórych innych ekspertów, którzy przyjrzeli się temu. Podobne porównanie porównywalnych dni roboczych w różnych miesiącach jest ogólnie cennym wzorcem, który można wykorzystać w wielu sytuacjach.

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

Zanurzmy się w Power Query i przyjrzyjmy się, co zrobił tutaj Antriksh. Mamy Miesiąc i rok , Całkowita sprzedaż , a na koniec Całkowita sprzedaż dla N dni roboczych , które wybraliśmy za pomocą zapytania potęgowego na podstawie opracowanego przez nas parametru „co, jeśli”.

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

Antriksh przyjął zupełnie inne podejście, w którym zastosował szokująco krótki środek, aby rozwiązać cały ten problem. Pierwszą rzeczą, na którą zwróciłem uwagę, było użycie polecenia .

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

Jest to funkcja języka DAX, której nie używam zbyt często, ale idealnie pasuje do tego typu problemów. Jeśli spojrzymy na SQL BI DAX Guide, jest napisane, że funkcja GENERATE jest funkcją tabelaryczną, która używa jako danych wejściowych dwóch różnych tabel, a następnie wykonuje odpowiednik polecenia SQL CROSS APPLY.

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

Bierze więc tabelę podstawową (Tabela1) i iteruje na niej, a następnie bierze drugie wyrażenie tabelowe i ocenia je dla każdego wiersza w pierwszej tabeli, a następnie wraca do tabeli jako danych wyjściowych.

Weźmy miarę Antriksha i wrzućmy ją do stołu. Widzimy, że daje dokładnie takie same wyniki, jak rozwiązanie Power Query, które zrobiliśmy ostatnim razem. Więc to dobrze i dość dobrze potwierdza oba środki.

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

Rozłóżmy tę miarę. Pierwszym zastosowanym filtrem jest Dates[IsBusinessDay] = TRUE. Spowoduje to usunięcie wszystkich dat niebędących weekendami i świętami na podstawie pola IsBusinessDay rozszerzonej tabeli dat.

Mówimy o tym znacznie więcej w pierwszym samouczku , w którym omówiliśmy również, jak powiązać to z naszym świątecznym stołem.

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

Interesująca część tego naprawdę dotyczy dwóch danych wejściowych tabeli. Pierwsza tabela to tylko jednokolumnowa tabela pola Month & Year w tabeli Date.

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

Ale drugie wejście tabeli to miejsce, w którym dzieją się interesujące rzeczy. Antriksh użył , a następnie użył naszego parametru dynamicznego jako liczby wierszy w TOPN.

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

Miara Total Sales jest dołączana do drugiej tabeli, a następnie stosowana do pierwszej tabeli.

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

Spis treści

Zrozumienie złożonej miary przy użyciu języka kodowania DAX

Jednym z najłatwiejszych sposobów sprawdzenia, co robi taka złożona miara, jest przejście do Edytora tabelarycznego . Możemy przyjrzeć się temu wyrażeniu i dowiedzieć się, co robi to wyrażenie TOPN jako pierwsze.

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

Skopiujmy część TOPN i utwórzmy nowe zapytanie DAX . Pamiętaj, że zapytania DAX zaczynają się od EVALUATE.

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

Kiedy wkleimy część TOPN, zobaczymy, że jest to pobieranie pierwszych 5 dat z tabeli zamówień sprzedaży. W TOPN znajduje się tabela, która składa się z wartości wszystkich dat zamówień w tabeli sprzedaży.

Ta funkcja TOPN pobiera wartość parametru „co, jeśli” (który w tym przypadku wynosi 5) i stosuje ją do pola daty zamówienia sprzedaży. Następnie pobiera pierwsze 5 dat w kontekście filtra w kolejności rosnącej na podstawie tego pola.

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

Biorąc pod uwagę, że nie ma dodatkowego kontekstu filtra, po prostu pobiera się te pierwsze 5 dat z całej tabeli.

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

Kolumna @Sales to po prostu dodanie całkowitej sprzedaży w odpowiednim kontekście filtra do tabeli TOPN.

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

Jak dotąd mamy pierwszą tabelę Miesiąca i Roku, drugą tabelę TOPN pierwszych N dat z tabeli sprzedaży, a następnie łączną sprzedaż z nią związaną.

Korzystanie z tabeli GENERATE w języku kodowania DAX

Przyjrzyjmy się, co robi ta tabela GENERATE. Wskoczymy z powrotem do Edytora tabelarycznego i utworzymy nowe zapytanie języka DAX.

Zaczniemy, tak jak zawsze, od EVALUATE, wkleimy część kodu GENERATE i klikniemy 5.

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

Widzimy, że dla każdego wiersza pierwszej tabeli następuje iteracja i łączenie z 5 wierszami z tabeli TOPN ocenianej w kontekście funkcji @Sales.

Zajęło to pierwsze 5 dni roboczych w kwietniu, pierwsze 5 dni roboczych w maju, pierwsze 5 dni roboczych w czerwcu i tak dalej, aż dojdzie do końca pierwszego stołu.

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

To jest dokładnie to, czego potrzebujemy, a teraz dodanie tych wartości staje się stosunkowo prostą sprawą. Mamy wynik (który jest zmienną tabelaryczną wyników GENERATE), a następnie musimy zsumować funkcję @Sales.

W kontekście podsumowujemy teraz pierwsze 5 dni roboczych w kwietniu, pierwsze 5 dni roboczych w maju i tak dalej, aż osiągniemy łączną kwotę 23 737 430 USD, w którym to przypadku działanie nie ma kontekstu miesiąca i roku .

To podsumowuje całą kolumnę @Sales i daje nam dokładnie taką samą sumę, jaką mieliśmy w naszym rozwiązaniu Power Query.

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

Możesz zobaczyć, że jeśli zmienimy fragmentator na 10, uzyskamy dynamicznie te same wyniki z językiem kodowania DAX, co w Power Query.

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

Mamy również wykres słupkowy na dole, który dynamicznie dostosowuje się, aby odzwierciedlić wprowadzone przez nas zmiany.

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

Dynamicznie dostosuj tytuł miary

Jest jeszcze jedna dodatkowa sztuczka, którą chciałem ci pokazać. Możesz utworzyć dynamiczną korektę swojego parametru warunkowego i dynamicznie powiązać ją z tytułem miary.

Na przykład, jeśli zmienimy fragmentator u góry na 15, dynamicznie zmieni on nazwę miary na dole na Total Sales for the First 15 Business Days of Each Month .

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

W języku DAX można to łatwo zrobić za pomocą formatowania warunkowego . Zasadniczo bierzemy tylko trzy struny. Pierwsza to Total Sales for First , a następnie połącz ją z wartością, którą uzyskujemy z parametru what-if , a następnie powiąż ją z resztą tytułu.

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

Następnie przechodzimy do wizualizacji, przechodzimy do warunkowego formatowania tytułu i klikamy fx .

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

Sformatujemy według wartości pola i wybierzemy dynamiczną miarę tytułu. Spowoduje to zmianę wyboru parametru what-if.

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

Wniosek

Mamy teraz kompletne rozwiązanie wykorzystujące język kodowania DAX. Omówiliśmy naprawdę kreatywny i skuteczny sposób, aby to zrobić za pomocą funkcji GENERUJ. Chcę podziękować Antrikshowi za podzielenie się z nami swoją genialną wiedzą na temat języka DAX. Wiele się nauczyłem, przeglądając jego rozwiązanie DAX i mam nadzieję, że Ty również.


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ć