Kuidas harjutada SQL-i ja Pythoni koos realistlike probleemidega

Viimane uuendus: 05/12/2026
  • Kasutage SQLite'i ja Pythoni lokaalselt, et luua realistlik SQL-i harjutuskeskkond ilma täieliku andmeladu või Sparki klastrita.
  • Esmalt omanda SQL-i põhioskused: filtreerimine WHERE abil, mitme tabeli ühendamine ning andmete koondamine GROUP BY ja HAVING abil.
  • Normaliseeri skeemid mitmeks tabeliks primaar- ja võõrvõtmete abil ning seejärel kasuta JOIN-võtmeid seoste taastamiseks oma analüüsides.
  • Kombineeri kohalikku praktikat interaktiivsete SQL-platvormidega, et harjutada intervjuustiilis küsimusi ja taastada enesekindlus kaasaegsete andmetöötlustööriistade abil.

SQL ja Pythoni harjutusülesanded

Kui proovite pärast mõneaastast pausi SQL-i ja Pythoni juurde tagasi pöörduda, on täiesti normaalne tunda end eksinuna. – eriti kui teie eelmine roll kasutas patenteeritud tööriistu ja mugavaid Databricksi märkmikke, mida teil enam pole. Tänapäevased töökuulutused, mis nõuavad Pythoni, SQL-i ja isegi PySparki, võivad tunduda hirmutavad, kui iga juhend algab millegagi, näiteks „laadige oma nõuete andmestik oma andmelattu” ja te mõtlete: „Just seda mul pole.”

Hea uudis on see, et saate suurema osa sellest õpikogemusest oma sülearvutis uuesti luua. kasutades tasuta tööriistu, väikeseid näidisandmestikke ja struktureeritud harjutusülesannete komplekti. Selles juhendis selgitame lihtsas keeles, kuidas luua realistlikku kohalikku keskkonda, kuidas SQL töötab (alates põhipäringutest kuni JOIN-ide ja agregeerimiseni) ning kuidas neid SQL-päringuid Pythoni keelde pakkida, et saaksite harjutada täpselt selliseid ülesandeid, millega tänapäevastes andmetöödes kokku puutute.

Lihtsa lokaalse harjutuskeskkonna loomine SQLite'i ja Pythoni abil

SQL-i ja Pythoni harjutamiseks pole vaja täisväärtuslikku andmeladu ega Sparki klastritÕppimiseks ja intervjuudeks ettevalmistamiseks on kerge manustatud andmebaas, näiteks SQLite, enam kui piisav. SQLite salvestab kõik andmed ühte faili kettale, mis teeb selle ideaalseks mänguasjaprojektide, prototüüpide ja hariduslike harjutuste jaoks.

Kontseptuaalselt näeb SQLite'i andmebaas välja nagu mitme lehega arvutustabeliga leht on tabel, iga rida on rekordja iga veerg on väliRelatsioonandmebaaside žargoonis nimetatakse tabeleid mõnikord „relatsioonideks“, ridu „tuple’ideks“ ja veerge „atribuutideks“, kuid praktilise töö jaoks võite rahule jääda igapäevaste terminite „tabel“, „rida“ ja „veerg“ juurde.

Pythonil on sisseehitatud SQLite draiver nimega sqlite3, mis tähendab, et te ei pea eraldi andmebaasiserverit installima. Teie Pythoni skript avab ühenduse .sqlite fail (luues selle, kui seda pole olemas), hankige kursor objekt (väga sarnane failikäepidemega) ja seejärel saata SQL-käsud selle kursori kaudu, kasutades execute(). Vaata meie SQLite SELECT ja WHERE Juhend andmete lugemise ja filtreerimise praktiliste näidete kohta.

SQL ja Pythoni probleemid
Seotud artikkel:
Sagedased SQL-i ja Pythoni probleemid ja kuidas nendega toime tulla

Kuigi see artikkel keskendub SQLite'i juhtimisele Pythonist, on olemas ka mugav GUI-tööriist nimega „Andmebaasi brauser SQLite'i jaoks”. (mõnikord levitatakse seda kui DB Browser for SQLite). Selle abil saate tabeleid visuaalselt kontrollida, käsitsi mõnda rida sisestada või redigeerida ja käivitada lihtsaid SQL-lauseid. See on nagu andmebaasifailide tekstiredaktor: kiired käsitsi muudatused on graafilises kasutajaliideses lihtsamad, kuid kõik korduv või keeruline on Pythonis skriptitud.

Relatsioonandmebaasid on jäigemad kui Pythoni loendid või dikteeringud: nad nõuavad määratletud skeemiTabeli loomisel tuleb deklareerida veerunimed ja oodatavad andmetüübid (tekst, täisarv, kuupäev/kellaaeg jne). Seejärel salvestab ja indekseerib SQLite andmeid viisil, mis tagab otsingute efektiivsuse isegi siis, kui andmestik kasvab mälumahust suuremaks. Praktiliste õppeteede ja näidete saamiseks vaadake SQL-andmete analüüs.

Tabelite loomine ja andmete sisestamine SQL-i ja Pythoni abil

Harjutamise alustamiseks vajate kõigepealt tabelit – mõelge sellest kui oma andmete kuju kujundamisest.Oletame, et vajate pisikest muusikakogu tabelit. Kasutades Pythoni sqlite3 mooduliga saate luua ühenduse andmebaasifailiga, kustutada tabeli vanad versioonid, kui need on olemas, ja seejärel luua uue tabeli selgelt trükitud veergudega.

Nii näeb see voog Pythonis kontseptuaalselt välja: sa helistad sqlite3.connect('music.sqlite') andmebaasifaili avamiseks või loomiseks ja seejärel kutsuge conn.cursor() kursori saamiseks. Selle kursori kaudu saate käivitada SQL-käske, näiteks DROP TABLE IF EXISTS Songs eelmise skeemi kustutamiseks, millele järgneb CREATE TABLE Songs (title TEXT, plays INTEGER) kahe veeruga uue tabeli määratlemiseks.

Kui tabel on loodud, lülitute DDL-ilt (andmete definitsioonikeel) DML-ile (andmete manipuleerimise keel) järgmiselt: INSERT avaldusedPythonis tuleks alati kasutada parameetritega päringuid: write INSERT INTO Songs (title, plays) VALUES (?, ?) ja edastage selline tuupel nagu ('Thunderstruck', 20) teise argumendina execute()Küsimärgid on kohatäited, mille Python ohutult asendab, aidates teil vältida SQL-i süstimise probleeme ja vigade tsiteerimist.

Pärast lisamiste või värskenduste tegemist peate helistama conn.commit() muudatuste kettale salvestamiseksKuni kinnitamiseni salvestatakse toimingud ainult tehingute puhvrisse. See erineb lihtsast failikirjutamisest ja on üks peamisi harjumusi, mida varakult luua: päring, muutmine ja seejärel kinnitamine.

Andmete tagasilugemiseks kasutate a SELECT lause ja itereeri kursori kohal. Näiteks, SELECT title, plays FROM Songs voogedastab iga rida Pythoni tuplena, näiteks ('Thunderstruck', 20)Kursor ei lae kõiki tulemusi korraga; selle asemel hangib see ridu laiskalt, mis on kasulik siis, kui tegemist on suuremate andmekogumitega.

SQL-päringu põhielemendid ja filtreerimine WHERE abil

Iga SQL-päring põhineb väikesel hulgal klauslitel, mis esinevad standardses järjekorras.: SELECT, FROM, WHERE, GROUP BY, HAVINGja ORDER BYVähemalt peate määrama, milliseid veerge soovite (SELECT) ja millisest tabelist (FROM). Seejärel täpsustavad, koondavad, filtreerivad koondatud tulemusi ja sorteerivad valikulised klauslid väljundit.

. WHERE klausel filtreerib ridu enne mis tahes rühmitamist või liitmistNumbriliste veergude puhul saate kasutada võrdlusoperaatoreid, näiteks =, != (Või <>), >, <, >=, <=Tekstiveerud toetavad neid pluss mustrite sobitamist LIKE ja liikmelisuse kontrollid läbi INKuupäeva/kellaaja väärtused toetavad samu relatsioonilisi võrdlusi ja sageli näete vahemikke, mis on väljendatud kui BETWEEN.

Nullpunktide käsitlemine SQL-is on piisavalt omapärane, et see väärib eraldi tähelepanu.Regulaarsed võrdlused, näiteks = ja != ära käitu nii, nagu võiks oodata NULL, seega SQL pakub IS NULL ja IS NOT NULL puuduvate väärtuste kontrollimiseks. Boole'i ​​veerud töötavad tavaliselt koos = ja !=, aga sul on ikkagi vaja IS NULL kui tõeväärtus ise võib puududa.

Mitme tingimuse kombineerimisel pidage meeles, et AND ja OR järgige eelistusreegleidKui sa kirjutad age < 5 OR age > 10 AND breed = 'Ragdoll', SQL hindab AND esiteks. Väljendamaks „alla 5-aastased või üle 10-aastased ragdoll-kassid”, tuleks kasutada sulgusid: (age < 5 OR age > 10) AND breed = 'Ragdoll'Nende loogiliste kombinatsioonidega harjumine on reaalse analüütikatöö jaoks ülioluline.

Mustri sobitamine koos LIKE võimaldab otsida stringe, mis algavad, lõpevad või sisaldavad teatud fragmenteProtsendimärk % on mis tahes tähemärkide jada metamärk, seega breed LIKE 'R%' leiab tõuge, mis algavad tähega "R", fav_toy LIKE 'ball%' leiab mänguasju, mille nimi algab sõnaga "pall", ja coloration LIKE '%m' leiab värvimustrid, mis lõpevad tähega „m“. Seotud AND/OR, saab sellest võimas teksti filtreerimise tööriistakomplekt.

Ühe tabeli päringute harjutamine mänguasjaandmestikuga

Kasulik viis lihasmälu arendamiseks on fikseerida peas väike skeem ja lahendada selle põhjal palju päringuid.. Kujutage ette a cat tabel selliste veergudega nagu id, name, breed, coloration, age, sexja fav_toySee annab sulle piisavalt valikuvõimalusi – teksti, numbreid, lihtsaid kategooriaid –, et harjutada enamikku põhilisi päringumustreid.

Boole'i ​​tüüpi kontrollide puhul filtreeritakse sageli ühe veeru järgi ja seejärel lisatakse lisatingimusi.„Igavate” isaste kasside, kellel pole lemmikmänguasja registreeritud, loetlemiseks valige name kus sex = 'M' ja fav_toy IS NULLSee illustreerib, kuidas nullkontrollid toimivad koos otseste võrdlustega, et isoleerida konkreetne ridade alamhulk.

Konkreetsete tõugude sihtimiseks või nende välistamiseks ühendate võrdsuse loogilise eitusega.Ainult teatud vanuses ragdoll-kasside valimine kasutab breed = 'Ragdoll'; välja arvatud pärslased ja siiami kassid, võivad need välja näha sellised breed NOT LIKE 'Persian' AND breed NOT LIKE 'Siamese'Kuigi mõned andmebaasid toetavad NOT IN ('Persian', 'Siamese'), aitab selgesõnalise mustri harjutamine kinnistada teie arusaamist NOT ja LIKE.

Harjutused nagu „emased kassid, kes armastavad kiusamismänguasju ja ei ole pärsia ega siiami kassid” sunnivad teid tekstifiltreid, võrdsust ja loogikaoperaatoreid segama.Sa valiksid id, name, breed, coloration ja piirake ridu, kasutades sex = 'F', fav_toy = 'teaser'ja liittingimus, mis välistab soovimatud tõud. Sulgudele tähelepanu pööramine tagab, et kõiki alamtingimusi rakendatakse kavandatud kombinatsioonis.

Kui oled nende näidetega toores SQL-is harjunud, rakenda need uuesti Pythoni kaudu parameetriliste päringute abil.Kirjutage lühikesi tekste, mis küsivad tõu, minimaalse vanuse või mänguasja tüübi kohta. input(), ühendage need WHERE klausleid ja prindi tulemused välja. See on täpselt see sild päringute kirjutamise ja reaalse rakenduskoodi vahel, mida paljud nooremad andmerollid ootavad.

SQL JOIN-ide mõistmine ja harjutamine

Niipea kui mänguasjade probleemidest üle saad, liitud pidevalt mitme lauagaJOIN-ide abil ühendate omavahel seotud andmekogumeid: kliente tellimustega, kunstnikke kunstiteostega, mänge ettevõtetega jne. SQL-is kirjeldatakse, millised veerud peaksid tabelite vahel kokku sobima, ja andmebaasimootor ühendab read ühendatud tulemuste komplektiks.

Intervjuudel ja päris projektides kohtate nelja peamist liitumistüüpi.: INNER JOIN (sageli kirjutatakse lihtsalt JOIN), LEFT JOIN, RIGHT JOINja FULL OUTER JOINSisemine ühendus tagastab ainult read, kus mõlemal tabelil on vastavad võtmed; vasakpoolne ühendus säilitab kõik vasakpoolse tabeli read, täites NULLs, kui paremal tabelil pole vastet; parempoolne ühendus teeb sümmeetrilise asja; ja täielik välimine ühendus tagastab iga rea ​​mõlemalt poolt, sobitades võimaluse korral ja kasutades NULL kus mitte.

Mõtlema LEFT JOIN ja RIGHT JOIN kui „usalda seda poolt rohkem” operatsioonidVasakpoolse liitumise korral on vasakpoolne tabel peamine tõeallikas: iga selle rida ilmub väljundis vähemalt üks kord, isegi kui parempoolne tabel ei panusta midagi. Täieliku liitumise korral pole kumbki pool privilegeeritud – lihtsalt ühendate kõik mõlema tabeli võtmed ja joondate need kohtades, kus need kattuvad.

Mitme tabeli päringute loetavuse tagamiseks pange oma tabelitele alati alias.Kirjutamise asemel SELECT artist.name korduvalt, kirjuta FROM artist AS a ja seejärel viidake veergudele järgmiselt a.name. Samamoodi piece_of_art võib saada poaja museum võib olla mKui teie päring kasvab kolme või enama liitumiseni, on head aliased selguse ja kaose erinevus.

Klassikaline treeningstruktuur kasutab kolme tabelit: artist, museumja piece_of_art. artist laud võiks mahutada id, name, birth_year, death_year ja põhivaldkond nagu akvarell või skulptuur. museum lauakauplused id, name ja country. piece_of_art lauahoidjad id, name, artist_id ja museum_idNeed kaks viimast veergu on võõrvõtmed, mis seovad iga kunstiteose selle looja ja asukohaga.

Selle skeemi abil saate harjutada sisemisi ühendusi, vasakpoolseid ühendusi ja tingimuslikke filtreid.Näiteks pärast 1800. aastat sündinud ja üle 50 aasta elanud kunstnike loetlemiseks koos nende teoste nimedega peaksite liituma artist ja piece_of_art on artist.id = piece_of_art.artist_id ja seejärel filtreerige koos death_year - birth_year > 50 ja birth_year > 1800. Valitud veergude alias artist_name ja piece_name selguse huvides.

Kõikide kunstiteoste nägemiseks koos muuseumide nimede ja riikidega – sh „kadunud” teosed, millel puudub muuseumiregistri number – sa kasutaksid a-d LEFT JOIN Rohkem kui piece_of_art et museum on museum_idNii ilmuvad tulemuses ikkagi ka kunstiteosed, millega pole seotud muuseumi, koos NULL muuseumi veergudel. Ridade filtreerimine, kus artist_id IS NULL võimaldab teil tuvastada tundmatute kunstnike teoseid, ühendades need samal ajal muuseumidega, kus need asuvad.

Edasijõudnute harjutuste puhul peate liituma korraga kolme lauagaIga kunstiteose loetlemiseks koos nii kunstniku kui ka muuseumi nimega peaksite liituma museum et piece_of_art on museum.id = piece_of_art.museum_id, siis liitu artist on artist.id = piece_of_art.artist_idKasutades tavalist JOIN (sisemine liitmine) jätab tahtlikult välja kunstiteosed, millel puudub kas kunstnik või muuseum, andes aimu, kuidas liitmise tüüp mõjutab ridade arvu.

Agregeerimine, GROUP BY ja HAVING praktikas

Kui andmeid on võimalik hankida ja ühendada, on järgmine suur oskus nende kokkuvõtmine.Koondamise funktsioonid nagu SUM(), AVG(), COUNT(), MAX()ja MIN() arvutada mõõdikuid ridade komplektide põhjal. GROUP BY jagab teie andmestiku rühmadesse ja rakendab neid funktsioone iga rühma sees – näiteks üks rühm aasta, ettevõtte või kunstniku kohta. Kui eelistate nende kontseptsioonide harjutamiseks struktureeritud kursusi, vaadake põhjalik SQL-kursus.

Kujutage ette lihtsat sales_table veergudega year, monthja salesLihtne SELECT SUM(sales) AS total_sales FROM sales_table annab teile kõigi ridade kogusumma. GROUP BY year muudab küsimust: nüüd küsite kogumüügi kohta aastas, mitte ühte üldarvu.

Põhireegel on, et iga teie mittekoondatud veerg SELECT peab ilmuma GROUP BY. Kui valite year ja SUM(sales), grupeerite te järgi year. Kui valite year ja month koos agregaatidega, seejärel grupeerite mõlema järgi year ja monthKontseptuaalselt defineerivad rühmad rühmitatud veergude erinevad kombinatsioonid.

WHERE ja HAVING on mõlemad filtrid, kuid toimivad erinevatel etappidel. WHERE filtreerib toored read enne mis tahes rühmitamist või liitmist. HAVING filtreerib rühmitatud tulemusi koondavalduste abil. Näiteks võite WHERE production_year BETWEEN 2000 AND 2009 ja siis HAVING SUM(revenue) > 4000000 et alles hoida ainult ettevõtteid, mille „head mängud” genereerisid üle nelja miljoni tulu.

Realistlikum harjutusskeem on games tabel veergudega nagu id, title, company, type, production_year, system, production_cost, revenueja ratingSelle ühe tabeli abil saate harjutada keskmistamist, loendamise, summeerimise, rühmitamise ja järjestamise harjutusi – analüütika SQL-i põhialuseid.

Näiteks selleks, et arvutada aastatel 2010–2015 välja antud mängude, mille reiting on suurem kui 7, keskmine tootmiskulu, valiksite AVG(production_cost) ja piirake ridu WHERE production_year BETWEEN 2010 AND 2015 AND rating > 7See on klassikaline intervjuustiilis küsimus ja saate selle hõlpsalt Pythonisse manustada ning tulemuseks ühe numbri välja printida.

Samuti saate samast otse luua aastapõhise statistika. games tabelGrupeeri production_year, seejärel arvuta COUNT(*) AS count, AVG(production_cost) AS avg_costja AVG(revenue) AS avg_revenueSelline päring annab teile kompaktse ajaseeria vaate, mis on ärianalüütika armatuurlaudadel ja aruandlustööriistades äärmiselt levinud.

Ettevõtete järjestamiseks brutokasumi järgi kõigi aastate lõikes saate koondada companyKäepärane muster on SELECT company, SUM(revenue - production_cost) AS gross_profit_sum FROM games GROUP BY 1 ORDER BY 2 DESC. Siin GROUP BY 1 ja ORDER BY 2 kasutage veerupositsioone SELECT loend, mis aitab asjad kokkuvõtlikult hoida, kuid mida tuleb kasutada ettevaatlikult, et hiljem veergude ümberjärjestamisega päringuid ei rikutaks.

Keerukamad käsuread seovad filtrid, rühmitamise ja koondamisjärgsed filtrid kokkuOletame, et defineerite „head mängud” kui need, mis on toodetud aastatel 2000–2009, mille hinnang on üle 6 ja tulu on suurem kui tootmiskulud. Iga ettevõtte kohta soovite teada selliste mängude arvu pluss nende kogutulu, kuid ainult nende ettevõtete puhul, kelle tulu heade mängude müügist ületab 4 000 000. Filtreeriksite ridu järgmiselt: WHERE on production_year, ratingja kasumlikkus, rühmitage company, arvuta COUNT(company) ja SUM(revenue), seejärel rakenda HAVING SUM(revenue) > 4000000See üks päring hõlmab enamikku reaalsetest vaimsetest sammudest, millega analüütikaülesannetes kokku puutute.

Andmete modelleerimine mitme tabeli ja võtmega

Ühe tabeli kujundused viivad teid üsna kaugele, kuid relatsioonandmebaasid säravad, kui normaliseerite andmeid mitme tabeli vahelNormaliseerimine on protsess, mille käigus kõrvaldatakse üleliigne salvestusruum ja esitatakse seoseid võtmete abil. See hoiab teie andmebaasi väiksema, kiirema ja vähem veaohtliku.

Lihtne, aga õpetlik näide pärineb Twitteri-laadsete sotsiaalsete graafikute indekseerimisest.Oletame, et soovite jälgida kasutajakontosid ja nendevahelisi „jälgijate” suhteid. Üks naiivne lähenemisviis oleks üks tabel, kus igas reas on nii jälgijate kui ka jälgitavate nimed tekstina. See viib kiiresti rohke korduse ja ebajärjekindla õigekirjani.

Selle asemel jagate asjad kaheks osaks: People laud ja üks Follows tabel. People võib olla täisarv id primaarvõtmena, unikaalsena name (ekraaninimi või kasutajanimi) ja retrieved lipp, mis näitab, kas olete selle konto sõbraloendit juba indekseerinud. Follows sisaldab täisarvude paare from_id ja to_id, mis esindab suunatud ühendusi ühelt kasutajalt teisele.

Selle mudeli struktuuri moodustavad kolm põhimõistet: loogilised võtmed, primaarvõtmed ja võõrvõtmedLoogiline võti on see, mida välismaailm kasutab kirjele viitamiseks – siin Twitteri käepide namePrimaarvõti on tavaliselt andmebaasi loodud täisarv (id), mis identifitseerib iga rea ​​unikaalselt ning on odav indekseerida ja võrrelda. Võõrvõti on täisarv, mis osutab primaarvõtmele teises tabelis – from_id ja to_id aasta Follows tabel on viitavate võõrvõtmete People.id.

Andmete kvaliteedi tagamiseks deklareerite oma tabeli definitsioonides piirangud. Näiteks, name TEXT UNIQUE in People tagab, et te ei saa kogemata lisada kahte rida sama käepidemega. UNIQUE(from_id, to_id) piirang Follows takistab sama jälgimisserva mitu korda salvestamist. Need piirangud toimivad ka turvavõrkudena, kui hakkate Pythonis üleslaadimisloogikat kirjutama.

Pythoni keeles sqlite3 moodul, on levinud muster kasutada INSERT OR IGNORE neid piiranguid graatsiliselt austamaKui proovite sisestada name mis on juba olemas, jätab SQLite toimingu vaikselt vahele, selle asemel et veateadet anda. Seejärel saate kontrollida cursor.rowcount et näha, kas rida lisati tõepoolest, ja tugineda cursor.lastrowid et avastada määratud id äsja lisatud kasutajatele.

Kui teie koodile antakse uus ekraaninimi, peaks see kõigepealt otsima üles vastava nime. id. Kui a SELECT id FROM People WHERE name = ? tagastab rea, siis saate seda täisarvu uuesti kasutada. Kui mitte, sisestate nime koos retrieved = 0, kinnita ja seejärel loe lastrowidSee „leidmise või sisestamise” muster on paljude andmete sisestamise skriptide keskmes.

Kui nii jälgija kui ka jälgitava ID-d on teada, siis suhte registreerimine Follows on lihtsalt teine INSERT OR IGNORE. Sinu UNIQUE(from_id, to_id) piirang käsitleb duplikaate ja saate keskenduda kõrgema taseme loogikale, milliseid profiile järgmisena indekseerida, selle asemel, et ridade deduplikatsiooni mikrotasandil hallata.

JOIN-i kasutamine seoste taastamiseks normaliseeritud tabelitest

Normaliseeritud skeemid vahetavad redundantsuse kaudsuse vastu: korduvate stringide asemel salvestatakse täisarve, kuid nüüd tuleb tervikpildi taastamiseks tabeleid ühendada.. See on täpselt see, mida SQL JOIN oli loodud ja kui oled sellega harjunud, tunduvad JOIN-i sisaldavad päringud täiesti loomulikud.

Sotsiaalse graafiku näites, kui soovite näha, kes kasutajaga id = 2 jälgib, sa liituksid Follows et People sihtmärgi poolel. Põhimõtteliselt jooksed sa SELECT * FROM Follows JOIN People ON Follows.to_id = People.id WHERE Follows.from_id = 2See loob kombineeritud read, mis sisaldavad nii numbrilist serva kui ka iga jälgitava inimesele loetavat nime.

Iga selle tulemuse rida on „meta-rida”, mis ühendab mõlema tabeli veerud.Kaks esimest veergu võivad olla (from_id, to_id) Rohkem kui Follows, samas kui järgnevad veerud kuuluvad People - nagu (id, name, retrieved). Sest JOIN tingimus jõustab Follows.to_id = People.id, näete seda seost selgesõnaliselt: iga rea ​​teine ​​ja kolmas veerg vastavad.

Sama muster laieneb loomulikult ka teistele tabeliteleSa juba nägid seda koos artist, piece_of_artja museumja Twitteri robot illustreerib seda järgmiselt: People ja FollowsKeerukamates analüütilistes protsessides võite mitmetahulistele küsimustele vastamiseks ühendada faktitabeleid (sündmused, tellimused) mitme dimensioonitabeliga (kasutajad, tooted, kampaaniad).

Koodi silumisel või skeemide kokkusobivuse uurimisel on äärmiselt tõhus töövoog „käivita Python ja seejärel kontrolli DB Browseriga SQLite’i jaoks”.Käivitage skript andmebaasi asustamiseks, sulgege kõik GUI-eksemplarid, mis faili lukustatuna hoiavad, ja seejärel avage .sqlite brauseris faili. Sealt saate iga tabeli sisu kontrollida ja käivitada ad-hoc SELECT küsimused oma eelduste kontrollimiseks.

Üks hoiatus: SQLite rakendab faililukustusi, seega kui andmebaasibrauseril on andmebaas redigeerimisrežiimis avatud, võib teie Pythoni skript ühenduse loomise või kinnitamise ebaõnnestuda.Lahendus on andmebaasi sulgemine graafilises kasutajaliideses (või brauserist täielikult väljumine) enne Pythoni koodi uuesti käivitamist. Andmebaasifaili lukustavate tööriistade sulgemise harjumuseks tegemine säästab teid salapärastest „andmebaas on lukus” vigadest.

Nende tehnikate – skeemide kujundamine, piirangud, Pythoni parameetrilised päringud, JOIN-id, GROUP BY ja HAVING – ühendamine annab teile võimsa lokaalse labori. täpselt sellise SQL-i ja Pythoni töö harjutamiseks, mida tööl tegema hakkad. Ainult SQLite'i ja mõne hästi struktureeritud näidistabeli abil saad harjutada intervjuustiilis küsimusi, prototüüpida analüütilist loogikat ja taastada enesekindluse tänapäevaste andmetöötlustööriistade abil.

Kuhu sobivad sellised platvormid nagu DataLemur ja interaktiivsed kursused

Lisaks kohalikule praktikale saavad interaktiivsed platvormid pakkuda teile juhendatumat kogemust kohese tagasisidega.Reaalsest tööstuskogemusest sündinud tööriistad – näiteks platvormid, mille on loonud endised Facebooki ja Google'i andmeinsenerid, kes veetsid oma päevad SQL-i ja Pythoni kirjutades ning A/B-teste tehes – koondavad oma sisu sageli ehtsate intervjuuküsimuste ja analüütiliste stsenaariumide ümber.

Teoreetiliseks tööks sobivad suurepäraselt raamatud, mis käsitlevad statistikat, masinõpet ja äriintuitsiooni andmeintervjuude jaoks., kuid need ei paku alati praktilist SQL-i mänguväljakut, mida paljud õppijad ihkavad. Just seda tühimikku püüavad mõned tänapäevased tööriistad täita: need pakivad sadu intervjuustiilis ülesandeid brauserisisesesse SQL-i ja analüüsikeskkonda, et saaksite oma päringuid käivitada, kohandada ja uuesti käivitada ilma kohaliku seadistuse pärast muretsemata. Võite proovida ka rakendusnäiteid, näiteks klientide lahkumise riski hindamine SQL-i kombineerimiseks masinõppe põhiliste töövoogudega.

Samuti leiad interaktiivseid SQL-kursusi, mis peegeldavad siin käsitletud teemasid.: ühe tabeli päringud koos SELECT ja WHERE, kahe või kolme tabeli liitmised, agregeerimine ja rühmitamine, alampäringud ja palju muud. Paljud neist kursustest tuginevad realistlikele andmekogumitele – mõelge mängudele, muuseumidele või tehingumüügile –, nii et küsimused tunduvad pigem tõeliste äriprobleemidena kui väljamõeldud mõistatustena.

Kui tunned, et PySparki, DuckDB või dbt-i sarnaste tööriistade dokumentatsioon on sulle üle jõu käiv, on täiesti mõistlik need edasi lükata, kuni su SQL-i põhitõed on selged.Keskendudes esmalt SQLite'ile ja Pythonile, saate omaks võtta põhilised päringumustrid ilma klastri konfiguratsiooni või pilveõigustega võitlemata. Kui põhitõed on omandatud, muutub PySparki õppimine pigem hajutatud täitmiseks kui uute päringukontseptsioonide omandamiseks.

Lõppkokkuvõttes on lihtsa kohaliku seadistuse, struktureeritud harjutusülesannete ja interaktiivsete platvormide aeg-ajalt kasutamise kombinatsioon annab sulle parima kõigist maailmadest: täieliku kontrolli oma keskkonna üle, tugeva kontseptuaalse põhja ja kokkupuute küsimuste stiiliga, mida tipptasemel tööandjad armastavad. Järjepideva harjutamisega saab kunagi hirmuäratavast SQL-i, Pythoni ja andmetöötluse tööriistade kombinatsioonist tuttav ja isegi nauditav tööriistakomplekt, mida saad uutes rollides enesekindlalt kasutada.

Kõike kokku pannes on teie edasine tee selge: looge Pythoni abil SQLite'i andmebaas, kujundage mõned realistlikud tabelid, harjutage SQL-i põhi- ja kesktaseme mustreid (filtrid, liitumised, agregeerimine, rühmitamine, HAVING), mähkige need päringud Pythoni skriptidesse ja soovi korral täiendage oma õpinguid interaktiivsete SQL-platvormidega, mille on loonud praktikud, kes on olnud täpselt samas kohas, kus teie praegu olete.; nii tehes taastate oma tehnilised vaistu, vähendate ärevust tänapäevaste andmevirnade pärast ja olete valmis hakkama saama tänapäevaste andmerollide SQL-i ja Pythoni nõudmistega.

Seonduvad postitused: