У овом упутству ћете научити-
- Придружите упите
- Различите врсте спајања
- Подупити
- Уграђивање прилагођених скрипти
- УДФ-ови (функције које дефинише корисник)
Придружите упите:
Упити за придруживање могу се изводити на две табеле присутне у Хиве-у. За јасно разумевање концепата удруживања овде креирамо две табеле,
- Сампле_јоинс (повезани са детаљима купаца)
- Сампле_јоинс1 (У вези са детаљима поруџбина које раде запослени)
Корак 1) Израда табеле „сампле_јоинс“ са именима колона ИД, именом, узрастом, адресом и платом запослених
Корак 2) Учитавање и приказивање података
Са горњег снимка екрана
- Учитавање података у сампле_јоинс из Цустомерс.ткт
- Приказивање садржаја табеле сампле_јоинс
Корак 3) Израда табеле сампле_јоинс1 и учитавање, приказивање података
Из горњег снимка екрана можемо уочити следеће
- Израда табеле сампле_јоинс1 са колонама Ордерид, Дате1, Ид, Амоунт
- Учитавање података у сампле_јоинс1 из ордерс.ткт
- Приказивање записа присутних у сампле_јоинс1
Крећући се напред видећемо различите типове спајања који се могу изводити на табелама које смо креирали, али пре тога морате узети у обзир следеће тачке за придруживања.
Неке тачке које треба обратити пажњу на Јоинс:
- У придруживањима су дозвољена само придруживања равноправности
- У исти упит може се спојити више од две табеле
- ЛЕВО, ДЕСНО, ПУНО ВАЊСКО спајање постоји како би се обезбедила већа контрола над ОН клаузулом за коју не постоји подударање
- Придруживања нису комутативна
- Придруживања су асоцијација лево, без обзира да ли су ЛЕВА или ДЕСНА придруживања
Различите врсте спајања
Придруживања су 4 типа, ово су
- Унутрашњи спој
- Лево спољно придруживање
- Право спољашње придруживање
- Потпуно спољашње придруживање
Унутарње придруживање:
Записи заједнички за обе табеле добиће ово Унутрашње придруживање.
Из горњег снимка екрана можемо уочити следеће
- Овде изводимо упит за придруживање помоћу кључне речи ЈОИН између табела сампле_јоинс и сампле_јоинс1 са подударним условом као (ц.Ид = о.Ид).
- Излаз који приказује уобичајене записе присутне у обе табеле провером стања наведеног у упиту
Упит:
SELECT c.Id, c.Name, c.Age, o.Amount FROM sample_joins c JOIN sample_joins1 o ON(c.Id=o.Id);
Лефт Оутер Јоин:
- Језик упита за кошнице ЛЕФТ ОУТЕР ЈОИН враћа све редове из леве табеле иако у десној табели нема подударања
- Ако се клаузула ОН подудара са нула записа у десној табели, обједињавања и даље враћају резултат у резултату са НУЛЛ у свакој колони из десне табеле
Из горњег снимка екрана можемо уочити следеће
- Овде изводимо упит за придруживање помоћу кључне речи „ЛЕФТ ОУТЕР ЈОИН“ између табела сампле_јоинс и сампле_јоинс1 са подударним условом као (ц.Ид = о.Ид).
На пример, овде користимо ид запосленика као референцу, он проверава да ли је ид уобичајен у десној, као и у левој табели или не. Делује као услов који се подудара.
- Излаз који приказује уобичајене записе присутне у обе табеле провером стања наведеног у упиту.
НУЛЛ вредности у горњем излазу су колоне без вредности из десне табеле која је сампле_јоинс1
Упит:
SELECT c.Id, c.Name, o.Amount, o.Date1 FROM sample_joins c LEFT OUTER JOIN sample_joins1 o ON(c.Id=o.Id)
Десно спољно придруживање:
- Језик упита за кошнице РИГХТ ОУТЕР ЈОИН враћа све редове из десне табеле иако у левој табели нема подударања
- Ако се клаузула ОН подудара са нула записа у левој табели, обједињавања и даље враћају резултат у резултату са НУЛЛ у свакој колони из леве табеле
- ДЕСНА придруживања увек враћају записе из десне табеле и подударне записе из леве табеле. Ако лева табела нема вредности које одговарају колони, она ће вратити НУЛЛ вредности на том месту.
Из горњег снимка екрана можемо уочити следеће
- Овде изводимо упит за придруживање помоћу кључне речи „РИГХТ ОУТЕР ЈОИН“ између табела сампле_јоинс и сампле_јоинс1 са подударним условом као (ц.Ид = о.Ид).
- Излаз који приказује уобичајене записе присутне у обе табеле провером стања наведеног у упиту
Упит :
SELECT c.Id, c.Name, o.Amount, o.Date1 FROM sample_joins c RIGHT OUTER JOIN sample_joins1 o ON(c.Id=o.Id)
Потпуно спољашње спајање:
Комбинује записе и табела сампле_јоинс и сампле_јоинс1 на основу услова ЈОИН датог у упиту.
Враћа све записе из обе табеле и попуњава НУЛЛ вредности за вредности колона које недостају са обе стране.
Из горњег снимка екрана можемо уочити следеће:
- Овде изводимо упит за придруживање помоћу кључне речи „ФУЛЛ ОУТЕР ЈОИН“ између табела сампле_јоинс и сампле_јоинс1 са подударним условом као (ц.Ид = о.Ид).
- Излаз који приказује све записе присутне у обе табеле провером стања наведеног у упиту. Нулл вредности у излазу овде означавају вредности које недостају из колона обе табеле.
Упит
SELECT c.Id, c.Name, o.Amount, o.Date1 FROM sample_joins c FULL OUTER JOIN sample_joins1 o ON(c.Id=o.Id)
Подупити:
Упит присутан унутар упита познат је као подупит. Главни упит ће зависити од вредности које враћају подупити.
Подупити се могу класификовати у две врсте
- Потупити у клаузули ФРОМ
- Потупити у клаузули ВХЕРЕ
Када користити:
- Да бисте добили одређену вредност комбиновану из две вредности колона из различитих табела
- Зависност вредности једне табеле од осталих табела
- Упоредна провера вредности једне колоне из других табела
Синтакса:
Subquery in FROM clauseSELECTFrom (SubQuery) Subquery in WHERE clauseSELECT From WHERE col1 IN (SubQuery);
Пример:
SELECT col1 FROM (SELECT a+b AS col1 FROM t1) t2
Овде су т1 и т2 имена табела. Обојени је Подупит изведен на табели т1. Овде су а и б колоне које се додају у подупит и додељују цол1. Цол1 је вредност колоне присутна у главној табели. Ова колона „цол1“ присутна у подупиту је еквивалентна упиту главне табеле у колони цол1.
Уграђивање прилагођених скрипти:
Хиве пружа могућност писања корисничких скрипти за потребе клијента. Корисници могу да напишу сопствену мапу и смање скрипте за потребе. Они се називају уграђеним прилагођеним скриптама. Логика кодирања је дефинисана у прилагођеним скриптама и ту скрипту можемо користити у ЕТЛ времену.
Када одабрати уграђене скрипте:
- У специфичним захтевима клијента програмери морају да пишу и примењују скрипте у Хиве-у
- Тамо где уграђене функције Хиве-а неће функционисати у складу са одређеним захтевима домена
За ово у Хиве-у користи клаузулу ТРАНСФОРМ за уграђивање скрипти мапе и редуктора.
У овом уграђеном прилагођеном скрипту, морамо да се придржавамо следећих тачака
- Колоне ће се трансформисати у стринг и раздвојити ТАБ-ом пре него што их дају корисничкој скрипти
- Стандардни излаз корисничке скрипте третират ће се као ступци низа одвојени ТАБ-ом
Пример уграђене скрипте,
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;
Из горње скрипте можемо уочити следеће
Ово је само пример скрипте за разумевање
- пв_усерс је табела корисника која има поља попут корисничког имена и датума као што је поменуто у мап_сцрипт
- Скрипта редуктора дефинисана датумом и бројем табела пв_усерс