Redshift Listagg -funksjon

Redshift Listagg -funksjon
Amazon Redshift er en serverløs datavarehustjeneste levert av AWS for å kjøre online analytisk prosessering (OLAP). Det er veldig effektivt og tillater å jobbe med komplekse spørsmål og big data -problemer ved å bruke sine parallelle beregningsnoder. Ettersom Redshift er designet på SQL-basert database, lar den brukerne bruke mange SQL-funksjoner og har også sine egne innebygde funksjoner. I denne artikkelen vil du bli opplyst om rødforskyvningen Listagg Funksjon for å sammenkoble oppføringene til forskjellige rader for å danne en streng.

Som navnet definerer, brukes denne funksjonen til å samle listen. Eller med mer enkle ord, brukes det til å sammenkoble oppføringer av forskjellige rader i en tabell for å danne en streng. Dette er sikkert vanskelig å fordøye teoretisk, så vi vil veilede deg mer om det ved å bruke visse eksempler. Men la oss først hoppe inn i syntaksen og utforske mer om det.

Syntaks for å bruke ListAGG -funksjonen

De Listagg Funksjon i rødforskyvning kan brukes ved å følge den gitte syntaks.

Velg ListAg (distinkt , ) innen gruppe (orden av ) fra

Ovennevnte syntaks viser de nødvendige attributtene for bruk av ListAGG -funksjonen.

  • Kolonnenavn: Kolonnen i rødforskyvningstabellen du skal bruke denne funksjonen.
  • Avgrensende: Dette er ganske enkelt listeseparatoren du vil bruke. I de fleste tilfeller brukes komma (,) eller semikolon (;) som en avgrensning. Dette er valgfritt å nevne, og som standard er verdien NULL.
  • Ordreliste: Dette brukes til å definere hvordan du vil sortere verdiene.
  • Bordnavn: Dette er bare databasetabellen du jobber med alt dette.

Bruke ListAGG -funksjonen

I dette avsnittet skal vi vise deg noen praktiske brukssaker og eksempler for å forklare kort hvordan ListAGG -funksjonen i rødforskyvning kan brukes til å få ønsket resultat.

BRUK-sak 1

For det første skal vi ta det enkleste eksemplet for å vise deg hvordan ListAGG -funksjonen i Redshift fungerer. Anta at du har en databasetabell som heter it_team Å ha en enkelt kolonne for navnene på folk som jobber i den avdelingen.

Nå vil du ganske enkelt presentere alle navnene i en enkelt strengform atskilt med komma. For dette formålet vil du bruke ListAg -funksjonen på følgende måte.

Velg ListAgg (navn, ',') fra organisasjonen.it_team

I utgangen vil du få alle verdiene fra kolonnen Navn i en enkelt rad i form av en streng.

Så du kan se hvor enkelt det er å bruke ListAGG -funksjonen og sammenkoble radene på et bord i rødskift.

BRUK-sak 2

Ta en sak der du vil finne ut alle teamlederne som jobber med forskjellige prosjekter i organisasjonen din. Det du har er et bord som heter dev_team som viser alle prosjektene og teamlederne i forskjellige kolonner.

Nå er det få tilfeller der en enkelt person jobber som teamleder for mer enn ett prosjekt, men du vil bare ta hvert navn bare en gang. For dette formålet må vi bruke DISTINKT Alternativ tilgjengelig med ListAGG -funksjonen for å ignorere de gjentatte verdiene.

Velg ListAGG (Distinct Team_lead, '|') som Team_Leaders
fra organisasjonen.dev_team

Du kan se at vi i utdataene har fått alle teamlederne våre, og det er heller ingen duplisering av navn, da vi har brukt DISTINKT alternativ. Videre kan du se at navnet på utgangskolonnen endres til lagledere. I stedet for standard kolonnenavnet for å forbedre forståelsen av dataene. Avgrenseren som brukes her er et rørsymbol for å skille navnene på lederne.

BRUK-sak 3

Anta at senioren din har tildelt deg en oppgave å finne ut prosjektene under hver teamleder og presentere dem i en enkelt streng. La oss igjen vurdere dev_team bord.

For et en-til-en-forhold mellom prosjekter og teamledere, ville denne oppgaven være enkel. I dette tilfellet kan det sees at det er enda mer enn ett prosjekt under noen teamledere. For dette må du opprette en ny Redshift -spørsmål som vist nedenfor.

Velg Team_lead,
listagg (prosjektnavn, ',') som prosjekter
fra organisasjonen.dev_team
Gruppe av Team_lead

I denne spørringen brukes den samlede funksjonen på prosjektnavn kolonne. Den har også en parameter som brukes til å gruppere utgangen fra funksjonen til lagleder kolonne.

Du kan se at vårt nødvendige mål oppnås og hvor effektivt det har ordnet alt utmerket. Fra dette kan du enkelt se hvilken teamleder som håndterer hvilke prosjekter i organisasjonen din.

BRUK-CASE 4

I alle de tidligere eksemplene sammenkaller vi bare radene fra en enkelt kolonne i tabellen. Men nå i dette eksemplet vil du se at vi til og med kan danne en enkelt streng fra verdier av flere rader og forskjellige kolonner.

Anta at mens du jobber i salgsavdelingen til et stort firma, får du tildelt en oppgave å analysere detaljene til kundene dine og alle prosjektene gitt av hver klient med fullføringstid for prosjektene. Alle disse dataene er til stede i en enkelt databasetabell som heter Project_Details har tre kolonner.

La oss lage en spørring for å oppnå ønsket utgang ved å bruke Redshift Listagg -funksjonen. Du bruker følgende spørsmål for dette for å få ønsket utgang:

plukke ut
Klientens navn,
listAGG (prosjekter || 'vil fullføre i' || fullføring_tid, ',')
innen gruppe (ordre etter klientnavn)
fra organisasjonen.Project_Details
gruppe etter klientnavn

ListAGG -funksjonen brukes på to kolonner prosjekter og fullføring_tid Bruke det doble rørsymbolet. På ett sted har vi brukt uttrykket vil fullføre i som en avgrenser og komma for den andre stillingen. Utgangen bestilles i stigende alfabetisk rekkefølge med hensyn til Klientens navn kolonne. Utgangen fra ovennevnte Redshift -spørringen vil være som følger:

Nå kan du se at vi har fått resultatene våre. Det viser hvert prosjekt med sin tidsvarighet og klienten som den tilhører.

Konklusjon

Redshift Listagg -funksjonen er veldig nyttig hvis du vil representere dataene fra flere rader i en kolonne i en enkelt rad. Funksjonen

[cc lang = ”python” bredde = ”100%” høyde = ”100%” slapp unna = ”True” Theme = ”Blackboard” Nowrap = ”0”] kan ta flere attributter og kan generere utgang i forskjellige former etter behov. Du kan lage enkle så vel som komplekse spørsmål ved hjelp av denne funksjonen.