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 samouczku pokażę szczegółową analizę miar języka DAX dotyczącą tego, jak utworzyłem jedną z moich ulubionych stron w raporcie, który przesłałem na 10. wyzwanie LuckyTemplates.
Strona Rankingi wykorzystuje wiele trudnych miar języka DAX. Jednak dzięki pomocy jednego z naszych ekspertów LuckyTemplates, Antrikshowi Sharmie, oraz rozgałęzieniom miar udało mi się uzyskać pożądane rezultaty.
Spis treści
Przegląd strony rankingów
Zanim przejdziemy do analizy miar języka DAX, chcę pokazać różne części strony, nad którymi dzisiaj pracujemy.
Tak wygląda strona Rankingi . W przeciwieństwie do innych stron w moim raporcie, ta zawiera głównie karty.
Każda z tych kart została utworzona przy użyciu wbudowanej wizualizacji karty w programie LuckyTemplates Desktop w okienku Wizualizacje.
Umożliwia powrót do innych stron w raporcie za pomocą tych ikon u góry.
Pozostałe strony tego raportu omówiłem w innych samouczkach. Jeśli zobaczysz inne strony w tym raporcie, zobaczysz, że mają one również ikony prowadzące do tej strony Rankingi .
Lewa strona strony przedstawia cztery najlepsze zakłady i dostawców, podczas gdy prawa strona przedstawia cztery ostatnie.
Stworzyłem również indywidualne miary DAX, aby uzyskać bardziej szczegółowe wyniki. Na przykład te trzy na górze przedstawiają cztery najlepsze i ostatnie cztery zakłady i dostawców na podstawie liczby minut przestoju , średniej liczby minut przestoju i defektów .
Poszedłem jeszcze bardziej szczegółowo w dolnej części strony raportu. Po lewej stronie mam cztery najlepsze i cztery najniższe zakłady na podstawie minut przestoju, średnich minut przestoju i defektów.
Po prawej zrobiłem to samo, ale tym razem w oparciu o dane dostawcy.
Przechodząc przez ten samouczek, opowiem historię o tym, jak wpadłem na pomysł tej strony. Następnie opiszę krok po kroku sposób tworzenia każdego z tych środków.
Zdobywanie pomysłów na miary DAX do wykorzystania
Pomysł na miary języka DAX na tym slajdzie zaczerpnąłem od jednego z naszych , Antriksha. Jest guru języka DAX i świetnie radzi sobie z optymalizacją miar. Fajnie było z nim pracować nad tą analizą wskaźników DAX.
Około dwa tygodnie przed ogłoszeniem 10. konkursu LuckyTemplates Challenge odbyliśmy rozmowę na Skypie na temat pliku PBIX, który umieścił na LuckyTemplates Forum.
Jak widzisz, zamieściłem zdjęcie Antriksha, ponieważ był inspiracją dla strony, o której będziemy tutaj mówić. Powiedziałem mu, że przyznam mu uznanie, kiedy ukończę ten samouczek.
Model jest prosty i wykorzystuje podstawowe dane, takie jak Klient, Produkty i Sprzedaż.
Ma krótką listę krajów po lewej stronie.
Antriksh stworzył miarę dla N najlepszych krajów według sprzedaży . Mam listę posortowaną od najwyższej do najniższej, jak wskazuje strzałka w dół.
Po prawej stronie znajduje się karta przedstawiająca cztery najlepsze i ostatnie cztery kraje. Pierwsza czwórka zawiera Stany Zjednoczone , Australię , Wielką Brytanię i Niemcy , które pasują do pierwszej czwórki na liście.
Jednak dolna czwórka pojawia się w odwrotnej kolejności. Zamiast iść od dołu, czyli Armenii , zaczęło się od 5. miejsca na liście, czyli Kirgistanu .
Dlatego zrobiłem kolejną kartę na dole, która wykorzystuje poprawioną wersję miary użytej powyżej.
Zauważ, że dolna czwórka jest teraz zgodna z kolejnością, którą chciałem — Armenia , Tajlandia , Syria i Kirgistan .
Przejdźmy do miar DAX stojących za tymi kartami. Zacznę od miary, którą Antriksh stworzył dla pierwszej karty.
Oryginalna miara ma ponad 97 wierszy, aby uzyskać wyniki, które widzieliśmy na pierwszej karcie.
Kiedy przewiniemy w dół do 20. wiersza, zobaczymy, że Antriksh użył ASC . To jest powód, dla którego dolna czwórka pokazała się w taki sposób.
Teraz, gdy wiem, gdzie zaczął się problem, pokażę ci, jak wygląda moja poprawiona miara.
Pozwól, że zaznaczę drugą kartę, aby pokazać ci miarę, która się za nią kryje.
Jak widać, w mojej poprawionej formule jest tylko 41 wierszy.
Pracowałem z Antrikshem, aby zmniejszyć go o 60% lub 70% w stosunku do pierwotnej miary. Nie tylko jest to mniej skomplikowane, ale także daje mi wyniki, których potrzebuję – z czterema najlepszymi zaczynającymi się od 1 do 4, a najsłabszymi czterema zaczynającymi się od 8 do 5.
Kilka tygodni po mojej rozmowie z Antrikshem wystartowało 10. wyzwanie LuckyTemplates. Część wymagań dotyczyła systemu rankingowego, co skłoniło mnie do powrotu do miary DAX firmy Antriksh. Zdałem sobie sprawę, że mogę skopiować i wkleić miarę, a następnie zastosować rozgałęzienia taktów, aby uzyskać potrzebne wyniki.
Analiza miary Dax: budowanie miary krok po kroku
Teraz podzielę miary, których użyłem na stronie Rankingi, aby uzyskać pożądane wyniki. Ta analiza miary języka DAX może pomóc mi wyjaśnić, jak działa miara, biorąc pod uwagę liczbę wierszy wymaganych do jej wykonania.
W innych moich samouczkach pokazałem, jak lubię grupować miary, aby wszystko było lepiej zorganizowane . Stworzyłem więc podfolder dla Top N v2.
W tym folderze znajduje się moja miara minut przestoju najlepszych dostawców roślin . Zobaczysz, że ma te same 41 linii kodu, które pokazałem ci wcześniej, omawiając miarę Antriksha. Zasadniczo wszystko, co musiałem zrobić, to wymienić niektóre elementy, aby uzyskać pożądane rezultaty.
Aby to lepiej rozbić, podzieliłem cały ten środek na 9 różnych części. Omówię każdy z tych kroków od jednego do dziewięciu i wyjaśnię, co każdy z nich osiąga.
Miara wykorzystuje szereg zmiennych, dzięki czemu mogę uzyskać wyraźniejsze wyniki. Ustawienie tych zmiennych pomaga użytkownikowi końcowemu zobaczyć, jak miara się łączy, i wyjaśnia szczegóły, w jaki sposób uzyskałem każdy wynik.
Zacznijmy od pierwszego kroku, który ustawia o nazwie BaseTable.
W tej tabeli bazowej możesz zobaczyć, że odwołuję się do danych dla lokalizacji zakładu i dostawcy .
Kiedy wrócisz do pliku PBIX, zobaczysz górną kartę, która odnosi się zarówno do roślin, jak i dostawców. Dlatego potrzebuję wszystkich danych tutaj, w przeciwieństwie do karty poniżej, która dotyczy również minut przestoju, ale wykorzystuje tylko dane dotyczące lokalizacji zakładu.
Ponieważ pierwszy krok jest prosty, przejdźmy do kroku drugiego.
Drugi krok rozpoczyna się od funkcji .
Ta funkcja odwołuje się do zmiennej utworzonej w kroku 1 i minut przestoju .
Upewnia się, że wartość jest wyświetlana, łącząc funkcje i . Chcę również, aby wyniki były większe lub równe zeru. Dzieje się tak dlatego, że zestaw danych użyty w tym raporcie zawierał pewne kombinacje, w których albo zakład, albo dostawca są puste. Istnieją również wpisy, w których wartość wynosi zero.
Trzeci krok obejmuje kolejny zestaw zmiennych, zaczynając od wartości N.
Tutaj N jest równe 4, ponieważ chcę, aby pokazywały się górne cztery i dolne cztery.
Ustawia również prefiks dla Top & N oraz myślnik.
Po złożeniu chce po prostu pokazać „Top 4 -”, tak zaczyna się odpowiednia karta przed wyliczeniem oczekiwanych wyników.
Przejdźmy teraz do czwartego kroku. Od tego zaczynam dochodzić do oczekiwanych rezultatów.
Niektórzy pomyśleliby o użyciu w tym przypadku. W końcu staram się uszeregować wpisy i uzyskać najlepsze wyniki. Jednak Antriksh i ja uznaliśmy, że będzie w tym przypadku bardziej odpowiedni, ponieważ potrzebujemy tylko pierwszej czwórki w kolejności ASC .
Następnie użyłem funkcji , która wykorzystuje dane lokalizacji zakładu.
Ustawia również format, w jaki chcę, aby lista się wyświetlała. Dlatego zobaczysz, że zawiera ukośnik odwrotny i przecinek oraz cudzysłowy oznaczające spacje. Jest również ustawiony na kolejność ASC , więc jeśli wrócę do pliku PBIX, zobaczysz listę pierwszych czterech z ukośnikami odwrotnymi i przecinkami pomiędzy wynikami.
Piąty krok miary rozpoczyna się od zastąpienia ostatniego przecinka na liście znakiem And .
Kiedy wrócisz do slajdu, zobaczysz, że ostatni wpis ma „i” przed nazwą dostawcy i lokalizacji zakładu.
To jest to, co jest osiągane w kroku piątym. Tworzy listę i używa funkcji dla LastCommaPosition .
Zauważ, że to mówi, że N jest większe niż 2. Oznacza to, że podstawienie ma miejsce po trzecim łańcuchu.
Szósty krok będzie wyglądał znajomo, ponieważ w zasadzie kopiuje to samo, co zrobiłem na górze, aby rozpocząć listę od „Top 4 -”.
Jedyna różnica polega na tym, że chcę, aby wyświetlał się jako „Bottom 4 -” zamiast „Top 4 -”.
Część, o której wcześniej mówiłem o używaniu , jest ponownie używana tutaj na dole, ale teraz wywołuję zmienną BottomData zamiast TopData. Ponownie, ta część wstawia ukośnik odwrotny i przecinek między nazwami zakładów i dostawców.
Kiedy spojrzymy wstecz na oryginalną miarę Antriksha, jest to również ta sama część, w której użył ASC , co spowodowało, że lista nie wyglądała tak, jak się spodziewałem. Dlatego zamiast tego używam DESC .
Więc w zasadzie od tego momentu większość jest po prostu kopiowana i wklejana z wcześniejszych części taktu. W większości przypadków po prostu zastępuję słowo „Góra” słowem „Dół”.
W kroku 8 chcę zmienić ostatni przecinek słowem And .
Krok dziewiąty podsumowuje ten środek.
Wykorzystuje to funkcję z liczbą 10. Zapewnia to, że górne 4 i dolne 4 są wyświetlane w osobnych wierszach. Pomyśl o tym jak o klawiszu powrotu na klawiaturze. Sprawia, że przechodzisz do następnego rzędu, aby górna i dolna czwórka nie pojawiały się w jednej linii.
Weryfikacja wyników
Antriksh i ja byliśmy w stanie skrócić oryginalne ponad 90 wierszy języka DAX do 41 wierszy. Jednak 41 linii może nadal być dużo dla niektórych użytkowników. Podział tego taktu w taki sposób, w jaki to zrobiliśmy, był świetnym sposobem na zrozumienie, dlaczego takt musiał być zapisany w ten sposób.
Teraz, gdy wyjaśniłem, na czym polegał każdy krok, nadszedł czas, aby zweryfikować, czy ten środek naprawdę robi to, co powinien. Przejdźmy do strony Rankingi i zweryfikujmy wyniki z drugą częścią raportu.
Zacznę od zakładów/dostawców według minut przestoju .
To pokazuje pierwszą czwórkę jako Linktype w New Britain, Flashpoint w Frazer, Quinu w Twin Rocks i Layo w Henning. Jeśli chodzi o ostatnią czwórkę, to Wikido w Middletown jest ogólnie najgorsze.
Teraz przejdę do strony dla dostawców i zakładów połączonych , aby sprawdzić, czy wyniki będą się zgadzać.
Po posortowaniu kolumny Ranking według minut przestoju od góry do dołu pokazuje poprawny wynik dla pierwszej czwórki.
Niektórzy z was mogą się jednak zastanawiać, dlaczego New Britain pojawia się na drugim miejscu na tej liście, skoro pojawia się na górze karty strony Rankingi .
Zauważ, że ranking pokazuje trzy wpisy jako pierwsze 1. Zostały one uszeregowane przy użyciu RANKX.
Jeśli jednak spojrzysz na kolumnę Minut przestoju , okaże się, że New Britain pokazuje 0, podczas gdy Frazer i Twin Rocks pokazują 1. Dlatego na karcie na stronie Rankingi New Britain nadal plasuje się na szczycie Frazer i Twin Rocks nawet jeśli wszystkie były na pierwszym miejscu.
Teraz sprawdźmy, czy dolne cztery są poprawne. Po prostu posortuj ranking według minut przestoju w kolejności malejącej.
Jak widać, pokazuje Middletown, Waldoboro, Barling i Chesaning jako dolną czwórkę na karcie. Oznacza to, że miara dla zakładów/dostawców według minut przestoju jest poprawna.
Teraz spójrzmy na kartę Zakłady według minut przestoju .
To pokazuje, że pierwsza czwórka to Reading, Middletown, Waldoboro i Clarksville. Dolne cztery to Riverside, Charles City, Twin Rocks i Chesaning.
Aby zweryfikować te wyniki, sprawdzę na stronie Rośliny i zobaczę, czy wyniki się zgadzają. Największa różnica polega na tym, że karta, którą wcześniej zweryfikowaliśmy, opierała się zarówno na danych roślin, jak i dostawców, podczas gdy ta dotyczy tylko danych roślin.
Gdy posortujemy ranking według minut przestoju od góry do dołu, okaże się, że pierwsza czwórka to Reading, Middletown, Waldoboro i Clarksville.
Odwróćmy teraz kolejność, aby zobaczyć, czy dolna czwórka pasuje. Zobaczysz, że spośród 30 roślin na naszej liście, Riverside, Charles City, Twin Rocks i Chesaning zajmują najniższe pozycje.
Oznacza to, że obserwujemy prawidłowe wyniki dla roślin.
Tym razem przyjrzyjmy się karcie, która klasyfikuje Sprzedawców według wad .
Tym razem przejdę do strony Sprzedawcy, aby sprawdzić, czy Dablist jest najlepszym dostawcą, a Yombu najgorszym pod względem wad.
Kiedy sortujemy dostawców od najlepszych do najgorszych, wygląda na to, że pierwsza czwórka pasuje do karty na stronie Rankingi .
Pozwól, że zmienię ranking z najgorszego na najlepszy i zobaczę, czy najniższa czwórka też się zgadza.
Przekonasz się, że Yombu jest rzeczywiście najgorszy, wraz z pozostałymi trzema znajdującymi się na liście czterech ostatnich na karcie.
Analiza miar Dax: stosowanie rozgałęzień miar
Analiza miary DAX, którą przeprowadziliśmy wcześniej, dotyczyła tylko miary za fabrykami/dostawcami według minut przestoju . Ale jak pracowałem nad taktami dla pozostałych kart? W tym miejscu pojawia się rozgałęzienie miar .
Rozgałęzianie miar polega na wykorzystaniu istniejącej miary do uzyskania innych wyników.
W tym raporcie po prostu skopiowałem i wkleiłem środek, o którym mówiliśmy wcześniej, i zmieniłem niektóre elementy, aby pasowały do moich potrzeb.
Nazwa taktu to oczywiście pierwsza rzecz, którą zamierzam zmienić. Ale co więcej, muszę też zmienić dane, do których się odwołuję. Na przykład użyliśmy zarówno lokalizacji zakładu, jak i danych dostawcy dla naszej pierwotnej miary.
Ale jeśli mam użyć tej samej miary dla Plants By Downtime Minutes , musiałbym usunąć dane dostawcy i skupić się tylko na lokalizacji zakładu.
Będę musiał to zmienić dla wszystkich innych części tej samej miary, która również odwołuje się do obu zestawów danych, tak jak wtedy, gdy użyłem CONCATENATEX .
To samo dotyczy minut przestoju . Gdybym miał pracować na karcie, która pokazuje średnią liczbę minut przestoju lub defektów , to wszystko, co muszę zrobić, to zmienić tę część.
Jeśli chodzi o część, w której w pomiarze jest napisane „@DowntimeMins”, nie zaszkodzi zachować to w ten sposób, nawet jeśli odwołuję się do moich Wad lub Średnich minut przestoju.
Ale jeśli jesteś typem, który lubi utrzymywać rzeczy w określonej kolejności, możesz wejść i to również zmienić. Pamiętaj tylko, że jeśli to zmienisz, będziesz musiał zmienić to na całej stronie. Oznacza to włożenie dodatkowego wysiłku w celu osiągnięcia tych samych rezultatów.
Możesz sobie wyobrazić, ile czasu zaoszczędziłem, stosując rozgałęzianie miar . Robienie tego w ten sposób oznacza, że nie będę musiał tworzyć nowych miar dla każdej części raportu, nad którą pracuję. Muszę tylko zmodyfikować istniejącą miarę w oparciu o wyniki, które chcę zobaczyć, co znacznie skraca czas opracowywania raportu.
Aby pokazać, jak to zrobiłem, spójrzmy na dostawców według minut przestoju .
Kiedy podniosę miarę, zobaczysz, że ma ona takie same 41 wierszy jak Zakłady/Dostawcy według minut przestoju .
Jednak w kroku 1 odniosłem się tylko do danych dostawcy i usunąłem lokalizację zakładu.
Zmieniłem dane również w innych miejscach, w których ma to zastosowanie.
Zachowałem minuty przestoju , ponieważ na tym opieram wyniki.
Są to więc szybkie poprawki do miary, dzięki czemu można ją zastosować do innych obszarów raportu.
Pokażę wam tutaj inny przykład. Tym razem przyjrzyjmy się sprzedawcom według wad .
Po raz kolejny patrzymy tylko na sprzedawcę.
To, co tutaj zmieniłem, to odniesienie do minut przestoju . Zamiast tego użyłem Defektów .
Upewniłem się również, że pozostałe wiersze nadal używają danych dla dostawcy.
Miary języka DAX w usłudze LuckyTemplates przy użyciu rozgałęzień miar
Implementowanie grup miar języka DAX w raportach — przegląd modelowania w usłudze LuckyTemplates
Wydobywanie unikalnych spostrzeżeń w usłudze LuckyTemplates przy użyciu miar języka DAX w rankingu
Wniosek
To była potężna praca Antriksha w języku DAX. Zdecydowanie podobała mi się praca z nim , rozgałęzianie go i stosowanie do różnych części mojego raportu .
Dogłębna analiza miar DAX, którą przeprowadziliśmy, była również świetnym sposobem na zrozumienie każdego aspektu procesu. Praca nad długą miarą może początkowo wydawać się zniechęcająca, ale dokładna analiza miary DAX, taka jak ta, może pomóc w rozwiązaniu problemu.
Praca nad tą stroną podkreśliła również znaczenie posiadania społeczności współpracującej, takiej jak ta, którą mamy tutaj w LuckyTemplates. To wspaniale, że każdy ma możliwość pracy z ludźmi takimi jak Antriksh, a także z innymi członkami i ekspertami, którzy również mają kilka własnych wskazówek i sztuczek.
Wszystkiego najlepszego,
Jarretta
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.