Strops Pievienoties & SubQuery apmācība ar piemēriem

Satura rādītājs:

Anonim

Šajā apmācībā jūs uzzināsiet

  • Pievienojieties vaicājumiem
  • Dažāda veida savienojumi
  • Apakšvaicājumi
  • Iegult pielāgotus skriptus
  • UDF (lietotāja definētas funkcijas)

Pievienoties vaicājumiem:

Pievienošanās vaicājumus var veikt uz diviem galdiem, kas atrodas stropā. Lai saprastu pievienošanās jēdzienus šeit, mēs izveidojam divas tabulas,

  • Sample_joins (saistīts ar detalizētu informāciju par klientiem)
  • Sample_joins1 (saistīts ar darbinieku veikto pasūtījumu informāciju)

1. solis . Tabulas “sample_joins” izveidošana ar kolonnu nosaukumiem, darbinieku vārds, uzvārds, vecums, adrese un alga

2. solis) Datu ielāde un parādīšana

No iepriekš minētā ekrānuzņēmuma

  1. Notiek datu ielāde no sample.joins no klienta.txt
  2. Parāda galda_paraugu tabulas saturu

3. darbība . Tabulas sample_joins1 izveide un datu ielāde, parādīšana

No iepriekš minētā ekrānuzņēmuma mēs varam novērot sekojošo

  1. Tabulas sample_joins1 izveidošana ar kolonnām Orderid, Date1, Id, Summa
  2. Notiek datu ielāde paraugā_joins1 no order.txt
  3. Parāda ierakstus, kas atrodas izlasē_joins1

Pārejot uz priekšu, mēs redzēsim dažādus savienojumu veidus, kurus var veikt mūsu izveidotajās tabulās, bet pirms tam jums jāapsver šādi savienojumu punkti.

Daži punkti, kas jāievēro savienojumos:

  • Savienojumos ir atļauta tikai vienlīdzības pievienošanās
  • Tajā pašā vaicājumā var apvienot vairāk nekā divas tabulas
  • Pievienojas LEFT, RIGHT, FULL OUTER, lai nodrošinātu lielāku kontroli pār ON klauzulu, kurai nav atbilstības
  • Pievienošanās nav komutatīva
  • Pievienošanās ir kreisi asociēta neatkarīgi no tā, vai tā ir LEFT vai RIGHT pievienošanās

Dažāda veida savienojumi

Savienojumi ir 4 veidu, tādi ir

  • Iekšējais savienojums
  • Kreisais ārējais savienojums
  • Labais ārējais savienojums
  • Pilnīga ārējā pievienošanās

Iekšējā pievienošanās:

Abas tabulas kopīgos ierakstus iegūs šī iekšējā pievienošanās.

No iepriekš minētā ekrānuzņēmuma mēs varam novērot sekojošo

  1. Šeit mēs veicam pievienošanās vaicājumu, izmantojot JOIN atslēgvārdu starp tabulām sample_joins un sample_joins1 ar atbilstošu nosacījumu kā (c.Id = o.Id).
  2. Izvade, kurā tiek parādīti kopīgi ieraksti, atrodas abās tabulās, pārbaudot vaicājumā minēto nosacījumu

Vaicājums:

SELECT c.Id, c.Name, c.Age, o.Amount FROM sample_joins c JOIN sample_joins1 o ON(c.Id=o.Id);

Kreisais ārējais savienojums:

  • Stropa vaicājuma valoda LEFT OUTER JOIN atgriež visas rindas no kreisās tabulas, kaut arī labajā tabulā nav atbilstību
  • Ja klauzula ON klauzula atbilst nulles ierakstiem labajā tabulā, pievienošanās joprojām atgriež ierakstu rezultātā ar NULL katrā kolonnā no labās tabulas

No iepriekš minētā ekrānuzņēmuma mēs varam novērot sekojošo

  1. Šeit mēs veicam pievienošanās vaicājumu, izmantojot "LEFT OUTER JOIN" atslēgvārdu starp tabulām sample_joins un sample_joins1 ar atbilstošu nosacījumu kā (c.Id = o.Id).

    Piemēram, šeit mēs izmantojam darbinieka ID kā atsauci, tas pārbauda, ​​vai ID ir kopīgs gan labajā, gan kreisajā tabulā. Tas darbojas kā atbilstošs nosacījums.

  2. Izvade, kurā tiek parādīti kopīgi ieraksti, atrodas abās tabulās, pārbaudot vaicājumā minēto nosacījumu.

    NULL vērtības iepriekš minētajā izvadā ir kolonnas bez vērtībām no tabulas Right, kas ir sample_joins1

Vaicājums:

SELECT c.Id, c.Name, o.Amount, o.Date1 FROM sample_joins c LEFT OUTER JOIN sample_joins1 o ON(c.Id=o.Id)

Labais ārējais savienojums:

  • Stropa vaicājuma valoda RIGHT OUTER JOIN atgriež visas rindas no labās tabulas, pat ja kreisajā tabulā nav atbilstību
  • Ja klauzula ON klauzula atbilst nulles ierakstiem kreisajā tabulā, pievienošanās joprojām atgriež ierakstu rezultātā ar NULL katrā kreisās tabulas kolonnā
  • RIGHT pievienošanās vienmēr atgriež ierakstus no labās tabulas un saskaņotos ierakstus no kreisās tabulas. Ja kreisajā tabulā nav vērtību, kas atbilst kolonnai, tā šajā vietā atgriezīs NULL vērtības.

No iepriekš minētā ekrānuzņēmuma mēs varam novērot sekojošo

  1. Šeit mēs veicam pievienošanās vaicājumu, izmantojot atslēgvārdu “RIGHT OUTER JOIN” starp tabulām sample_joins un sample_joins1 ar atbilstošu nosacījumu kā (c.Id = o.Id).
  2. Izvade, kurā tiek parādīti kopīgi ieraksti, atrodas abās tabulās, pārbaudot vaicājumā minēto nosacījumu

Vaicājums :

 SELECT c.Id, c.Name, o.Amount, o.Date1 FROM sample_joins c RIGHT OUTER JOIN sample_joins1 o ON(c.Id=o.Id)

Pilnīgs ārējais savienojums:

Tas apvieno gan tabulas sample_joins, gan sample_joins1 ierakstus, pamatojoties uz vaicājumā norādīto JOIN nosacījumu.

Tas atgriež visus ierakstus no abām tabulām un aizpilda NULL vērtības kolonnās, kuru abās pusēs trūkst vērtību.

No iepriekš minētā ekrānuzņēmuma mēs varam novērot sekojošo:

  1. Šeit mēs veicam pievienošanās vaicājumu, izmantojot “FULL OUTER JOIN” atslēgvārdu starp tabulām sample_joins un sample_joins1 ar atbilstošu nosacījumu kā (c.Id = o.Id).
  2. Izeja, kurā tiek parādīti visi abos tabulā esošie ieraksti, pārbaudot vaicājumā minēto nosacījumu. Šeit izejas nulles vērtības norāda trūkstošās vērtības abu tabulu kolonnās.

Vaicājums

SELECT c.Id, c.Name, o.Amount, o.Date1 FROM sample_joins c FULL OUTER JOIN sample_joins1 o ON(c.Id=o.Id)

Apakšvaicājumi:

Vaicājumā esošais vaicājums ir pazīstams kā apakšvaicājums. Galvenais vaicājums būs atkarīgs no apakšvaicājumu atdotajām vērtībām.

Apakšvaicājumus var klasificēt divos veidos

  • Apakšvaicājumi klauzulā FROM
  • Apakšvaicājumi klauzulā WHERE

Kad lietot:

  • Lai iegūtu noteiktu vērtību, kas apvienota no divām kolonnu vērtībām no dažādām tabulām
  • Vienas tabulas vērtību atkarība no citām tabulām
  • Vienas kolonnas vērtību salīdzinoša pārbaude no citām tabulām

Sintakse:

Subquery in FROM clauseSELECT From (SubQuery) Subquery in WHERE clauseSELECT  FromWHERE col1 IN (SubQuery);

Piemērs:

SELECT col1 FROM (SELECT a+b AS col1 FROM t1) t2

Šeit t1 un t2 ir tabulu nosaukumi. Krāsainais ir Subquery, kas veikts uz tabulas t1. Šeit a un b ir kolonnas, kas tiek pievienotas apakšvaicājumā un piešķirtas kol1. Col1 ir kolonnas vērtība, kas atrodas galvenajā tabulā. Šī apakšvaicājumā esošā kolonna "col1" ir līdzvērtīga kolonnas kolonnas galvenajam tabulas vaicājumam.

Pielāgotu skriptu iegulšana:

Strops nodrošina iespēju rakstīt lietotāja skriptus klienta vajadzībām. Lietotāji var rakstīt paši savu karti un samazināt skriptu prasības. Tos sauc par iegultiem pielāgotiem skriptiem. Kodēšanas loģika ir definēta pielāgotajos skriptos, un mēs to varam izmantot ETL laikā.

Kad izvēlēties iegultos skriptus:

  • Atbilstoši klienta prasībām izstrādātājiem Hive ir jāraksta un jāizvieto skripti
  • Vietās, kur stropā iebūvētās funkcijas nedarbosies atbilstoši īpašām domēna prasībām

Šim nolūkam Hive tas izmanto klauzulu TRANSFORM, lai iegultu gan kartes, gan reduktora skriptus.

Šajā iegultajos pielāgotajos skriptos mums jāievēro šādi punkti

  • Kolonnas tiks pārveidotas par virknēm un norobežotas ar TAB, pirms tās tiek piešķirtas lietotāja skriptam
  • Lietotāja skripta standarta izvads tiks apstrādāts kā ar TAB atdalītas virkņu kolonnas

Iegultā skripta paraugs,

FROM (FROM pv_usersMAP pv_users.userid, pv_users.dateUSING 'map_script'AS dt, uidCLUSTER BY dt) map_outputINSERT OVERWRITE TABLE pv_users_reducedREDUCE map_output.dt, map_output.uidUSING 'reduce_script'AS date, count;

No iepriekš minētā skripta mēs varam novērot sekojošo

Tas ir tikai izpratnes skripta paraugs

  • pv_users ir lietotāju tabula, kurai ir tādi lauki kā userid un date, kā minēts map_script
  • Reduktora skripts, kas noteikts datumā un pv_users tabulu skaitā