SQL lihtsustatud: modulaarsete ja arusaadavate päringute koostamine CTE-dega – KDnuggets

SQL lihtsustatud: modulaarsete ja arusaadavate päringute koostamine CTE-dega – KDnuggets

Allikasõlm: 3084928

SQL lihtsustatud: Modulaarsete ja arusaadavate päringute koostamine CTE-dega
Pilt autorilt 
 

Andmemaailmas on SQL endiselt andmebaasidega suhtlemise lingua franca. 

Praegugi on see andmete käsitlemiseks üks enimkasutatavaid keeli ja seda peetakse endiselt iga hea andmeprofessionaali jaoks kohustuslikuks. 

Kuid igaüks, kes on töötanud keeruliste SQL-päringutega, teab, et need võivad kiiresti muutuda kohmakateks loomadeks – neid on raske lugeda, hooldada või taaskasutada. 

Seetõttu ei piisa tänapäeval SQL-i tundmisest, me peame olema osavad päringute loomisel. Ja see on tegelikult teatud tüüpi kunst. 

Siin tulevad mängu Common Table Expressions (CTE-d), mis muudavad päringu kirjutamise struktureeritumaks ja paremini ligipääsetavaks tööks.

Nii et avastame koos, kuidas kodeerida loetavaid ja korduvkasutatavaid päringuid.

Kui soovite teada, mis on CTE, olete õiges artiklis. 

Ühine tabeliavaldis (CTE) on ajutine tulemuskomplekt, mis on määratletud ühe SQL-lause täitmisulatuses. 

 

Need on ajutised tabelid, millele saab ühes päringus mitu korda viidata ja mida tavaliselt kasutatakse keerukate liitumiste ja alampäringute lihtsustamiseks, eesmärgiga suurendada SQL-koodi loetavust ja korraldust.

Seega on need võimas tööriist keerukate päringute jagamiseks lihtsamateks osadeks.

Siin on põhjus, miks peaksite kaaluma CTE-de kasutamist:

  • Modulaarsus: Saate jagada keeruka loogika loetavateks tükkideks.
  • Loetavus: See muudab SQL-päringute voo mõistmise lihtsamaks.
  • Korduvkasutatavus: CTE-dele saab ühes päringus viidata mitu korda, vältides kordamist.

Maagia algab WITH-klausliga, mis eelneb teie põhipäringule ja määratleb erinevad ajalised tabelid (CTE-d) varjunimedega.

Seetõttu peame alati alustama oma päringut käsuga "WITH", et alustada oma CTE-de määratlemist. CTE-de abil saame kõik keerulised SQL-päringud jagada järgmisteks osadeks: 

– Väikesed ajatabelid, mis arvutavad seotud muutujaid. 

– Lõpptabel, mis võtab väljundina ainult need muutujad, mida me tahame.

Ja see on just MODULARNE lähenemine, mida me igas koodis tahame!

 

SQL lihtsustatud: Modulaarsete ja arusaadavate päringute koostamine CTE-dega
Pilt autorilt
 

Seega võimaldab CTE-de kasutamine meie päringutes:

– Käivitage ajutine tabel ÜKS kord ja viitage sellele MITU korda.

– Parandage loetavust ja lihtsustage keerulist loogikat.

– Edendada koodi korduvkasutatavust ja modulaarset disaini.

Selle paremaks mõistmiseks võime võtta praktilise näite Airbnb kirjetest Barcelonas. 

Kujutage ette, et tahame analüüsida kirjete toimivust linnaosade kaupa ja võrrelda seda linna üldise toimivusega. Peaksite koguma teavet linnaosade, üksikute korterite, hostide ja hindade kohta.

Selle näitena kasutame InsideAirbnb Barcelona tabel, mis näeb välja järgmine: 

 

SQL lihtsustatud: Modulaarsete ja arusaadavate päringute koostamine CTE-dega
 

Naiivne lähenemine võib viia pesastatud alampäringute loomiseni, mis muutuvad kiiresti hoolduse õudusunenäoks, näiteks järgmiselt:

Autori kood

Selle asemel saame kasutada CTE-sid, et jagada meie päring loogilisteks osadeks, millest igaüks määratleb pusletüki.

  • Naabruskonna andmed: Andmete naabruskonna kaupa kokkuvõtmiseks looge CTE.
  • Teave korteri ja peremehe kohta: Korterite ja hostide üksikasjade saamiseks määrake CTE-d.
  • Ülelinnalised mõõdikud: Veel üks CTE, et koguda võrdluseks linnatasandi statistikat.
  • Lõplik kokkupanek: Andmete ühtseks esitamiseks ühendage CTE-d lõplikus SELECT-lauses.

 

SQL lihtsustatud: Modulaarsete ja arusaadavate päringute koostamine CTE-dega
Pilt autorilt
 

Ja lõpuks saame järgmise päringu:

Autori kood

CTE-sid kasutades muudame potentsiaalselt koletu ühe päringu organiseeritud andmemooduliteks. See modulaarne lähenemisviis muudab SQL-koodi intuitiivsemaks ja muudatustega kohandatavamaks. 

Kui ilmnevad uued nõuded, saate CTE-sid kohandada või lisada ilma kogu päringut ümber tegemata.

Kui olete oma CTE-d loonud, saate neid uuesti kasutada võrdleva analüüsi tegemiseks. Näiteks kui soovite võrrelda naabruskonna andmeid ülelinnaliste mõõdikutega, saate viidata oma CTE-dele JOIN-toimingute seerias. 

See mitte ainult ei säästa aega, vaid hoiab teie koodi ka tõhusana, kuna te ei pea sama päringut kaks korda kordama!

CTE-d annavad tunnistust põhimõttest, et väike struktuur läheb programmeerimisel kaugele. CTE-de kasutuselevõtmisega saate kirjutada selgemaid, paremini hooldatavaid ja korduvkasutatavaid SQL-päringuid. 

See muudab päringu arendusprotsessi sujuvamaks ja muudab keeruka andmeotsinguloogika teistele edastamise lihtsamaks.

Pidage meeles, et järgmine kord, kui hakkate kirjutama mitme ühendusega pesastatud alampäringu koletist, kaaluge selle tükeldamist CTE-dega. 

Teie tulevane mina ja kõik teised, kes võivad teie koodi lugeda, tänavad teid.
 
 

Josep Ferrer on Barcelona analüütikainsener. Ta on lõpetanud füüsika inseneri eriala ja töötab praegu andmeteaduse valdkonnas, mida rakendatakse inimeste liikuvuse valdkonnas. Ta on osalise tööajaga sisulooja, kes keskendub andmeteadusele ja -tehnoloogiale. Saate temaga ühendust võtta LinkedIn, puperdama or Keskmine.

Ajatempel:

Veel alates KDnuggets