Czym jest self w Pythonie: przykłady z życia wzięte
Czym jest self w Pythonie: przykłady z życia wzięte
W tym poście chciałbym porozmawiać o ostatniej wskazówce dotyczącej usługi LuckyTemplates, którą wymyśliłem dla członka forum . Pytanie dotyczyło przydatnego wzorca, jeśli chodzi o porównanie pierwszych N dni roboczych lub pierwszych N rozliczonych dni danego miesiąca w porównaniu z tym samym okresem w poprzednim miesiącu. Możesz obejrzeć pełny film z tego samouczka na dole tego bloga.
TJ Henneman chciał porównać pierwszych 5 rozliczonych dni bieżącego miesiąca z pierwszymi 5 rozliczonymi dniami poprzedniego miesiąca, a następnie w dniu 10, dniu 15 i dniu 20. Zauważ, że chce spojrzeć tylko na rozliczone dni, więc nie obejmuje to weekendów i świąt. Możesz sprawdzić jego post .
Myślę, że można tu znaleźć naprawdę interesujące rozwiązanie do zapytań o moc . Pracowałem również z ciekawym rozwiązaniem DAX nad tym problemem. Omówię to drugie w innym samouczku.
Chcę również przeprowadzić Cię przez ostatnią technikę raportowania, której użyłem w LuckyTemplates Challenge #16. Użyłem przewijanego wskaźnika KPI , który będzie działał naprawdę dobrze w przypadku tego konkretnego problemu.
Ale w przypadku tej wskazówki dotyczącej usługi LuckyTemplates omówię rozwiązanie dotyczące zapytań dotyczących zasilania. Przejdźmy do usługi LuckyTemplates i przyjrzyjmy się naszym danym. W tym przypadku przeprowadziłem symulację danych za pomocą praktycznego narzędzia do zbioru danych, które stworzyliśmy w LuckyTemplates, z którego można korzystać bezpłatnie. Jest to świetne rozwiązanie do tworzenia podstawowego zestawu danych schematu gwiazdy i testowania rozwiązań.
Spis treści
Nasz model danych
Nasz model danych wykorzystuje rozszerzoną tabelę dat oraz serię tabel wymiarów. Mamy również tabelę Sales z trzema latami częściowymi danymi w pierwszym roku, pełnymi danymi w drugim roku i częściowymi danymi w trzecim roku. Na koniec mamy również tabelę Miary .
Ten zestaw danych również nieco zmodyfikowałem. Wprowadziłem tabelę świąt i połączyłem ją z tabelą rozszerzonych dat , aby mogła prawidłowo obliczyć dni wolne, które usuniemy w tej analizie. Jeśli nie wiesz, jak to zrobić, zapoznaj się z tym samouczkiem .
Następnie odfiltrowałem pierwszy częściowy miesiąc w zbiorze danych, ponieważ ten miesiąc miał tylko kilka dni danych i nie miał dni roboczych, których potrzebujemy. Pamiętaj, że zaczynamy od pierwszego pełnego miesiąca; ale poza tym będzie to twój standardowy zestaw danych. Przejdźmy więc do Power Query i zacznijmy pracować nad tą wskazówką dotyczącą usługi LuckyTemplates.
Jeśli spojrzymy na nasze dane, zobaczysz, że mamy różne zamówienia w danym dniu. Celem jest policzenie wszystkiego, co zaczyna się od 1 kwietnia jako naszego pierwszego dnia roboczego, 2 kwietnia jako drugiego dnia roboczego, 3 kwietnia jako trzeciego dnia roboczego i tak dalej. Będziemy to ponumerować od 1 do N dni roboczych na każdy miesiąc, uwzględniając weekendy i święta.
Tworzenie zduplikowanej tabeli
Aby rozpocząć, musimy utworzyć duplikat tej tabeli, abyśmy mogli agregować do Total Sales i przenieść ją na indywidualny poziom obserwacji. Tę zduplikowaną tabelę nazwiemy Sales Aggregated .
Być może zauważyłeś, że zduplikowaliśmy tabelę Sales , zamiast tylko się do niej odwoływać. W tym przypadku połączymy tę tabelę z oryginalną tabelą Sales. Jeśli się do niego odniesiemy, spowoduje to problemy, gdy dołączymy do tych dwóch.
Pierwszą rzeczą do zrobienia jest użycie Group By w kolumnie OrderDate . Kliknij przycisk Zaawansowane , ponieważ da nam to pełny obraz tego, co tutaj robimy. Umieścimy Total Day Sales jako naszą nową nazwę kolumny i będzie to suma naszej sumy wiersza.
Teraz mamy każdą datę (pierwsza kolumna) i całkowitą sprzedaż w tym dniu (druga kolumna).
Scalanie tabeli dat
Następnym krokiem w tej wskazówce dotyczącej usługi LuckyTemplates jest połączenie tego z naszą tabelą Daty, aby dowiedzieć się, które z tych dni są dniami roboczymi, a które nie. Możemy ponownie pogrupować według , podzielić je i odpowiednio ponumerować.
Połączymy naszą tabelę Dates i połączymy OrderDate z Date . W dolnej części widzimy, że zaznaczenie pasuje do każdego wiersza tabeli, tak jak powinno.
Pole, które nas najbardziej interesuje, to IsBusinessDay .
To jest podstawowe pole, według którego będziemy grupować, a następnie użyjemy pól Month & Year i MonthnYear .
Musimy również sprawdzić DayofWeekName , aby upewnić się, że odfiltrowujemy odpowiednie dni.
Po kliknięciu przycisku OK da nam dokładnie to, czego potrzebujemy.
Musimy również upewnić się, że nasza data zamówienia jest posortowana rosnąco.
Następnie wracamy i tworzymy drugi Group By .
Tym razem klikniemy przycisk Zaawansowane , pogrupujemy według Miesiąc i rok , a następnie dodamy drugie grupowanie.
Druga grupa dotyczy IsBusinessDay , więc możemy ponumerować te, w których dni robocze są prawdziwe.
Następnie utworzymy funkcję AllRows , która nie będzie agregować i będziemy mogli wrócić do pierwotnego poziomu szczegółowości.
To powinno dać nam zagnieżdżone tabele , w których możemy zobaczyć tabelę dla prawdy i tabelę dla fałszu dla każdego miesiąca.
Tworzenie niestandardowej kolumny
Następnie musimy utworzyć niestandardową kolumnę , aby dodać liczbę potrzebną dla dni roboczych.
Użyjemy funkcji o nazwie Table.AddIndexColumn , która będzie działać na tabeli AllRows i nazwiemy ją Day Index . Chcemy, aby indeks zaczynał się od 1 i zwiększał o 1 z każdym nowym dniem roboczym.
Następnie możemy usunąć pierwsze trzy kolumny i rozwinąć naszą czwartą niestandardową kolumnę.
Jeśli spojrzymy na wynik, otrzymamy indeks dnia, który zlicza dni robocze (prawda), a następnie dni, które są weekendami i świętami w każdym miesiącu (fałsz). Następnie musimy sprawdzić, czy są one w odpowiednim typie pola.
Wróćmy do naszego stołu Sales. Połączymy właśnie utworzoną tabelę Aggregate z naszą tabelą Sales.
Połączymy te w OrderDate . Na dole widać, że pasuje do wszystkich wierszy z pierwszej tabeli.
Po rozwinięciu kolumny Sales Agg wybierz nowe pola, które właśnie dodaliśmy: kolumny Month & Year , DayOfWeekName , MonthnYear , IsBusinessDay i DayIndex .
Oczyśćmy również nasze dane, zanim klikniemy Zamknij i zastosuj . Przenieśmy tabelę Sales Agg do naszej sekcji Przygotowanie danych , a następnie wyładuj tę tabelę, ponieważ nie będziemy jej potrzebować w modelu danych. Następnie kliknij Zamknij i zastosuj .
Nasza praca przygotowawcza do zapytań o zasilanie została zakończona.
Tworzenie parametru warunkowego
Pamiętaj, że w pierwotnym zadaniu chcemy zmienić liczbę dni, na które patrzymy, od 5 do 10 i od 15 do 20. Myślę, że najlepszym sposobem na to jest użycie nowego parametru what- if .
Nazwijmy parametr „co, jeśli” First N Business Days , a jego typem danych będzie liczba całkowita. Wartość minimalna jest ustawiona na przyrost 1, a maksymalna na 20. Następnie ustawimy wartość domyślną na 5, która jest pierwszą wartością, której chciał użytkownik.
Mamy teraz fragmentator, który automatycznie tworzy miarę zbiorów w celu przechwycenia wartości fragmentatora.
Stwórzmy tabelę z naszymi wynikami. Umieśćmy nasz wymiar Month & Year w kanwie, a następnie posortujmy go według Month & Year .
Po prawidłowym posortowaniu tego pola możemy po prostu usunąć miarę Total Sales i rozwinąć ją.
Tworzenie miary dla liczby dni roboczych
Musimy utworzyć jeszcze jedną miarę, która sprawdza wartość parametru suwaka i oblicza tylko liczbę dni roboczych.
Nazwiemy tę nową miarę Total Sales N Bus Days . Zaczniemy od funkcji , ponieważ zdecydowanie zmieniamy kontekst, oraz od naszej miary Total Sales. Zamierzamy to przefiltrować za pomocą z naszej tabeli Sales.
Kolejnym krokiem jest napisanie warunków, które chcemy uwzględnić dla slidera. Mamy nasz indeks dnia sprzedaży, który utworzyliśmy w dodatku Power Query, i chcemy, aby był on mniejszy lub równy wartości pierwszych N dni roboczych, która jest wartością zebraną przez krajalnicę.
Na przykład, jeśli suwak jest ustawiony na 5, chcemy wszystkie dni z tabeli Sprzedaż, w których indeks dnia jest mniejszy lub równy 5.
A potem chcemy wyjąć dni wolne od pracy. Odwołamy się do tabeli Date i użyjemy pola IsBusinessDay. Przyjrzymy się tylko wynikowi, który jest PRAWDZIWY.
Na koniec przywróć kontekst miesiąca i roku i zamknij miarę. W tym momencie powinniśmy już iść.
Wrzućmy nową miarę do naszej tabeli.
Możemy przenieść suwak suwaka do znaku 10-dniowego, a tabela będzie dynamicznie obliczać po 10-dniowym znaku.
Wniosek
W tej wskazówce dotyczącej usługi LuckyTemplates omówiliśmy sposób dynamicznego porównywania podobnych wyników przy użyciu rozwiązania Power Query. Możemy umieścić to na wykresie słupkowym lub wykresie liniowym.
W niektórych z nadchodzących samouczków przyjrzymy się rozwiązaniu DAX i zaimplementujemy wizualizację przewijania KPI.
Jeśli podobały Ci się treści omówione w tym samouczku, nie zapomnij zasubskrybować kanału telewizyjnego LuckyTemplates .
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ć