Poenostavljen SQL: Izdelava modularnih in razumljivih poizvedb s CTE - KDnuggets

Poenostavljen SQL: Izdelava modularnih in razumljivih poizvedb s CTE – KDnuggets

Izvorno vozlišče: 3084928

Poenostavljen SQL: Izdelava modularnih in razumljivih poizvedb s CTE
Slika avtorja 
 

V svetu podatkov je SQL še vedno lingua franca za interakcijo z bazami podatkov. 

Še danes velja za enega najpogosteje uporabljenih jezikov za obravnavo podatkov in še vedno velja za obveznega za vsakega dobrega strokovnjaka za podatke. 

Vendar pa vsakdo, ki je delal s kompleksnimi poizvedbami SQL, ve, da se lahko hitro spremenijo v okorne zveri, ki jih je težko brati, vzdrževati ali ponovno uporabiti. 

Zato danes ni dovolj poznati SQL, moramo biti vešči izdelave poizvedb. In to je pravzaprav vrsta umetnosti. 

Tu pridejo v poštev skupni tabelni izrazi (CTE), ki umetnost pisanja poizvedb spremenijo v bolj strukturirano in dostopno obrt.

Zato skupaj odkrijmo, kako kodirati berljive in večkrat uporabne poizvedbe.

Če se sprašujete, kaj je CTE, ste na pravem članku. 

Izraz skupne tabele (CTE) je začasen nabor rezultatov, ki je definiran v obsegu izvajanja enega stavka SQL. 

 

So začasne tabele, na katere se je mogoče večkrat sklicevati znotraj ene same poizvedbe in se običajno uporabljajo za poenostavitev kompleksnih združevanj in podpoizvedb, s končnim ciljem povečanja berljivosti in organizacije kode SQL.

Zato so močno orodje za razčlenitev kompleksnih poizvedb na enostavnejše dele.

Tukaj je razlog, zakaj bi morali razmisliti o uporabi CTE:

  • Modularnost: Kompleksno logiko lahko razdelite na berljive dele.
  • Berljivost: Omogoča lažje razumevanje poteka poizvedb SQL.
  • Ponovna uporabnost: Na CTE se lahko sklicujete večkrat v eni sami poizvedbi, s čimer se izognete ponavljanju.

Čarovnija se začne s klavzulo WITH, ki je pred vašo glavno poizvedbo in definira različne časovne tabele (CTE) z vzdevki.

Zato moramo vedno začeti našo poizvedbo z ukazom "WITH", da začnemo definirati lastne CTE. Z uporabo CTE-jev lahko vsako kompleksno poizvedbo SQL razdelimo na: 

– Majhne časovne tabele, ki izračunavajo povezane spremenljivke. 

– Končna tabela, ki vzame le tiste spremenljivke, ki jih želimo kot izhod.

In prav to je MODULARNI pristop, ki ga želimo v vsaki kodi!

 

Poenostavljen SQL: Izdelava modularnih in razumljivih poizvedb s CTE
Slika avtorja
 

Torej nam uporaba CTE v naših poizvedbah omogoča:

– Izvedite časovno tabelo ENKRAT in se nanjo sklicujte VEČKRAT.

– Izboljšajte berljivost in poenostavite kompleksno logiko.

– Spodbujanje ponovne uporabe kode in modularne zasnove.

Da bi to bolje razumeli, lahko vzamemo praktičen primer seznamov Airbnb v Barceloni. 

Predstavljajte si, da želimo analizirati uspešnost seznamov po soseski in jo primerjati s splošno uspešnostjo mesta. Morali bi zbrati informacije o soseskah, posameznih stanovanjih, gostiteljih in cenah.

Za ponazoritev tega bomo uporabili InsideAirbnb tabela Barcelone, ki izgleda takole: 

 

Poenostavljen SQL: Izdelava modularnih in razumljivih poizvedb s CTE
 

Naiven pristop vas lahko pripelje do ustvarjanja ugnezdenih podpoizvedb, ki hitro postanejo vzdrževalna nočna mora, kot je ta:

Koda avtorja

Namesto tega lahko uporabimo CTE, da našo poizvedbo razdelimo na logične odseke – vsak definira kos sestavljanke.

  • Podatki o soseski: Ustvarite CTE za povzetek podatkov po soseski.
  • Podatki o stanovanju in gostitelju: Določite CTE za podrobnosti o apartmajih in gostiteljih.
  • Meritve za celotno mesto: Še en CTE za zbiranje statističnih podatkov na ravni mesta za primerjavo.
  • Končna montaža: Združite CTE v končnem stavku SELECT, da podatke predstavite kohezivno.

 

Poenostavljen SQL: Izdelava modularnih in razumljivih poizvedb s CTE
Slika avtorja
 

In na koncu bi dobili naslednjo poizvedbo:

Koda avtorja

Z uporabo CTE pretvorimo potencialno pošastno posamezno poizvedbo v organiziran niz podatkovnih modulov. Ta modularni pristop naredi kodo SQL bolj intuitivno in prilagodljivo spremembam. 

Če se pojavijo nove zahteve, lahko prilagodite ali dodate CTE brez prenove celotne poizvedbe.

Ko določite svoje CTE, jih lahko ponovno uporabite za izvedbo primerjalne analize. Na primer, če želite primerjati podatke o soseski z meritvami za celotno mesto, se lahko sklicujete na svoje CTE v nizu operacij JOIN. 

To ne le prihrani čas, ampak tudi ohranja vašo kodo učinkovito, saj vam ne bo treba dvakrat ponoviti iste poizvedbe!

CTE so dokaz načela, da majhna struktura veliko pripomore k programiranju. S sprejetjem CTE-jev lahko pišete jasnejše, bolj vzdržljive in ponovno uporabljive poizvedbe SQL. 

Poenostavi razvojni proces poizvedb in olajša sporočanje kompleksne logike iskanja podatkov drugim.

Ne pozabite, da naslednjič, ko se boste lotili pisanja ugnezdene podpoizvedbe z več združitvami, razmislite o tem, da bi jo razčlenili s CTE. 

Vaš prihodnji jaz – in vsi drugi, ki bi morda prebrali vašo kodo – vam bodo hvaležni.
 
 

Josep Ferrer je inženir analitike iz Barcelone. Diplomiral je iz fizike in trenutno dela na področju Data Science, ki se uporablja za mobilnost ljudi. Je ustvarjalec vsebin s krajšim delovnim časom, osredotočen na podatkovno znanost in tehnologijo. Lahko ga kontaktirate na LinkedIn, Twitter or srednje.

Časovni žig:

Več od KDnuggets