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 poznasz różne techniki kompresji usługi LuckyTemplates w , które pomogą zoptymalizować raport.
Po załadowaniu danych segment po segmencie przez usługi Analysis Services w LuckyTemplates Power Pivot i SSAS występują dwa zdarzenia. Po pierwsze, próbują użyć różnych metod kodowania do kompresji kolumn, aby zmniejszyć ogólny rozmiar pamięci RAM . Drugi polega na tym, że próbują sfinansować najlepszą kolejność sortowania, która łączy powtarzające się wartości. Ta metoda zwiększa również kompresję, co z kolei zmniejsza nacisk na pamięć.
Istnieją różne techniki kompresji używane przez usługi Analysis Services. Ten samouczek obejmuje trzy metody, w szczególności: kodowanie wartości, kodowanie długości przebiegu i kodowanie słownikowe. W ostatniej sekcji tego samouczka zostanie omówiony sposób sortowania kolejności prac w usługach Analysis Services.
Spis treści
Technika kompresji usługi LuckyTemplates nr 1: kodowanie wartości
Pierwszy nazywa się kodowaniem wartości.
Kodowanie wartości wyszukuje matematyczny związek między każdą wartością w kolumnie, aby zmniejszyć ilość pamięci. Oto przykład w programie Microsoft Excel:
Ta kolumna wymaga 16 384 bitów do przechowywania wartości.
Aby obliczyć wymagane bity, najpierw użyj funkcji MAX() w programie Excel, aby uzyskać najwyższą wartość w kolumnach. W tym przypadku jest to 9144. Następnie użyj funkcji POWER(), aby obliczyć wymagane bity. Użyj argumentu POTĘGA(2, X), gdzie X jest dowolną wartością dodatnią, która zwróci odpowiedź większą niż wartość MAX. X w tym przypadku reprezentuje również wymagane bity. Tak więc w tym przykładzie wartość X wynosi 14, co daje 16,384 . Dlatego kolumna wymaga 14 bitów pamięci.
Aby zredukować liczbę wymaganych bitów za pomocą kodowania wartości, VertiPaq wyszukuje wartość MIN w kolumnie i odejmuje ją od każdej wartości. W tym przypadku wartość MIN w kolumnie to 9003. Jeśli odejmiesz tę wartość od kolumny, zwróci ona następujące wartości:
Korzystając z tych samych funkcji i argumentów, możesz zobaczyć, że dla nowej kolumny wartość MAX wynosi 141. A użycie 8 jako wartości X daje w wyniku 256 . Dlatego nowa kolumna wymaga tylko 8 bitów.
Możesz zobaczyć, jak skompresowana jest druga kolumna w porównaniu z pierwszą kolumną.
Gdy dane zostaną skompresowane i spróbujesz wysłać zapytanie do nowej kolumny, Storage Engine lub Vertipaq skanuje tę kolumnę. Nie zwrócą po prostu nowych wartości kolumny. Zamiast tego dodają odjętą wartość przed zwróceniem wyniku użytkownikowi.
Jednak kodowanie wartości działa tylko w przypadku kolumn zawierających liczby całkowite lub wartości ze stałymi liczbami dziesiętnymi.
Technika kompresji usługi LuckyTemplates nr 2: kodowanie długości przebiegu
Druga metoda kodowania nosi nazwę Run Length Encoding.
Run Length Encoding tworzy strukturę danych, która zawiera odrębną wartość, kolumnę Start i kolumnę Count.
Weźmy przykład:
W tym przypadku oznacza to, że w pierwszym wierszu dostępna jest jedna wartość koloru czerwonego . Następnie dowiaduje się, że wartość Black zaczyna się w drugim wierszu i jest dostępna dla następnych czterech komórek. Przechodzi do trzeciej wartości, Blue , która zaczyna się w szóstym wierszu i jest dostępna dla następnych trzech wierszy. I to trwa, dopóki nie osiągnie ostatniej wartości w kolumnie.
Dlatego zamiast przechowywać całą kolumnę, tworzy strukturę danych, która zawiera tylko informacje o tym, gdzie zaczyna się i kończy dana wartość oraz ile ma duplikatów.
W przypadku kolumn o tej samej strukturze dane można dodatkowo skompresować, ustawiając wartości w porządku rosnącym lub malejącym.
Dzięki tej prawidłowo posortowanej kolumnie widać, że metoda Run Length Encoding zwraca teraz strukturę danych o jeden wiersz mniej.
Jeśli więc masz do czynienia z wieloma różnymi wartościami, zaleca się posortowanie kolumny w możliwie najbardziej optymalny sposób. To da ci strukturę danych z mniejszymi wierszami, co z kolei zajmuje mniej pamięci RAM.
Kodowania długości przebiegu nie można zastosować do kluczy podstawowych, ponieważ kolumny klucza podstawowego zawierają tylko unikatowe wartości. Więc zamiast przechowywać jeden wiersz dla każdej wartości, będzie przechowywać kolumnę bez zmian.
Technika kompresji usługi LuckyTemplates nr 3: kodowanie słownikowe
Trzecia metoda kodowania nazywa się kodowaniem słownikowym.
Kodowanie słownikowe tworzy strukturę podobną do słownika, która zawiera odrębną wartość kolumny. Przypisuje również indeks do tej unikalnej wartości.
Korzystając z poprzedniego przykładu, przyjrzyjmy się, jak działa kodowanie słownikowe. W tym przypadku wartościom Czerwonym, Czarnym i Niebieskim przypisywany jest odpowiednio indeks 0, 1 i 2.
Następnie tworzy strukturę danych podobną do Run Length Encoding. Jednak zamiast przechowywania rzeczywistych wartości, Dictionary Encoding przechowuje przypisany indeks każdej wartości.
To jeszcze bardziej zmniejsza zużycie pamięci RAM, ponieważ liczby zajmują mniej miejsca niż wartości łańcuchowe.
Kodowanie słownikowe sprawia również, że typ danych tabelarycznych jest niezależny. Oznacza to, że niezależnie od tego, czy masz kolumnę, którą można przechowywać w różnych typach danych, nie będzie to miało znaczenia, ponieważ struktura danych będzie przechowywać tylko wartość indeksu.
Jednak nawet jeśli jest niezależny, typ danych nadal będzie miał wpływ na rozmiar słownika. W zależności od typu danych, w którym chcesz zapisać kolumnę, rozmiar słownika (lub struktury danych) będzie się zmieniał. Ale rozmiar samej kolumny pozostanie taki sam.
W zależności od tego, jaki typ danych wybierzesz, po zastosowaniu kodowania słownikowego w kolumnie można później zastosować kodowanie długości przebiegu.
W takim przypadku usługi Analysis Services utworzą dwie struktury danych. Najpierw utworzy słownik, a następnie zastosuje do niego Run Length Encoding, aby jeszcze bardziej zwiększyć kompresję kolumny.
Kolejność sortowania w usługach Analysis Services
W ostatniej części tego samouczka omówimy sposób, w jaki usługi Analysis Services decydują o najbardziej optymalnym sposobie sortowania danych.
Jako przykład przyjrzyjmy się kolumnie zawierającej wartości Red, Blue, Black, Green i Pink. Przypisano im również numery od 1 do 5. To działa jak słownik naszej kolumny.
Teraz wypełnij całą kolumnę w programie Excel tymi wartościami. Użyj tego argumentu, aby wygenerować losowo kolumnę zawierającą te wartości.
Przeciągnij formułę do ostatniego wiersza. Kliknij OK , jeśli pojawi się wyskakujące okienko Duża operacja . Tak to teraz będzie wyglądać:
Następnie skopiuj całą kolumnę i wklej ją jako Value .
Teraz, jeśli przejdziesz do opcji Plik w dokumencie programu Excel i klikniesz Informacje , zobaczysz, że kolumna zajmuje 14,1 MB .
Aby zmniejszyć ilość zużywanej pamięci RAM, możesz posortować kolumnę od A do Z. Jeśli ponownie sprawdzisz rozmiar, zobaczysz, że został on zmniejszony do 12,5 MB .
Zmniejszenie o 1,9 MB może nie wydawać się dużo. Dzieje się tak, ponieważ w przykładzie wykorzystano pojedynczą kolumnę w programie Excel do zademonstrowania. Excel jest ograniczony tylko do 1 miliona wierszy. Jednak w usłudze LuckyTemplates Twoje dane mogą zawierać miliardy wierszy i kolumn. Zmniejszenie zajmowanej przestrzeni rośnie wykładniczo.
Wniosek
Po posortowaniu danych w najbardziej optymalny sposób usługi Analysis Services stosują jedną z trzech technik kompresji w zależności od typu danych.
Zwiększa to kompresję danych, co znacznie zmniejsza ilość pamięci zużywanej w urządzeniu. Dzięki temu Twój raport jest bardziej optymalny, co ułatwia uruchamianie i ładowanie.
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.