Czym jest self w Pythonie: przykłady z życia wzięte
Czym jest self w Pythonie: przykłady z życia wzięte
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.
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”.
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 .
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.
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.
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.
Interesująca część tego naprawdę dotyczy dwóch danych wejściowych tabeli. Pierwsza tabela to tylko jednokolumnowa tabela pola Month & Year w tabeli Date.
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.
Miara Total Sales jest dołączana do drugiej tabeli, a następnie stosowana do pierwszej tabeli.
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.
Skopiujmy część TOPN i utwórzmy nowe zapytanie DAX . Pamiętaj, że zapytania DAX zaczynają się od EVALUATE.
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.
Biorąc pod uwagę, że nie ma dodatkowego kontekstu filtra, po prostu pobiera się te pierwsze 5 dat z całej tabeli.
Kolumna @Sales to po prostu dodanie całkowitej sprzedaży w odpowiednim kontekście filtra do tabeli TOPN.
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.
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.
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.
Możesz zobaczyć, że jeśli zmienimy fragmentator na 10, uzyskamy dynamicznie te same wyniki z językiem kodowania DAX, co w Power Query.
Mamy również wykres słupkowy na dole, który dynamicznie dostosowuje się, aby odzwierciedlić wprowadzone przez nas zmiany.
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 .
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.
Następnie przechodzimy do wizualizacji, przechodzimy do warunkowego formatowania tytułu i klikamy fx .
Sformatujemy według wartości pola i wybierzemy dynamiczną miarę tytułu. Spowoduje to zmianę wyboru parametru what-if.
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
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.
Z tego samouczka języka kodowania DAX dowiesz się, jak używać funkcji GENERUJ i jak dynamicznie zmieniać tytuł miary.
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.
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.
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ł.
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.
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.
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ć