Funkcja okna PYSPARK GENSE_RANK

Funkcja okna PYSPARK GENSE_RANK
Dense_Rank () w PYSPARK to funkcja okienna, która ustawia szeregi na rzędach w każdej partycji.

Ranga rozpoczyna się od 1, a jeśli jakieś wartości są takie same w dwóch lub więcej rzędach, wówczas ta sama ranga zostanie przypisana.

Tutaj wartości pochodzą z kolumny, w której określiliśmy kolumnę wewnątrz Orderby (). Tak więc, w oparciu o wartości w tej kolumnie, Gense_Rank () sprawdza wartości i przypisuje numer rang.

Najważniejsze jest to, że Gense_Rank () nie jest dostępny bezpośrednio. Musimy to zaimportować z Pyspark.SQL.Funkcje moduł.

W PYSPARK można podzielić wiersze w ramce danych za pomocą funkcji okna. Jest dostępny w Pyspark.SQL.okno moduł.

Zaletą partycji jest osiągnięcie spójności danych i grupowanie. Po wykonaniu partycji możemy ustawić rangi na rzędach w każdej partycji za pomocą funkcji Gense_Rank ().

Możliwe jest podział wierszy w ramce danych na podstawie wartości w określonej kolumnie. Tak więc wszystkie podobne wartości są ustawione na każdą partycję.

Musimy wykonać następujące kroki do podziału i zastosować Gense_Rank na partycjonowanych danych:

Kroki:

  1. Utwórz Pyspark DataFrame z podobnymi wartościami w co najmniej jednej kolumnie.
  2. Partycja danych za pomocą metody paritionby () dostępnej w funkcji okna i zamów je na podstawie kolumny za pomocą funkcji orderby ().
    Składnia:
    parition = okno.paritionby („kolumna”).Orderby („kolumna”)
    Możemy zamówić partycjonowane dane z partycjonowaną kolumną lub dowolną inną kolumną.
  3. Teraz możesz użyć funkcji Gense_Rank () w ramach partycjonowanych za pomocą funkcji over ().
    Więc dodamy kolumnę do przechowywania numeru wiersza za pomocą funkcji withColumn ().
    Składnia:
    DataFrame_Obj.withcolumn („Nazwa”, gense_rank ().Over (partycja))
    Tutaj nazwa określa nazwę wiersza, a DataFrame_Obj to nasza Pyspark DataFrame.

    Zaimplementujmy kod.

Przykład 1
Tutaj utworzymy Pyspark DataFrame, który ma 5 kolumn: [„tematy_id”, „name”, „wiek”, „technologia Technologia 1 Korzystanie z funkcji okna.

Wreszcie, damy szeregi do wierszy we wszystkich partycjach, dodając nową kolumnę o nazwie „Gęsta ranga".

Import Pyspark
od Pyspark.SQL Import *
Spark_App = Sparksession.budowniczy.Nazwa aplikacji('_').getorCreate ()
studenci = [(4, „Sravan”, 23, „Php”, „Testowanie”),
(4, „Sravan”, 23, „php”, „testowanie”),
(46, „Mounika”, 22, '.Net ', „html”),
(4, „Deepika”, 21, „Oracle”, „html”),
(46, „Mounika”, 22, „Oracle”, „Testing”),
(12, „Chandrika”, 22, „Hadoop”, „C#”),
(12, „Chandrika”, 22, „Oracle”, „Testing”),
(4, „Sravan”, 23, „Oracle”, „C#”),
(4, „Deepika”, 21, „php”, „c#”),
(46, „Mounika”, 22, '.Net ', „testowanie”)
]
DataFrame_Obj = Spark_App.CreatedATAframe (studenci, [„Temat_id”, „nazwa”, „wiek”, „technologia1”, „technologia 2”])
Drukuj („---------- Rzeczywista ramka danych ----------”)
DataFrame_Obj.pokazywać()
# Zaimportuj funkcję okna
od Pyspark.SQL.okno importowe
#Wprowadź gęste_rank od Pyspark.SQL.Funkcje
od Pyspark.SQL.Funkcje importują gense_rank
#Partiction Scrame na podstawie wartości w kolumnie technologii1 i
#Order rzędów w każdej partycji na podstawie kolumny tematu_d
parition = okno.Partitionby („Technology1”).OrderBy („tematy_id”)
Drukuj („---------- PARTITIONED DATEFRAME ----------”)
#Now Wspomnienie gęste_rank dla każdego wiersza w gęstej kolumnie rangowej
DataFrame_Obj.z kolumny („Gęsta ranga”, gense_rank ().Over (partycja)).pokazywać()

Wyjście:

Wyjaśnienie
Pierwsze wyjście reprezentuje rzeczywiste dane obecne w ramce danych.

W drugim wyjściu partycja jest wykonywana na podstawie Technologia 1 kolumna.

Łączne partycje: - 4

Partycja 1:
.Net wystąpiła dwa razy w pierwszej partycji. Wartości w kolumnie tematycznej są takie same. Stąd funkcja gense_rank () zwraca tę samą ranga 1 dla obu .Wartości netto.

Partict 2:
Hadoop miał miejsce raz w drugim partycji. Tak więc ranga to 1.

Partycja 3:
Oracle wystąpiła cztery razy w trzeciej partycji.
W przypadku dwóch pierwszych wyroczni wartości Temat_id są takie same, więc dla obu rangi 1 jest przypisywane.
Dla trzeciego wyroczni ranga to 2.
Dla ostatniego wyroczni ranga to 3.

Partycja 4:
PHP wystąpił trzykrotnie w czwartej partycji, a wartości w kolumnie tematycznej są takie same dla wszystkich. Stąd ranga to 1 dla wszystkich php.

Przykład 2
Tutaj, korzystając z funkcji okna, podzielimy wiersze na podstawie Technologia2.

Wreszcie, uszeregujemy wiersze na podstawie kolumny tematu_id we wszystkich partycjach, dodając nową kolumnę o nazwie „Gęsta ranga".

(Jeśli nie utworzyłeś Pyspark DataFrame, utwórz go za pomocą pierwszego przykładu.)

# Zaimportuj funkcję okna
od Pyspark.SQL.okno importowe
#Wprowadź gęste_rank od Pyspark.SQL.Funkcje
od Pyspark.SQL.Funkcje importują gense_rank
#Partiction Scrame na podstawie wartości w kolumnie technologii2 i
#Order rzędów w każdej partycji na podstawie kolumny tematu_d
parition = okno.Partitionby („Technology2”).OrderBy („tematy_id”)
Drukuj („---------- PARTITIONED DATEFRAME ----------”)
#Now Wspomnienie gęste_rank dla każdego wiersza w gęstej kolumnie rangowej
DataFrame_Obj.z kolumny („Gęsta ranga”, gense_rank ().Over (partycja)).pokazywać()

Wyjście:

Wyjaśnienie
Dane wyjściowe reprezentuje rzeczywiste dane obecne w ramce danych.

W drugim wyjściu partycja jest wykonywana na podstawie Technologia2 kolumna i uporządkowane na podstawie kolumny tematycznej.

Łączne partycje: - 3

Partycja 1:
C# wystąpił trzy razy w pierwszej partycji. Ponadto dwie pierwsze wartości w kolumnie tematycznej są takie same. Stąd funkcja Gense_Rank () zwraca tę samą ranga-1 dla pierwszych dwóch c#, a dla trzeciego c#ranga to 2.

Partict 2:
HTML wystąpił dwukrotnie w drugim partycji, a wartości podmiotu są różne dla tych dwóch. Tak więc ranga 1 jest przypisywana do pierwszego HTML, a ranga-2 jest przypisywana na drugi.

Partycja 3:
Testy miały miejsce pięć razy w partycji trzeciej.
W przypadku dwóch pierwszych testów wartości TETS_ID są takie same, więc dla obu rangi 1 jest przypisywane.
Do trzeciego testu ranga to 2.
Do ostatnich testów ranga wynosiła 3.

Przykład 3
Tutaj, korzystając z funkcji okna, podzielimy wiersze na podstawie Technologia2.

Wreszcie, uszeregujemy wiersze na podstawie kolumny wiekowej we wszystkich partycjach, dodając nową kolumnę o nazwie „Gęsta ranga".

(Jeśli nie utworzyłeś Pyspark DataFrame, utwórz go za pomocą pierwszego przykładu.)

# Zaimportuj funkcję okna
od Pyspark.SQL.okno importowe
#Wprowadź gęste_rank od Pyspark.SQL.Funkcje
od Pyspark.SQL.Funkcje importują gense_rank
#Partiction Scrame na podstawie wartości w kolumnie technologii2 i
#Order rzędy w każdej partycji na podstawie kolumny wiekowej
parition = okno.Partitionby („Technology2”).Orderby („wiek”)
Drukuj („---------- PARTITIONED DATEFRAME ----------”)
#Now Wspomnienie gęste_rank dla każdego wiersza w gęstej kolumnie rangowej
DataFrame_Obj.z kolumny („Gęsta ranga”, gense_rank ().Over (partycja)).pokazywać()

Wyjście:

Wyjaśnienie
Wyjście reprezentuje rzeczywiste dane obecne w ramce danych.
W drugim wyjściu partycja jest wykonywana na podstawie kolumny technologii2 i uporządkowana na podstawie kolumny wiekowej.

Łączne partycje: - 3

Partycja 1:
C# wystąpił trzy razy w pierwszej partycji. Wszystkie wartości w kolumnie wiekowej są różne. Stąd funkcja Gense_Rank () zwraca rangi 1,2 i 3 dla trzech wartości C#.

Partict 2:
HTML wystąpił dwa razy w pierwszej partycji. Wszystkie wartości w kolumnie wiekowej są różne. Stąd funkcja gense_rank () zwraca rangi 1 i 2 dla dwóch wartości HTML.

Partycja 3:
Testy miały miejsce pięć razy w partycji trzeciej.
Dla pierwszych trzech wartości testowych wartości wieku są takie same. Tak więc dla trzech, ranga 1 jest przypisywana.
Wartości wieku dla czwartego i piątego testowania są takie same, więc ranga 2 jest podawana obu.

Wniosek

Omówiliśmy partycjonowanie wierszy w Pyspark DataFrame i ustawienie rangi w każdej partycji za pomocą funkcji okna Gense_Rank (). Dense_Rank w Pyspark to funkcja okienna, która ustawia szeregi na rzędach w każdej partycji. Ranga rozpoczyna się od 1, a jeśli jakieś wartości są takie same w dwóch lub więcej rzędach, wówczas ta sama ranga zostanie przypisana.