Funkcja okna rangi Pyspark

Funkcja okna rangi Pyspark
Określenie numeru rang dla każdego wiersza PYSPARK jest najlepszym sposobem, aby łatwo było znaleźć wiersze w partycji.

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 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ę.

Rank () Funkcja okna

Ranga 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. Jednak w następnym rzędzie ranga będzie następującą liczbą licząc z remisowanych wierszy (rzędy o tej samej randze).

Tutaj wartości pochodzą z kolumny, w której określiliśmy kolumnę w środku Zamów przez(). Tak więc, w oparciu o wartości w tej kolumnie, ranga() czeki i przypisuje numer rang.

Najważniejsze jest to ranga() nie jest dostępne bezpośrednio. Musimy to zaimportować z Pyspark.SQL.Funkcje moduł.

Składnia do importu modułu

od Pyspark.SQL.Funkcje importowe rangi

W przeciwnym razie możemy to zrobić, aby zaimportować wszystkie metody z tego modułu.

od Pyspark.SQL.Funkcje importu *

Musimy wykonać poniższe kroki, aby wykonać partycję i zastosować rangę na partycjonowanych danych.

Kroki:

  1. Utwórz Pyspark DataFrame z podobnymi wartościami w co najmniej jednej kolumnie.
  2. Partycjonowanie 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ą.
Teraz za pomocą nad() funkcja w partycjonowanych rzędach, możesz użyć ranga() funkcjonować. Więc dodamy kolumnę do przechowywania numeru wiersza za pomocą withcoolumn () funkcjonować.
Składnia:

DataFrame_Obj.withColumn („Nazwa”, rank ().Over (partycja))

Tak więc nazwa określa nazwę wiersza tutaj, a DataFrame_Obj to nasza Pyspark DataFrame. Zaimplementujmy kod.

Przykład 1: Rank Technology1 według tematu_id

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 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
#Wportu na rangę Pyspark.SQL.Funkcje
od Pyspark.SQL.Funkcje importowe rangi
#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 wspomina o randze dla każdego wiersza w kolumnie rangi
DataFrame_Obj.z kolumny („rank”, 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 rank () zwraca tę samą rangę 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.
  • Dla pierwszych dwóch wyroczni wartości Temat_id są takie same. Tak więc dla obu rangi 1 jest przypisywane.
  • W przypadku trzeciego wyroczni ranga wynosi 3 (ranga 2 nie będzie istniały, ponieważ dla powyższych dwóch wyroczni podano 2 stopnie).
  • Dla ostatniego wyroczni ranga to 4.

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: Rank Technology2 według tematu_id

Tutaj podzielimy wiersze na podstawie Technologia2 Korzystanie z funkcji okna. Wreszcie, podamy szeregi do wierszy na podstawie kolumny tematu_id we wszystkich partycjach, dodając nową kolumnę o nazwie „RANGA".

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

# Zaimportuj funkcję okna
od Pyspark.SQL.okno importowe
#Wportu na rangę Pyspark.SQL.Funkcje
od Pyspark.SQL.Funkcje importowe rangi
#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 wspomina o randze dla każdego wiersza w kolumnie rangi
DataFrame_Obj.z kolumny („rank”, 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. Pierwsze dwie wartości w kolumnie tematycznej są takie same. Stąd funkcja rank () zwraca tę samą rangę 1 dla pierwszych dwóch c#, a dla trzeciego c#ranga to 3.

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 podmiotu są takie same. Tak więc dla obu rangi 1 jest przypisywane.
  • W trzecim teście ranga wynosi 3 (ranga 2 nie będzie istniały, ponieważ dla dwóch poprzednich testów podano 2 stopnie).
  • Do ostatnich testów ranga wynosiła 4.

Przykład 3: Rank Technology2 według wieku

Tutaj podzielimy wiersze na podstawie Technologia2 Korzystanie z funkcji okna.

Wreszcie, podamy szeregi wierszy na podstawie kolumny wiekowej we wszystkich partycjach, dodając nową kolumnę o nazwie „RANGA".

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

# Zaimportuj funkcję okna
od Pyspark.SQL.okno importowe
#Wportu na rangę Pyspark.SQL.Funkcje
od Pyspark.SQL.Funkcje importowe rangi
#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 wspomina o randze dla każdego wiersza w kolumnie rangi
DataFrame_Obj.z kolumny („rank”, 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 wiekowej.

Łączne partycje: 3

Partycja 1:
C# wystąpił trzy razy w pierwszej partycji. I wszystkie wartości w kolumnie wiekowej są różne. Stąd funkcja 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 rank () zwraca rangi 1 i 2 dla dwóch wartości HTML.

Partycja 3:

  • Testy miały miejsce pięć razy w partycji trzeciej.
  • W pierwszych trzech testach wartości wiekowe są takie same. Tak więc dla trzech ranga jest przypisywana.
  • W przypadku czwartego i piątego testu wartości wieku są takie same. Tak więc dla dwojga ranga jest przypisywana.

Wniosek

Omówiliśmy partycjonowanie wierszy w PYSPARK DATAFRAME i ustawienie rangi w każdej partycji za pomocą funkcji okna rank (). Ranga w Pyspark to funkcja okienna, która ustawia szeregi na rzędach w każdej partycji. Użyj tego polecenia podczas korzystania z tej funkcji od Pyspark.SQL.Funkcje importowe rangi.