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.
W tym wpisie na blogu zajmiemy się niektórymi kłopotliwymi problemami z inteligencją czasową, w szczególności problemami powodowanymi przez szczegółowość tygodnia i problemami, które mogą być spowodowane nieregularną liczbą tygodni w roku. Użyjemy przesunięć, aby uzyskać dokładną analizę czasu w języku DAX.
Mamy dziś dla Was ciekawy scenariusz. Pojawiło się to kilka razy ostatnio na forum LuckyTemplates. Ludzie chcieli zrobić wizualizację (którą może być wykres liniowy lub słupkowy) i zmieniać ją dynamicznie w dniu rozpoczęcia. Możesz obejrzeć pełny film z tego samouczka na dole tego bloga.
W tym przypadku wykorzystaliśmy ten sam zestaw danych, który opracowaliśmy dla średniej ceny spot za baryłkę ropy . Zamiast zawsze zaczynać od początku w styczniu, chcieliśmy mieć możliwość kliknięcia elementu graficznego, zmiany go na inną datę rozpoczęcia, ale zawsze pokazywania danych z jednego roku.
Spis treści
Przykładowe scenariusze analizy czasowej w języku DAX
Istnieje wiele powodów, dla których możesz chcieć wykonać tę technikę. Możesz tego użyć, jeśli masz dane, które są stale korygowane pod względem sposobu ich obliczania. Możesz chcieć pokazać tylko dane z okresu korekty do przodu.
Innym powodem użycia tego jest to, że chcesz to zwizualizować w animowany sposób. Zasadniczo pobierze to twoje dane i wyświetli je dynamicznie po kliknięciu dostępu do gry.
Na tej wizualizacji możemy zmieniać datę początkową miesiąc po miesiącu, aby pokazać, jak zmienia się ona w okresie 12 miesięcy. To interesująca i przydatna wizualizacja dla różnych przypadków biznesowych, ale teoretycznie przedstawia również szereg kluczowych zagadnień związanych z językiem DAX i modelowaniem danych.
Przejdźmy do usługi LuckyTemplates i przyjrzyjmy się najpierw naszemu modelowi danych. Jest to naprawdę prosty model danych z rozszerzoną tabelą dat i tabelą cen spot powiązaną z datami.
Używanie przesunięć dla analizy czasowej w języku DAX
Jedną z rzeczy, nad którymi będziemy pracować, są przesunięcia . Przesunięcia w rozszerzonej tabeli dat są obliczane dynamicznie. Za każdym razem, gdy raport jest odświeżany lub otwierany, przechodzi przez kod M. Na przykład w przesunięciu miesięcznym przypisuje bieżący miesiąc wartością 0, poprzedni miesiąc wartością -1, a dwa miesiące temu wartość -2. Patrząc w przyszłość, przypisuje następny miesiąc +1, a przez dwa miesiące w przyszłości +2.
Jest to prosta koncepcja, ale niezwykle wydajna, gdy masz do czynienia z analizą czasową w języku DAX i pracujesz z miesiącami , kwartałami i tygodniami . Jeśli nie używasz przesunięcia, czasami powoduje to znaczną złożoność w twoich obliczeniach.
Używanie przesunięć oznacza używanie ciągłej serii liczb, gdzie cofanie się o miesiąc to zawsze -1, a cofanie się o miesiąc do przodu to zawsze +1, niezależnie od tego, w którym miejscu roku się znajdujesz.
Wdrażanie strategii Rubber Duck dla analizy czasowej w języku DAX
W przeszłości mówiłem o gumowym kaczuszku , czyli wypowiadaniu na głos swojej strategii, zanim zaczniesz pisać swój DAX.
Głośno myślę o tym, jak sobie z tym poradzę w kontekście miesięcznym, używając analizy czasowej w języku DAX. Zacząłbym coś na podstawie wybranego roku i miesiąca i wybrałbym te z rozłączonej tabeli, ponieważ jeśli się nad tym zastanowić, co drugi wybór będzie obejmował lata przecinające się (z wyjątkiem stycznia).
Powiedzmy, że chcemy 12 miesięcy począwszy od marca, skończymy na co najmniej dwóch miesiącach w kolejnym roku. Jeśli użyjemy połączonego fragmentatora, możemy filtrować tylko dla tego roku i nie będziemy mogli filtrować do następnego roku.
Zbieranie przesunięć od daty rozpoczęcia
Zróbmy to z połączoną tabelą dla miesiąca i roku. Najpierw musimy zebrać pierwsze przesunięcie, które dotyczy daty początkowej.
A potem chcemy przesunąć to przesunięcie do przodu o 12 miesięcy, a następnie patrzeć tylko na daty, które mieszczą się w tym zestawie przesunięć. Pozwól, że pokażę ci, jak to wygląda w języku DAX.
Obliczanie zakresu miesięcznego
To jest nasza miara dla Miesięcznego Miesięcznego Zakresu , w którym wybieramy nasz rok (który zebraliśmy z tabeli odłączonych lat) i nasz miesiąc (który zebraliśmy z tabeli odłączonych miesięcy).
Mamy również ten inny parametr, w którym, jeśli nie dokonano żadnego wyboru, domyślnym ustawieniem będzie styczeń. Ten parametr służy głównie do celów debugowania.
Obliczanie przesunięć miesiąca początkowego i końcowego
Przyjrzyjmy się przesunięciu miesiąca początkowego, obliczając przesunięcie MAX. Usuwamy wszystkie filtry z tabeli dat i filtrujemy do wybranego miesiąca i wybranego roku. Dla każdego miesiąca powinno istnieć tylko jedno przesunięcie, które odpowiada temu miesiącowi i rokowi.
Od tego momentu możemy wziąć przesunięcie miesiąca końcowego , które jest po prostu przesunięciem miesiąca początkowego + 11 miesięcy.
A następnie patrzymy na każdą wybraną datę i ustalamy, czy mieści się ona w przesunięciu miesiąca początkowego i przesunięciu miesiąca końcowego. jeśli mieści się w tym okresie, dajemy mu 1, a jeśli nie, dajemy mu 0.
Jeśli wrócimy do widoku miesięcznego w naszej wizualizacji, zobaczymy wizualizację Within Range , którą ustawiliśmy jako równą jeden. Więc pokazuje tylko te miesiące w ramach przesunięcia od początku do końca. Na przykład, jeśli klikniemy na luty, zobaczymy luty do stycznia.
Obliczanie zakresu tygodniowego
Zobaczmy, jak to wygląda z tygodniowego punktu widzenia. Wizualizacja początkowo zaczyna się dobrze i trwa od tygodnia 1 do tygodnia 52. Jak dotąd, tak dobrze.
Ale jeśli klikniemy na inne lata we fragmentatorze roku, zobaczymy 52. tydzień, podczas gdy niektóre mają 53. tydzień, co stwarza wiele problemów. Na tym przykładzie widać, że problem zaczyna się objawiać.
Mamy okres początkowy roku 2020 i tydzień 15 , ale okresem końcowym jest rok 2021 i tydzień 13 zamiast roku 2021 i tygodnia 14 .
Jeśli wrócimy do tygodnia 1, zobaczymy, że zaczyna się dobrze, ale kończy w 52. tygodniu. Jeśli spojrzymy tutaj na obliczenia 53. tygodnia, maksymalna liczba tygodni w 2020 i 2021 r. to 53 tygodnie. To nie zadziała w przypadku tygodniowej szczegółowości.
Zobaczmy, co możemy zrobić, aby to zadziałało. Musimy poprawić obliczenia DAX tutaj w tej części:
Dzieje się tak, ponieważ w niektórych przypadkach liczba 51 jest poprawna, gdy w roku są tylko 52 tygodnie, ale w przypadku roku, w którym są 53 tygodnie, pominie ten ostatni okres. Dokładnie to widzieliśmy w dynamicznej wizualizacji tygodni, gdzie obliczenia usunęły ostatni okres w latach 2020 i 2021.
Aby to naprawić, przechodzimy do miary „Wewnątrz zakresu tygodniowego błędu ”, która w rzeczywistości wygląda na prostszą niż wcześniejsza miara. Mieliśmy początkową miarę przesunięcia i obliczyliśmy maksymalne przesunięcie. Następnie usunęliśmy filtr z dat, a następnie nałożyliśmy filtr na wybrany tydzień i wybrany rok z założeniem, że doprowadzi to do prawidłowego przesunięcia.
Ale to nie działa, ponieważ nie ma znaczenia, czy używasz przesunięcia maksymalnego, czy minimalnego. Wszystko, co robimy, to zawijamy agregator, aby nie umieszczać nagiej kolumny w instrukcji CALCULATE.
Ale jeśli wrócimy tutaj do ISO WeekNumber , zobaczymy, że rok i numer tygodnia nie określają jednoznacznie tygodniowego przesunięcia w tym pierwszym okresie.
Wymyśliłem kuloodporny sposób na zrobienie tego. Możesz użyć MIN, ale bardziej sensowne jest utworzenie miary przesunięcia Tydzień 1 . Aby uzyskać przesunięcie tygodnia 1, mamy do czynienia z tygodniem 2, ponieważ nigdy nie jest dzielony. Niezależnie od tego, czy rok ma 52, czy 53 tygodnie, tydzień 2 pozostaje nienaruszony.
W tym obliczeniu filtrujemy do tygodnia 2, aby uzyskać przesunięcie. A kiedy już otrzymamy przesunięcie w drugim tygodniu, po prostu odejmiemy od niego jeden. To jednoznacznie da nam przesunięcie tygodnia 1. To ostatecznie rozwiąże nasz problem.
Obliczanie tygodniowego zakresu w zakresie
A następnie wracamy do naszej tygodniowej miary w obrębie zakresu i piszemy oświadczenie JEŻELI, w którym jeśli liczba zbiorów dotyczy tygodnia 1, obliczamy przesunięcie tygodnia pierwszego. Jeśli nie jest to tydzień 1, po prostu obliczamy przesunięcie tygodnia początkowego, tak jak to zrobiliśmy w poprzednim obliczeniu miesięcznym.
A wtedy przesunięcie tygodnia końcowego będzie przesunięciem tygodnia początkowego + maksymalnym numerem tygodnia, który może wynosić 52 lub 53. Następnie po prostu odejmujemy 1, aby nie liczyć podwójnie przesunięcia początkowego.
Możemy wykonać tę samą konstrukcję, której użyliśmy do filtrowania tygodni dla zakresu miesięcznego, gdzie wszystko, co mieści się między przesunięciem początkowym a końcowym, otrzymuje 1, a wszystko, co nie otrzymuje 0.
Następnie umieścimy miarę Weekly Within Range w okienku filtrowania. Wszystko się sprawdza i wygląda dokładnie tak, jak należy.
Możemy kliknąć oś odtwarzania i uruchomić szczegółowość tygodnia. Widzimy, że działa poprawnie, podobnie jak w kontekście miesiąca.
Wniosek
To dość szczegółowe omówienie analizy czasu w języku DAX, w którym omówiliśmy, jak rozwiązać niektóre problemy związane z numerami tygodni. Mam nadzieję, że ten samouczek okazał się pomocny i dostarczył ci dodatkowych narzędzi w zestawie narzędzi, gdy masz do czynienia z problematyczną sytuacją tygodniową.
Jeśli podobały Ci się treści omówione w tym samouczku, nie zapomnij zasubskrybować kanału telewizyjnego LuckyTemplates. Cały czas publikujemy ogromną ilość treści ode mnie i wielu twórców treści, których celem jest ulepszenie sposobu, w jaki korzystasz z usługi LuckyTemplates i Power Platform.
W tym samouczku omówimy pakiet dplyr, który umożliwia sortowanie, filtrowanie, dodawanie i zmianę nazw kolumn w języku R.
Odkryj różnorodne funkcje zbierania, które można wykorzystać w Power Automate. Zdobądź praktyczne informacje o funkcjach tablicowych i ich zastosowaniu.
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
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.