Redshift any_value -funksjon

Redshift any_value -funksjon
Rødforskyvning Any_value er en funksjon som returnerer enhver verdi fra verdier av inngangsuttrykk på en nondeterministisk måte. Det tar flere verdier som input, velger tilfeldig noen av disse verdiene, og returnerer dem som svar. Hvis du gir nullverdier til hvilken som helst_value -funksjon, returnerer den en nullverdi som svar. I denne bloggen vil vi diskutere forskjellige brukssaker ved å bruke hvilken som helst_value -funksjon for å få tilfeldig utdata fra tabellene.

Syntaks av hvilken som helst_valuefunksjon

Følgende er syntaks for å bruke hvilken som helst_value -funksjonen i Amazon Redshift:

Any_value ([distinkt | alle] uttrykk)

Følgende er beskrivelsen av parametrene og alternativene som er gitt til Redshift Any_Value -funksjonen:

Distinkt | ALLE

Mens du utfører any_value -funksjonen, spesifiser enten distinkt eller alt for å få en tilfeldig utgang fra inngangsuttrykkene. Når vi spesifiserer DISTINKT nøkkelord, vil any_value -funksjonen fjerne duplikatverdier fra inngangsuttrykket og deretter returnere den tilfeldige verdien fra disse unike uttrykkene.

På den annen side, hvis ALLE Nøkkelord brukes, Any_Value -funksjonen vil returnere det tilfeldige uttrykket fra alle inngangsuttrykkene.

Uttrykk

Det er målkolonnen eller uttrykket som any_value -funksjonen fungerer på og får en verdi tilfeldig. Den kan inneholde dataene fra følgende datatyper:

  1. Dobbelt presisjon
  2. EKTE
  3. TIMETZ
  4. GEOGRAFI
  5. DESIMAL
  6. HllSKetch
  7. Geometri
  8. Heltall
  9. SmallInt
  10. Tidsstempel
  11. VARCHAR
  12. Timestamptz
  13. Bigint
  14. SUPER
  15. Varbyte
  16. Boolsk
  17. TID
  18. Røye
  19. DATO

Eksempler på hvilken som helst_valuefunksjon

Denne delen av artikkelen inneholder forskjellige eksempler på Redshift Any_Value -funksjonen for å utdype den grundig.

Sette opp miljøet

Før vi går sammen med forskjellige eksempler, må vi lage en tabell med forskjellige kolonner. Følgende spørsmål kan opprette en tabell i Redshift -klyngen med følgende attributter:

  • Brukernavn
  • Ansatt ID
  • passord
  • by
  • fødselsdato
Lag tabell user_data (
Ansatt_id heltall primærnøkkel,
Brukernavn varchar (200),
Passord varchar (200),
City Varchar (200),
Dato_of_birth Dato
)

Nå vil vi sette inn noen eksempeldata i bruker_data -tabellen i Redshift Cluster. Bruk Sett inn spørringen for å legge til dataene ved å bruke følgende spørring:

Sett inn i user_data (
Ansatt ID,
Brukernavn,
passord,
by,
fødselsdato
) Verdier (
1,
'Bruker-1',
'Pass-1',
'City-1',
'1997-02-27'
)

Kjør denne spørringen flere ganger ved å endre verdiene for å lagre dataene til flere brukere. Nå vil vi bruke any_value -funksjonen på denne tabellen.

Etter å ha satt inn dataene til flere brukere, bruk følgende spørsmål til å liste opp alle dataene:

Velg * fra User_Data;

Bruke hvilken som helst_value på heltalldatatype

I denne delen vil vi bruke hvilken som helst_value på heltalldatatypen eller Ansatt ID Kolonne av brukerdata Tabell vi opprettet i forrige seksjon.

For dette formålet kan følgende spørring brukes til å få ansattes ID for enhver ansatt:

Velg Any_Value (Employee_id) som Ansatt_id fra User_Data;

Den forrige spørringen vil velge hvilken som helst verdi fra Ansatt ID og vil returnere som en utdata av denne spørringen. Den forrige figuren returnerte ansattes_id for den tilfeldige brukeren fra brukerdata bord.

Bruke hvilken som helst_value på strengdatatype

Akkurat som om vi brukte any_value -funksjonen på heltalldatatypen, kan den også brukes på strengdatatypen. Når den brukes på strengdatatypen, velger Any_Value -funksjonen tilfeldig noen av dataene og returnerer den som svar.

For å få noen tilfeldig verdi fra Brukernavn (Streng) Felt, utfør følgende spørsmål på Redshift -klyngen:

Velg Any_Value (brukernavn) som brukernavn fra user_data;

Det vil returnere en tilfeldig Brukernavn inngang fra brukerdata bord.

Bruke hvilken som helst_value på datatype

Vi kan også få en tilfeldig verdi fra feltet som inneholder flere oppføringer av datatype. Når noen_value -funksjonen brukes på flere verdier av datatypen, velger den tilfeldig en oppføring og returnerer den som svar.

Å få en fødselsdato av en tilfeldig bruker fra brukerdata Tabell, utfør følgende spørsmål i Redshift -klyngen:

Velg Any_Value (date_of_birth) som date_of_birth fra user_data;

Denne spørringen vil få en tilfeldig fødselsdato fra bordet og returner det som svar.

Any_value -funksjon ved å bruke gruppe

Vi kan bruke hvilken som helst_value -funksjon for å forenkle og optimalisere GRUPPE AV uttalelser fremgang. Et vanlig spørsmål som oppstår med mange spørsmål er konsekvensen av spørsmål med en klausul av gruppen ved det kan bestå av bare uttrykk som brukes i gruppen av gruppen med eller en konsekvens av samlet funksjon.

Velg kunde.id, kunde.Navn, sum (bestillinger.verdi)
Fra kunde
Bli med på bestillinger på kunden.ID = bestillinger.Kunde ID
Gruppe av kunde.id, kunde.Navn;

I det forrige spørringsattributtet krever kundenavnet å være i gruppen etter klausul for involvering innenfor konsekvensen. Dette er uønsket og gjør beregningen komplisert og treg.

For å forbedre spørringen og gjøre det raskere å utføre, kan du implementere den forrige spørringen ved å bruke any_value -funksjonen.

Velg kunde.id, any_value (kunde.Navn), sum (bestillinger.verdi)
Fra kunde
Bli med på bestillinger på kunden.ID = bestillinger.Kunde ID
Gruppe av kunde.id;

Konklusjon

Any_value er en funksjon som tar flere verdier som input og returnerer en tilfeldig verdi fra disse inngangsverdiene. Den velger utgangen fra inngangsuttrykkene på en nondeterministisk måte. Hvis inngangsuttrykket til any_value -funksjonen ikke resulterer i noen rad, vil funksjonens utgang være en nullverdi. Denne bloggen beskriver de forskjellige brukssakene for å implementere hvilken som helst_value -funksjon for å få den tilfeldige utdata.