Rangeringen starter fra 1, og hvis noen verdier er de samme i to eller flere rader, vil samme rang bli tildelt.
Her er verdiene fra kolonnen der vi spesifiserte kolonnen i Orderby (). Så basert på verdiene i denne kolonnen, sjekker Dense_rank () verdiene og tildeler rangeringsnummeret.
Det viktigste er at DENSE_RANK () ikke er tilgjengelig direkte. Vi må importere det fra Pyspark.SQL.funksjoner modul.
I Pyspark er det mulig å dele opp radene i DataFrame ved å bruke vindusfunksjonen. Det er tilgjengelig i Pyspark.SQL.vindu modul.
Fordelen med partisjon er å oppnå datakonsistens og gruppering. Etter å ha utført partisjonen, kan vi sette rekkene til radene i hver partisjon ved hjelp av Dense_rank () -funksjonen.
Det er mulig å skille ut radene i en dataaframe basert på verdiene i en bestemt kolonne. Så alle lignende verdier er satt til hver partisjon.
Vi må følge følgende trinn for å partisjonere og bruke DENSE_RANK på partisjonerte data:
Trinn:
La oss implementere koden.
Eksempel 1
Her vil vi lage en Pyspark DataFrame som har 5 kolonner: ['Subject_id', 'Name', 'Age', 'Technology1', 'Technology2'] med 10 rader og partisjon radene basert på Teknologi1 Bruke vindusfunksjonen.
Til slutt vil vi gi rekker til radene i alle partisjoner ved å legge til en ny kolonne som heter “Tett rang”.
Importer pysparkProduksjon:
Forklaring
Den første utgangen representerer de faktiske dataene som er til stede i DataFrame.
I den andre utgangen gjøres partisjonen basert på Teknologi1 kolonne.
Totalt partisjoner: - 4
Partisjon 1:
.Net skjedde to ganger i den første partisjonen. Verdiene i emn_id -kolonnen er de samme. Derfor returnerer den tette_rank () -funksjonen samme rangering-1 for begge .Netto verdier.
Partisjon 2:
Hadoop skjedde en gang i den andre partisjonen. Så rangeringen er 1.
Partisjon 3:
Oracle skjedde fire ganger i tredje partisjon.
For de to første orakelene er emne_idverdiene de samme, så for begge er rang-1 tildelt.
For det tredje orakelet er rangering 2.
For det siste Oracle er rangering 3.
Partisjon 4:
PHP forekom tre ganger i fjerde partisjon, og verdiene i emnet_id -kolonnen er de samme for alle. Derfor er rangering 1 for alle PHP.
Eksempel 2
Her, ved å bruke vindusfunksjonen, vil vi partisjonere radene basert på Technology2.
Til slutt vil vi rangere radene basert på emne_id -kolonnen i alle partisjoner ved å legge til en ny kolonne som heter “Tett rang”.
(Hvis du ikke opprettet Pyspark DataFrame, oppretter du det ved å bruke det første eksemplet.)
# Importer vindusfunksjonenProduksjon:
Forklaring
Utgangen representerer de faktiske dataene som er til stede i DataFrame.
I den andre utgangen gjøres partisjonen basert på Technology2 Kolonne og bestilt basert på emnet_id -kolonnen.
Totalt partisjoner: - 3
Partisjon 1:
C# oppstod tre ganger i første partisjon. Også de to første verdiene i emn_id -kolonnen er de samme. Derfor returnerer den tette_rank () -funksjonen samme rangering-1 for de to første C#, og for den tredje C#er rangering 2.
Partisjon 2:
HTML skjedde to ganger i den andre partisjonen, og emnet_idverdiene er forskjellige for disse to. Så rang-1 tildeles for den første HTML, og Rank-2 er tildelt for den andre.
Partisjon 3:
Testing skjedde fem ganger i tredje partisjon.
For de to første testene er emnet_idverdiene de samme, så for begge er rang-1 tildelt.
For den tredje testingen er rangering 2.
For den siste testingen var rangering 3.
Eksempel 3
Her, ved å bruke vindusfunksjonen, vil vi partisjonere radene basert på Technology2.
Til slutt vil vi rangere radene basert på alderssøylen i alle partisjoner ved å legge til en ny kolonne som heter “Tett rang”.
(Hvis du ikke opprettet Pyspark DataFrame, oppretter du det ved å bruke det første eksemplet.)
# Importer vindusfunksjonenProduksjon:
Forklaring
Utgang representerer de faktiske dataene som er til stede i DataFrame.
I den andre utgangen gjøres partisjonen basert på Technology2 -kolonnen og bestilt basert på alderskolonnen.
Totalt partisjoner: - 3
Partisjon 1:
C# oppstod tre ganger i første partisjon. Alle verdiene i alderssøylen er forskjellige. Derfor returnerer den tette_rank () -funksjonen rekkene 1,2 og 3 for tre C# -verdier.
Partisjon 2:
HTML skjedde to ganger i første partisjon. Alle verdiene i alderssøylen er forskjellige. Derfor returnerer Dense_rank () -funksjonen rekkene 1 og 2 for to HTML -verdier.
Partisjon 3:
Testing skjedde fem ganger i tredje partisjon.
For de tre første testverdiene er aldersverdiene de samme. Så for tre tildeles rang-1.
Aldersverdiene for fjerde og femte testing er de samme, så rang-2 er gitt til begge.
Konklusjon
Vi diskuterte partisjonering av radene i PySpark DataFrame og satte rangering i hver partisjon ved hjelp av DENSE_RANK () vindusfunksjonen. DENSE_RANK i Pyspark er en vindusfunksjon som setter rekkene til radene i hver partisjon. Rangeringen starter fra 1, og hvis noen verdier er de samme i to eller flere rader, vil samme rang bli tildelt.