Sissejuhatus tarutruppi Autor

Rühma järgi, nagu nimigi ütleb, rühmitab see kirje, mis vastab teatud kriteeriumidele. Selles artiklis vaatleme rühma HIVE järgi. Pärilikes RDBMS -ides, nagu MySQL, SQL jne, on rühmitamine üks vanimaid klausleid, mida kasutatakse. Nüüd on see leidnud oma koha sarnasel viisil failipõhises andmesalvestuses, mida tuntakse HIVE nime all.

Me teame, et taru on ületanud palju pärandlikke RDBMS-e tohutute andmete käsitlemisel, ilma et teenusepakkujad andmebaaside ja serverite hooldamiseks kulutaksid sentigi. Taru käsitlemiseks peame lihtsalt HDFS-i konfigureerima. Üldiselt liigume tabelite juurde, kuna lõppkasutaja saab oma struktuurist aru saada ja saab teha päringuid, kuna failid on nende jaoks kohmakad. Kuid me pidime seda tegema, makstes müüjatele serverite pakkumise ja meie andmete tabelite kujul hoidmise eest. Nii pakub taru kuluefektiivset mehhanismi, kus ta kasutab ära nii failipõhiste süsteemide (viis, kuidas taru oma andmeid salvestab) kui ka tabelite (tabelistruktuur lõppkasutajate jaoks päringute tegemiseks) eeliseid.

Rühmita

Rühma järgi kasutab andmete rühmitamiseks tarude tabelis määratletud veerge. Nagu ka teie, on ka tabel kõigi riikide osariikide linnade loendusandmetega, mille üks veerge on linna nimi ja osariigi nimi. Kui rühmitame riikide kaupa, rühmitatakse päringus kõik konkreetse osariigi erinevatest linnadest pärit andmed kokku ja neid saab hõlpsamini visualiseerida, enne kui rühma rakendati.

Taru rühma süntaks Autor

Grupi üldine süntaks lausete kaupa on järgmine:

SELECT (ALL | DISTINCT) select_expr, select_expr, …
FROM table_reference
(WHERE where_condition) (GROUP BY col_list) (HAVING having_condition) (ORDER BY col_list)) (LIMIT number);

või lihtsamate päringute jaoks

from Group By

Select department, count(*) from the university.college Group By department;

Siin osutab osakond kolledžitabeli ühele veerule, mis on ülikoolide andmebaasis ja selle väärtus on osakondades, näiteks kunst, matemaatika, insener jne, erinev. Nüüd vaatame mõnda näidet, kuidas rühmi näidata.

Olen grupi demonstreerimiseks loonud näidistetabeli deck_of_cards. Selle tabeli loomise avaldus on järgmine:

ülaltpoolt näete, et sellel on kolm stringi veergu - värv, ülikond ja pip. Lubage mul kirjutada päring, et grupeerida andmed nende värvi järgi ja saada nende arv.

select color, count(*) from deck_of_cards group by color;

Põhiliselt võtab Hive ülaltoodud päringu, et teisendada see kaardivähendamisprogrammiks, genereerides vastava java-koodi ja jar-faili ning seejärel käivitades. See protsess võib võtta natuke aega, kuid traditsiooniliste RDBMS-iga saab see kindlasti suurandmeid hallata. Ülaltoodud päringu täitmiseks vaadake allolevat ekraanipilti koos üksikasjaliku logiga.

näete, et MUST on 26 ja PUNANE 26.

nüüd rakendame rühmitust kahel veerul (värv ja ülikond ning rühmade arvu saamine) ja vaata tulemust allpool.

Select color, suit, count(*) from deck_of_cards group by color, suit

Põhimõtteliselt on Club, Spade kohal neli eraldiseisvat rühma, mille värv on must ja Diamond ning süda on punase värvi.

Tulemuse salvestamine rühmast teise tabelisse

Taru, nagu ka kõik muud RDBMS, pakub andmete sisestamise funktsiooni koos tabeli väljavõtetega. Vaatame tulemuse salvestamist valitud avaldisest rühma abil teise tabelisse. Lubage mul kasutada ülaltoodud päringut ise, kus olen rühmas kaks veergu kasutanud.

create table cards_group_by
as
select color, suit, count(*) from deck_of_cards
group by color, suit;

andke meile nüüd päringut loodud tabeli kohta andmete vaatamiseks ja kinnitamiseks.

Nüüd piirakem rühma tulemust, kasutades klauslit. Nagu üldises süntaksis näidatud, saame rühmale rakendada piiranguid, kasutades. Ma kasutan siin tabelit ordser_items ja selle ülesehitus on järgmine kirjeldavas avalduses.

hive (retail_db_ali)> describe order_items;
OK
order_item_id int
order_item_order_id int
order_item_product_id int
order_item_quantity tinyint
order_item_subtotal float
order_item_product_price float
Time taken: 0.387 seconds, Fetched: 6 row(s)

select order_item_id, order_item_order_id from order_items group by order_item_id, order_item_order_id having order_item_order_id=5;

näete ekraanipildi tulemusest, et meil on kirjeid ainult järjekorra_tem_order_id väärtusega 5.

Grupp koos kohtuasjaga

Vaadakem nüüd natuke keerulisi päringuid, mis hõlmavad CASE avaldusi grupiga. Me rakendame seda tabelisse order_items. Järgnevalt näeme, et võime kategoriseerida veerud, mis ei ole eraldiseisvad ja millele me ei saa rühma otse klausli alusel rakendada.

Select
case
when order_item_subtotal <=200 then "less_profit"
when order_item_subtotal <=300 then "avg_prof"
when order_item_subtotal<=500 then "good_prof"
when order_item_subtotal<=550 then "max_profit"
else 'corsed_treshold'
end
as order_profits,
count(*) from order_items
group by
case
when order_item_subtotal <=200 then "less_profit"
when order_item_subtotal <=300 then "avg_prof"
when order_item_subtotal<=500 then "good_prof"
when order_item_subtotal<=550 then "max_profit"
else 'corsed_treshold'
end;

Täitkem see tarus tulemuste saamiseks

Järeldus - tarude rühm poolt

nii et näeme, et oleme rühmitanud order_item_subtotal neljaks erinevaks kategooriaks (kui arvestada, et order_item_subtotal on koondamata veerg ja otsest gruppi selle järgi rakendada ei saa) ning oleme nad kokku rühmitanud ja ka nende loendamise väärtused, mis vastavad valitud avaldises määratletud vahemikule. Siin on lihtne reegel, kui veerg ei ole hargnev ja meie valitud avaldis on keeruline, siis mis iganes seal valitud avaldis on, mis peaks ka rühmas sisalduma lause avalduse järgi. Nii et nägime, kuidas kuulsat klausli RDBMS klauslite rühma saab tarus ilma piiranguteta rakendada. Seda saab rakendada lihtsate valitud avaldiste jaoks. Lausete liitmine ja filtreerimine, liitlausete ja ka CASE-lausete liitmine.

Soovitatavad artiklid

See on Hive Group By juhend. Siin arutame rühma süntaksi abil tarutrupi näiteid erinevate tingimuste ja teostusega. Lisateabe saamiseks võite vaadata ka järgmisi artikleid -

  1. Liitub tarus
  2. Mis on taru?
  3. Tarude arhitektuur
  4. Taru funktsioon
  5. Taru tellija
  6. Tarude paigaldamine
  7. MySQL-i 6 parimat liitumistüüpi koos näidetega

Kategooria: