Taru Liitumine & SubQuery juhendaja koos näidetega

Lang L: none (table-of-contents):

Anonim

Selles õpetuses saate teada

  • Liituge päringutega
  • Erinevat tüüpi liitumised
  • Alampäringud
  • Kohandatud skriptide manustamine
  • UDF-id (kasutaja määratlevad funktsioonid)

Liituge päringutega:

Liitumispäringuid saab esitada kahel tarus oleval tabelil. Liitumiskontseptsioonide mõistmiseks siin loome kaks tabelit,

  • Sample_joins (seotud klientide üksikasjadega)
  • Sample_joins1 (seotud töötajate tehtud tellimuste üksikasjadega)

1. samm . Tabeli "sample_joins" loomine veergude nimedega, töötajate nimi, vanus, aadress ja palk

2. samm. Andmete laadimine ja kuvamine

Ülaltoodud ekraanipildilt

  1. Andmete laadimine saidile sample_joins saidilt Customers.txt
  2. Table_joins tabeli sisu kuvamine

3. samm . Tabeli sample_joins1 loomine ja andmete kuvamine, kuvamine

Ülaltoodud ekraanipildilt võime jälgida järgmist

  1. Tabeli sample_joins1 loomine veergudega Orderid, Date1, Id, Amount
  2. Andmete laadimine tellimuste.txt lehelt sample_joins1
  3. Valimis_liited1 olevate kirjete kuvamine

Edasi liikudes näeme erinevat tüüpi liitumisi, mida saab meie loodud tabelitel teostada, kuid enne peate liitumiste jaoks kaaluma järgmisi punkte.

Mõned punktid, mida ühendustes jälgida:

  • Liitumistes on lubatud ainult võrdõiguslikkuse liitumised
  • Ühes päringus saab ühendada rohkem kui kaks tabelit
  • LEFT, RIGHT, FULL OUTER liitub, et pakkuda rohkem kontrolli ON-lause üle, millele vastet pole
  • Liitumised pole kommutatiivsed
  • Liitumised on vasakpoolsed, sõltumata sellest, kas nad on vasak- või parempoolsed liitumised

Erinevat tüüpi liitumised

Liitumisi on nelja tüüpi, need on

  • Sisemine liitumine
  • Vasakpoolne välimine liitumine
  • Õige välimine liitumine
  • Täielik väline liitumine

Sisemine liitumine:

Mõlemale tabelile ühised kirjed saab see sisemine liitumine.

Ülaltoodud ekraanipildilt võime jälgida järgmist

  1. Siin teostame liitumispäringut, kasutades JOIN märksõna tabelite sample_joins ja sample_joins1 vahel, sobitades tingimust kui (c.Id = o.Id).
  2. Mõlemas tabelis on väljund, mis kuvab ühiseid kirjeid, kontrollides päringus mainitud tingimust

Päring:

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

Vasakpoolne välimine liitumine:

  • Taru päringukeel LEFT OUTER JOIN tagastab kõik vasakpoolse tabeli read, kuigi paremas tabelis pole vasteid
  • Kui ON-klausel vastab õiges tabelis nullile kirjele, tagastavad liitumised tulemuse kirje, kus parempoolse tabeli igas veerus on NULL

Ülaltoodud ekraanipildilt võime jälgida järgmist

  1. Siin teostame liitumispäringut, kasutades tabelite sample_joins ja sample_joins1 märksõna "LEFT OUTER JOIN" koos sobiva tingimusega (c.Id = o.Id).

    Näiteks siin kasutame viitena töötaja ID-d, see kontrollib, kas id on nii paremal kui ka vasakul tabelil levinud või mitte. See toimib sobitamise tingimusena.

  2. Mõlemas tabelis on väljund, mis kuvab ühiseid kirjeid, kontrollides päringus mainitud tingimust.

    NULL väärtused ülaltoodud väljundis on veerud, mille parempoolsest tabelist pole väärtusi, mis on sample_joins1

Päring:

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

Parem välimine liitumine:

  • Taru päringukeel RIGHT OUTER JOIN tagastab kõik parempoolse tabeli read, kuigi vasakul tabelil pole vasteid
  • Kui ON-klausel vastab vasakus tabelis nullile kirjele, tagastab liitumised ikkagi tulemuse kirje, kus NULL on vasakpoolse tabeli igas veerus
  • RIGHT liitumised tagastavad alati kirjed paremalt tabelilt ja sobivad kirjed vasakult tabelilt. Kui vasakpoolses tabelis pole veerule vastavaid väärtusi, tagastab see selles kohas NULL väärtused.

Ülaltoodud ekraanipildilt võime jälgida järgmist

  1. Siin teostame liitumispäringut, kasutades tabelite sample_joins ja sample_joins1 vahel märksõna "RIGHT OUTER JOIN" koos sobiva tingimusega (c.Id = o.Id).
  2. Mõlemas tabelis on väljund, mis kuvab ühiseid kirjeid, kontrollides päringus mainitud tingimust

Päring :

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

Täielik välimine liitumine:

See ühendab nii tabelite sample_joins kui sample_joins1 kirjed, põhinedes päringus antud JOIN-tingimusel.

See tagastab kõik tabelite kõik kirjed ja täidab veergude NULL Väärtused väärtused, mille mõlemal küljel pole ühtegi väärtust.

Ülaltoodud ekraanipildilt võime jälgida järgmist:

  1. Siin teostame liitumispäringut, kasutades tabelite sample_joins ja sample_joins1 märksõna "FULL OUTER JOIN" koos sobiva tingimusega (c.Id = o.Id).
  2. Väljund, mis kuvab kõik tabelis olevad kirjed, kontrollides päringus mainitud tingimust. Väljundi nullväärtused näitavad siin mõlema tabeli veergudes puuduvaid väärtusi.

Päring

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

Alampäringud:

Päringus olev päring on tuntud kui alampäring. Peamine päring sõltub alampäringute tagastatud väärtustest.

Alampäringuid saab liigitada kahte tüüpi

  • Alampäringud klauslis FROM
  • Alampäringud klauslis WHERE

Millal kasutada:

  • Konkreetse väärtuse saamiseks kahest veeruväärtusest erinevatest tabelitest
  • Ühe tabeli väärtuste sõltuvus teistest tabelitest
  • Ühe veeru väärtuste võrdlev kontrollimine teistest tabelitest

Süntaks:

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

Näide:

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

Siin on t1 ja t2 tabelite nimed. Värviline on tabelil t1 teostatud Subquery. Siin on a ja b veerud, mis lisatakse alampäringule ja määratakse col1-le. Veeru1 on veeru väärtus põhitabelis. See alampäringus olev veerg "col1" on samaväärne veeru col1 peamise tabelipäringuga.

Kohandatud skriptide manustamine:

Hive pakub kliendisõuetele vastavate kasutajaskriptide kirjutamise teostatavust. Kasutajad saavad kirjutada oma kaardi ja vähendada skripte vastavalt nõuetele. Neid nimetatakse manustatud kohandatud skriptideks. Kodeerimisloogika on määratletud kohandatud skriptides ja seda skripti saame kasutada ETL-i ajal.

Millal valida manustatud skriptid:

  • Kliendispetsiifiliste nõuete kohaselt peavad arendajad Hive'is skripte kirjutama ja juurutama
  • Kui taru sisseehitatud funktsioonid ei tööta konkreetsete domeeninõuete korral

Selle tarvis kasutab Hive nii kaardi kui ka reduktori skriptide manustamiseks klauslit TRANSFORM.

Selles manustatud kohandatud skriptides peame järgima järgmisi punkte

  • Veerud teisendatakse stringideks ja TAB piiritleb need enne kasutaja skriptile andmist
  • Kasutaja skripti standardset väljundit käsitletakse TAB-iga eraldatud stringiveergudena

Manustatud skripti näidis,

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;

Ülaltoodud skripti põhjal võime jälgida järgmist

See on ainult mõistmise skripti näidis

  • pv_users on kasutajate tabel, millel on map_script mainitud väljad nagu userid ja date
  • Reduktori skript on määratletud kuupäevade ja tabelite pv_users arvu järgi