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.
Chcę się dzisiaj skupić na czymś, co nazywam ukrytą pułapką DAX. Jeśli spotkasz się z taką sytuacją, poczujesz się, jakbyś tracił rozum, ponieważ Twój DAX będzie wyglądał dobrze, ale nie będzie działał. Pokażę Ci, kiedy to nastąpi i co możesz z tym zrobić, a przy okazji opowiem też o kilku ogólnych najlepszych praktykach optymalizacji języka DAX. Możesz obejrzeć pełny film z tego samouczka na dole tego bloga.
Najpierw przyjrzyjmy się temu, z czym tutaj pracujemy. Mamy około 10 lat danych z Internetowej Bazy Danych Filmowych. Tabele faktów są dość proste i mamy dane ratingowe, dane budżetowe i dane brutto.
Dziś przyjrzymy się światowym dochodom.
Mamy też nasz rozszerzony terminarz. Będzie to analiza czasowa oparta na tabeli dat i tabeli faktów.
Spis treści
Całkowity światowy brutto rocznie
Chcemy zrobić coś naprawdę powszechnego i prostego. Nasz Total Worldwide Gross to po prostu bardzo prosta zbiorcza miara sumy, którą chcemy przeliczyć na procent.
Aby to zrobić, bierzemy licznik ( miara Total Worldwide Gross ) i mianownik ( miara Total Worldwide Gross , ale usunęliśmy kontekst z filtra roku).
Użyłem ponieważ myślę, że jest bardziej intuicyjna podczas czytania kodu, ale jeśli wolisz , to działa równie dobrze. Po prostu dzielimy licznik przez mianownik, aby otrzymać wynik.
Jeśli weźmiemy wynikową miarę i upuścimy ją do naszej tabeli, zobaczysz, że robi dokładnie to, czego oczekujemy. Dostajemy 100% na dole i otrzymujemy lata przeliczone na ich indywidualne wartości procentowe. Jak dotąd jest dobrze i nie napotkaliśmy jeszcze żadnych problemów.
Całkowity światowy brutto na kwartał
Przyjrzyjmy się podobnej sytuacji, w której idziemy przez kwartał. Ta miara może być przydatna, ponieważ istnieją hipotezy, że dochody z letniego sezonu filmowego różnią się od początku roku i pod koniec roku prowadzącego do sezonu oscarowego.
Ponownie mamy dokładnie taką samą miarę z funkcją REMOVEFILTERS na numerach kwartałów zamiast roku.
A jeśli umieścimy w tabeli miarę, którą właśnie wprowadziliśmy, zrobi ona dokładnie to, czego oczekujemy.
Całkowity światowy brutto miesięcznie i rocznie
Przyjrzyjmy się trzeciemu przypadkowi, który może być bardzo powszechny, gdzie chcemy patrzeć według miesiąca i roku.
I znowu użyjemy tej samej miary, co poprzednio. Ale tym razem usuniemy filtr dotyczący miesiąca i roku.
Wrzućmy to do naszego stolika. Nagle to nie działa.
Możemy powiedzieć, co w nim nie działa. Wiemy, że miara Worldwide Gross działa, więc oznacza to, że licznik jest w porządku, ale mianownik nie. W każdym z poprzednich przypadków funkcja REMOVEFILTERS prawidłowo usunęła filtr, ale tutaj wyraźnie tego nie zrobiła.
W rzeczywistości możemy to przetestować, zmieniając to, co zwróciliśmy tutaj w wyniku.
Zamiast Result użyjmy Mianownika. Pamiętaj, że zostanie to sformatowane w procentach, więc będzie wyglądać trochę zabawnie.
To, co powinniśmy otrzymać za mianownik, to ta sama liczba w każdym rzędzie, ale tak nie jest.
Możemy powiedzieć, że nie usuwa filtra miesiąca i roku, i myślimy, że dzieje się tak, ponieważ miesiąc i rok są w tekście.
Ale poprzedni dla kwartału był również wyrażony w tekście, więc nie tylko dlatego, że jest to tekst. Trzeba to tylko uporządkować. Gdy upuścisz pole bez sortowania, zostanie ono posortowane alfabetycznie.
W rozszerzonej tabeli dat przyjrzyjmy się temu polu o nazwie Month & Year . Jeśli spojrzymy na to w kolumnie Sortuj według , zobaczymy coś ciekawego.
Zobaczymy, że ta kolumna jest posortowana według wartości liczbowej o nazwie MonthnYear. Kiedy sortujesz jedną kolumnę według drugiej, ta kolumna sortowania faktycznie staje się częścią kontekstu filtru. To właśnie odrzuca te obliczenia.
Wróćmy do naszej miary i usuńmy kontekst miesiąca i roku, których używamy jako sortowania.
Otrzymujemy teraz dokładnie to, co powinniśmy, czyli miesiąc i rok obliczone jako odpowiedni procent.
Podczas usuwania kontekstu filtru posortowanie zajmie dwa pola . Możesz zapytać, dlaczego zamiast robić tutaj dwa pola, nie możemy po prostu usunąć filtrów z całej tabeli dat?
Odpowiedź brzmi: możemy, i to zadziała w przypadku trzech przykładów, o których mówiliśmy, ponieważ każda z tych kolumn jest częścią naszej tabeli dat. Usunięcie całego kontekstu filtra z tej tabeli zadziała we wszystkich trzech przypadkach, ale w rzeczywistości jest to zły pomysł.
Zgodnie z ogólną zasadą optymalizacji języka DAX należy usunąć tyle kontekstu filtru, ile potrzeba, aby uzyskać pożądany wynik.
W większości przypadków nie będziesz przedstawiać tego w formie tabelarycznej. Przedstawisz to jako macierz i będziesz potrzebować bardziej złożonej miary, ponieważ masz dwie różne granulacje w tej samej kolumnie. Ta miara wygląda na skomplikowaną, ale tak naprawdę nie jest.
To tylko rozszerzenie tego, co już zrobiliśmy. Pierwsza część tego obliczenia optymalizacji języka DAX pokazuje mianowniki dla różnych stopni szczegółowości. Usuwamy kontekst filtra na miesiąc, rok i całą tabelę.
W drugiej części obliczeń użyliśmy SWITCH TRUE. W przypadku tej funkcji musisz przejść od najbardziej szczegółowego do najmniej szczegółowego. Miesiąc to nasz najwęższy i najbardziej szczegółowy zakres, więc od tego zaczynamy. Będziemy musieli usunąć kontekst, używając tych dwóch pól, które zidentyfikowaliśmy.
Dla zakresu roku musimy usunąć kontekst z roku i usunąć kontekst z całej tabeli.
Przyjrzyjmy się, co się stanie, jeśli weźmiemy i usuniemy kontekst z całej tabeli dat . We wszystkich trzech przypadkach użyjemy innej miary, która usunie kontekst z całej tabeli dat.
Zobaczymy, że środkiem jest nadmierne usuwanie kontekstu. Zamiast obliczać udział każdego miesiąca w tym roku, oblicza udział tego miesiąca w całym zbiorze danych. To nie jest to, czego chcemy, ponieważ usunięcie kontekstu z całego stołu jest tak naprawdę tępym narzędziem, gdy potrzebny jest skalpel.
Wniosek
Istnieje wiele przypadków, w których masz macierz i musisz dokładnie kontrolować, jaki kontekst usuwasz. Samo usunięcie kontekstu z całej tabeli spowoduje tego rodzaju problemy.
Mam nadzieję, że kiedy taka sytuacja się pojawi (co w pewnym momencie niezmiennie nastąpi), rozpoznasz w niej ukrytą pułapkę, o której mówiliśmy w tym poście dotyczącym optymalizacji języka DAX, i będziesz w stanie jej uniknąć bez takiej samej frustracji że spowodowało to, kiedy zobaczyłem to po raz pierwszy i nie mogłem zrozumieć, dlaczego mój DAX nie działa poprawnie.
Jeśli podoba Ci się temat optymalizacji języka DAX omówiony w tym samouczku, zasubskrybuj kanał telewizyjny LuckyTemplates . Cały czas publikujemy ogromną ilość treści ode mnie i wielu twórców treści, z których wszyscy poświęcają się ulepszaniu sposobu, w jaki korzystasz z usługi LuckyTemplates i platformy 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.