- Utilitzeu SQLite i Python localment per recrear un entorn de pràctica SQL realista sense necessitat d'un magatzem de dades complet o un clúster Spark.
- Domina les habilitats bàsiques de SQL: filtrar amb WHERE, unir diverses taules i agregar dades amb GROUP BY i HAVING.
- Normalitzeu esquemes en múltiples taules amb claus primàries i externes i, a continuació, utilitzeu JOIN per reconstruir les relacions a les vostres anàlisis.
- Combina la pràctica local amb plataformes SQL interactives per assajar preguntes d'estil d'entrevista i recuperar la confiança amb eines de dades modernes.

Si intentes tornar a SQL i Python després d'uns anys de baixa, és completament normal sentir-te perdut. – sobretot si el vostre últim rol utilitzava eines pròpies i còmodes quaderns Databricks que ja no teniu. Les ofertes de treball modernes que exigeixen Python, SQL i fins i tot PySpark poden semblar intimidants quan cada guia comença amb alguna cosa com ara "carrega el teu conjunt de dades de reclamacions al teu magatzem de dades" i penses: "Això és exactament el que no tinc".
La bona notícia és que pots recrear la major part d'aquesta experiència d'aprenentatge al teu propi ordinador portàtil. utilitzant eines gratuïtes, petits conjunts de dades de mostra i un conjunt estructurat de problemes de pràctica. En aquesta guia, explicarem, en un llenguatge planer, com crear un entorn local realista, com funciona SQL (des de consultes bàsiques fins a JOIN i agregació) i com embolicar aquestes consultes SQL en Python perquè pugueu practicar exactament el tipus de tasques a les quals us enfrontareu en treballs de dades moderns.
Creació d'un entorn de pràctica local senzill amb SQLite i Python
No necessiteu un magatzem de dades complet o un clúster Spark per practicar SQL més Python.Per a l'aprenentatge i la preparació d'entrevistes, una base de dades integrada lleugera com SQLite és més que suficient. SQLite emmagatzema totes les seves dades en un sol fitxer al disc, cosa que la fa perfecta per a projectes de joguines, prototips i exercicis educatius.
Conceptualment, una base de dades SQLite s'assembla molt a un full de càlcul amb diversos fulls.: cada full és un taula, cada fila és una registre, i cada columna és una campEn l'argot de les bases de dades relacionals, les taules de vegades s'anomenen "relacions", les files són "tuples" i les columnes són "atributs", però per al treball pràctic podeu cenyir-vos fàcilment als termes quotidians taula, fila i columna.
Python inclou un controlador SQLite integrat anomenat sqlite3, la qual cosa significa que no cal instal·lar un servidor de bases de dades separat. El vostre script de Python obrirà una connexió a un .sqlite fitxer (creant-lo si no existeix), obteniu un cursor objecte (molt similar a un identificador de fitxer) i després enviar ordres SQL a través d'aquest cursor mitjançant execute(). Vegi la nostra SQLite SELECT i WHERE Guia d'exemples pràctics de lectura i filtratge de dades.
Tot i que aquest article se centra en la gestió de SQLite des de Python, també hi ha una eina GUI útil anomenada "Navegador de bases de dades per a SQLite". (de vegades distribuït com a DB Browser for SQLite). Amb ell podeu inspeccionar visualment taules, inserir o editar unes quantes files manualment i executar instruccions SQL senzilles. És com un editor de text per a fitxers de base de dades: els ajustos manuals ràpids són més fàcils a la GUI, però qualsevol cosa repetitiva o complexa s'escriu millor en Python.
Les bases de dades relacionals són més rígides que les llistes o els dictats de Python: insisteixen en un esquema definit.Quan creeu una taula, heu de declarar els noms de les columnes i els tipus de dades que espereu (text, enter, data/hora, etc.). SQLite emmagatzemarà i indexarà les dades de manera que les cerques siguin eficients, fins i tot quan el conjunt de dades creixi més enllà del que cap còmodament a la memòria. Per a itineraris d'aprenentatge pràctics i exemples pràctics, consulteu anàlisi de dades amb SQL.
Creació de taules i inserció de dades amb SQL i Python
Per començar a practicar, primer necessiteu una taula; penseu-hi com si estiguéssiu dissenyant la forma de les vostres dades.Suposem que voleu una petita taula de biblioteca musical. Utilitzant Python sqlite3 mòdul us podeu connectar a un fitxer de base de dades, eliminar qualsevol versió antiga de la taula si existeix i, a continuació, crear una taula nova amb columnes clarament tipificades.
Així és com es veu conceptualment aquest flux en Python: tu truques sqlite3.connect('music.sqlite') per obrir o crear el fitxer de base de dades, aleshores crida conn.cursor() per obtenir un cursor. A través d'aquest cursor podeu executar ordres SQL com ara DROP TABLE IF EXISTS Songs per esborrar qualsevol esquema anterior, seguit de CREATE TABLE Songs (title TEXT, plays INTEGER) per definir una nova taula amb dues columnes.
Un cop existeix la taula, canvieu de DDL (Llenguatge de Definició de Dades) a DML (Llenguatge de Manipulació de Dades) amb INSERT declaracionsEn Python sempre s'han d'utilitzar consultes parametritzades: write INSERT INTO Songs (title, plays) VALUES (?, ?) i passar una tupla com ('Thunderstruck', 20) com a segon argument per a execute()Els signes d'interrogació són marcadors de posició que Python substituirà de manera segura, cosa que us ajuda a evitar problemes d'injecció SQL i errors de citació.
Després de realitzar insercions o actualitzacions, heu de trucar a conn.commit() per buidar els canvis al discFins que no feu un commit, les operacions només resideixen en un buffer de transaccions. Això és diferent de les escriptures simples de fitxers i és un dels hàbits clau a construir des del principi: consultar, modificar i després commit.
Per llegir les dades, feu servir un SELECT declaració i iterar sobre el cursor. Per exemple, SELECT title, plays FROM Songs transmetrà cada fila com una tupla de Python, com ara ('Thunderstruck', 20)El cursor no carrega tots els resultats alhora; en comptes d'això, recupera les files de manera mandrosa, cosa que és útil quan finalment es treballa amb conjunts de dades més grans.
Elements bàsics de consulta SQL i filtratge amb WHERE
Cada consulta SQL es basa en un petit conjunt de clàusules que apareixen en un ordre estàndard: SELECT, FROM, WHERE, GROUP BY, HAVINGi ORDER BYCom a mínim, especifiqueu quines columnes voleu (SELECT) i de quina taula (FROM). Les clàusules opcionals refinen, agreguen, filtren els resultats agregats i ordenen la sortida.
L' WHERE La clàusula filtra les files abans que es produeixi qualsevol agrupació o agregacióPer a columnes numèriques podeu utilitzar operadors de comparació com ara =, != (o <>), >, <, >=, <=. Les columnes de text admeten aquests a més de la coincidència de patrons mitjançant LIKE i comprovacions de membresia a través de INEls valors de data/hora admeten les mateixes comparacions relacionals i sovint veieu intervals expressats amb BETWEEN.
El maneig de valors nuls en SQL és prou peculiar com per merèixer una atenció explícita.Comparacions habituals com ara = i != no et comportis com podries esperar amb NULL, de manera que SQL proporciona IS NULL i IS NOT NULL per comprovar si hi ha valors que falten. Les columnes booleanes solen funcionar amb = i !=, però encara necessites IS NULL quan el booleà en si pot faltar.
Quan combineu diverses condicions, recordeu que AND i OR seguir les regles de precedènciaSi escrius age < 5 OR age > 10 AND breed = 'Ragdoll', SQL avaluarà el AND primer. Per expressar "gats Ragdoll menors de 5 anys o majors de 10", heu d'utilitzar parèntesis: (age < 5 OR age > 10) AND breed = 'Ragdoll'Familiaritzar-se amb aquestes combinacions lògiques és crucial per al treball d'analítica del món real.
Coincidència de patrons amb LIKE permet cercar cadenes que comencen, acaben o contenen certs fragmentsEl símbol de percentatge % és un comodí per a qualsevol seqüència de caràcters, de manera que breed LIKE 'R%' troba races que comencen amb «R», fav_toy LIKE 'ball%' troba joguines els noms de les quals comencen per «pilota», i coloration LIKE '%m' troba patrons de color que acaben amb "m". Aparellat amb AND/OR, això es converteix en un potent conjunt d'eines de filtratge de text.
Practicar consultes d'una sola taula amb un conjunt de dades de joguina
Una manera útil de construir la memòria muscular és arreglar un petit esquema al cap i resoldre moltes preguntes sobre ell.Imagineu-vos un cat taula amb columnes com id, name, breed, coloration, age, sexi fav_toyAixò us ofereix prou varietat (text, números, categòriques simples) per practicar la majoria de patrons de consulta bàsics.
Per a les comprovacions d'estil booleà, sovint filtreu per una columna i després superposeu condicions addicionals.Per llistar els gats mascles "avorrits" que no tenen cap joguina preferida registrada, hauríeu de seleccionar l'opció name where sex = 'M' i fav_toy IS NULLAixò il·lustra com les comprovacions nul·les s'aparellen amb comparacions senzilles per aïllar un subconjunt específic de files.
Per orientar-se a races específiques o excloure-les, es combina la igualtat amb la negació lògica.Seleccionar només gats Ragdoll amb certes edats s'utilitza breed = 'Ragdoll'; excloent els perses i els siamesos podria semblar així breed NOT LIKE 'Persian' AND breed NOT LIKE 'Siamese'Tot i que algunes bases de dades admeten NOT IN ('Persian', 'Siamese'), practicar el patró explícit ajuda a consolidar la teva comprensió de NOT i LIKE.
Exercicis com ara "gates a qui els encanten les joguines i no són perses ni siameses" t'obliguen a combinar filtres de text, igualtat i operadors lògics.Seleccionaries id, name, breed, coloration i restringir les files mitjançant sex = 'F', fav_toy = 'teaser', i una condició composta que exclou les races no desitjades. Si es presta atenció als parèntesis, s'assegura que totes les subcondicions s'apliquin en la combinació prevista.
Un cop us sentiu còmodes amb aquests exemples de joguina en SQL en brut, torneu-los a implementar mitjançant Python utilitzant consultes parametritzades.Escriviu guions curts que demanin la raça, l'edat mínima o el tipus de joguina. input(), connecteu-los a WHERE clàusules i imprimir els resultats. Aquest és exactament el pont entre l'escriptura de consultes i el codi d'aplicació real que molts rols de dades júnior esperen.
Comprensió i pràctica de les JOIN SQL
Tan bon punt superis els problemes de joguina, t'uniràs a diverses taules constantment.Les JOIN són la manera com es connecten conjunts de dades relacionats: clients amb comandes, artistes amb obres d'art, jocs amb empreses, etc. En SQL, es descriu quines columnes han de coincidir entre les taules i el motor de la base de dades fusiona les files en un conjunt de resultats combinat.
Hi ha quatre tipus principals d'unió que trobareu en entrevistes i projectes reals: INNER JOIN (sovint escrit només JOIN), LEFT JOIN, RIGHT JOINi FULL OUTER JOINUna unió interna només retorna les files on ambdues taules tenen claus coincidents; una unió esquerra conserva totes les files de la taula esquerra, omplint NULLquan la taula correcta no té cap coincidència; una unió dreta fa la cosa simètrica; i una unió externa completa retorna cada fila des d'ambdós costats, coincidint sempre que sigui possible i utilitzant NULL on no.
Penseu LEFT JOIN i RIGHT JOIN com a operacions de "confiar més en aquest costat"Amb una unió esquerra, la taula esquerra és la font principal de veritat: cada fila d'aquesta apareix almenys una vegada a la sortida, fins i tot quan la taula dreta no aporta res. Amb una unió completa, cap dels dos costats té privilegis: simplement uniu totes les claus de les dues taules i les alineeu on se superposen.
Per mantenir les consultes multitaula llegibles, sempre cal assignar un àlies a les taules.En lloc d'escriure SELECT artist.name repetidament, escriure FROM artist AS a i després referenciar columnes com a a.name. De la mateixa manera, piece_of_art pot esdevenir poai museum pot ser mQuan la consulta creix fins a tres o més unions, els bons àlies són la diferència entre la claredat i el caos.
Una configuració d'entrenament clàssica utilitza un trio de taules: artist, museumi piece_of_art. La artist la taula podria contenir id, name, birth_year, death_year i un camp primari com l'aquarel·la o l'escultura. El museum botigues de taula id, name i country. La piece_of_art taula té id, name, artist_id i museum_idAquestes dues últimes columnes són claus externes que enllacen cada obra d'art amb el seu creador i la seva ubicació.
Amb aquest esquema, podeu practicar unions internes, unions esquerres i filtres condicionals.Per exemple, per llistar artistes nascuts després del 1800 que van viure més de 50 anys, juntament amb els noms de les seves obres, hauríeu d'unir artist i piece_of_art on artist.id = piece_of_art.artist_id i després filtrar amb death_year - birth_year > 50 i birth_year > 1800. Anomena les columnes seleccionades com a artist_name i piece_name per claredat.
Per veure totes les obres d'art juntament amb els noms i països dels museus, incloses les peces "perdudes" sense museu – faries servir un LEFT JOIN de piece_of_art a museum on museum_idD'aquesta manera, les obres d'art sense museu associat encara apareixen al resultat, amb NULL a les columnes del museu. Filtrant files on artist_id IS NULL et permet detectar obres d'artistes desconeguts i, alhora, seguir unint-te als museus que les tenen.
Exercicis més avançats que us permeten unir-vos a tres taules simultàniamentPer llistar cada obra d'art amb el seu artista i el nom del museu, hauríeu d'unir museum a piece_of_art on museum.id = piece_of_art.museum_id, després uneix-te artist on artist.id = piece_of_art.artist_id. Ús de color pla JOIN (junta interna) elimina intencionadament les obres d'art que no tenen artista o museu, cosa que us dóna una idea de com el tipus d'unió afecta el recompte de files.
Agregació, GROUP BY i HAVING a la pràctica
Un cop puguis recuperar i unir dades, la següent gran habilitat és resumir-les.Funcions d'agregació com ara SUM(), AVG(), COUNT(), MAX()i MIN() calcular mètriques sobre conjunts de files. GROUP BY divideix el conjunt de dades en grups i aplica aquestes funcions dins de cada grup; per exemple, un grup per any, per empresa o per artista. Si preferiu cursos estructurats per practicar aquests conceptes, consulteu curs complet de SQL.
Imagineu-vos un simple sales_table amb columnes year, monthi sales. Un pla SELECT SUM(sales) AS total_sales FROM sales_table et dóna el total general de totes les files. Sumant GROUP BY year canvia la pregunta: ara demanes el total de vendes per any en lloc d'una única xifra global.
La regla clau és que cada columna no agregada del vostre SELECT ha d'aparèixer en GROUP BY. Si seleccioneu year i SUM(sales), agrupeu per year. Si seleccioneu year i month juntament amb agregats, aleshores agrupeu per tots dos year i monthConceptualment, les diferents combinacions de les columnes agrupades defineixen els grups.
WHERE i HAVING són tots dos filtres, però actuen en etapes diferents. WHERE filtra les files sense processar abans que es produeixi qualsevol agrupació o agregació. HAVING filtra els resultats agrupats mitjançant expressions agregades. Per exemple, podeu WHERE production_year BETWEEN 2000 AND 2009 i després HAVING SUM(revenue) > 4000000 per mantenir només les empreses els "bons jocs" de les quals van generar més de quatre milions d'ingressos.
Un esquema de pràctica més realista és un games taula amb columnes com id, title, company, type, production_year, system, production_cost, revenuei ratingAmb aquesta única taula podeu fer mitjanes, recomptes, sumes, agrupacions i classificacions: l'element bàsic de l'analítica SQL.
Per exemple, per calcular el cost de producció mitjà dels jocs publicats entre el 2010 i el 2015 amb una qualificació superior a 7, seleccionaríeu AVG(production_cost) i restringir files amb WHERE production_year BETWEEN 2010 AND 2015 AND rating > 7Aquesta és una pregunta clàssica d'estil entrevista, i la podeu integrar fàcilment a Python i imprimir el número resultant.
També podeu generar estadístiques a nivell anual directament des del mateix games taulaAgrupa per production_year, després calcula COUNT(*) AS count, AVG(production_cost) AS avg_costi AVG(revenue) AS avg_revenueAquest tipus de consulta us ofereix una vista compacta de sèries temporals que és extremadament comuna en els quadres de comandament i les eines d'informes de BI.
Per classificar les empreses per benefici brut en tots els anys, podeu agregar en companyUn patró pràctic és SELECT company, SUM(revenue - production_cost) AS gross_profit_sum FROM games GROUP BY 1 ORDER BY 2 DESC. Aquí GROUP BY 1 i ORDER BY 2 utilitza les posicions de les columnes SELECT list, que pot mantenir les coses concises però s'ha d'utilitzar amb cura per no trencar les consultes reordenant columnes més tard.
Les indicacions més complexes uneixen filtres, filtres d'agrupació i filtres de post-agregació.Suposem que defineixes els "bons jocs" com els produïts entre el 2000 i el 2009, amb una qualificació superior a 6 i uns ingressos superiors al cost de producció. Per a cada empresa, vols el nombre d'aquests jocs més els seus ingressos totals, però només per a les empreses els ingressos de les quals per bons jocs superen els 4,000,000. Filtraries les files amb WHERE on production_year, rating, i rendibilitat, agrupades per company, calcular COUNT(company) i SUM(revenue), després aplica HAVING SUM(revenue) > 4000000Aquesta consulta captura la majoria dels passos mentals del món real als quals t'enfrontaràs en tasques d'analítica.
Modelització de dades amb múltiples taules i claus
Els dissenys de taula única us porten força lluny, però els bases de dades relacionals brillen quan normalitzeu les dades en diverses taules.La normalització és el procés d'eliminar l'emmagatzematge redundant i la representació de relacions mitjançant claus. Això fa que la base de dades sigui més petita, més ràpida i menys propensa a errors.
Un exemple senzill però instructiu prové del rastreig de gràfics socials tipus Twitter.Diguem que voleu fer un seguiment dels comptes d'usuari i de les relacions de "seguidors" entre ells. Un enfocament ingenu seria una sola taula on cada fila dupliqués els noms dels seguidors i dels followers com a text. Això porta ràpidament a una repetició abundant i a una ortografia inconsistent.
En comptes d'això, divideixes les coses en una People taula i a Follows taula. People pot tenir un nombre enter id com a clau primària, una única name (el nom de pantalla o identificador) i un retrieved bandera que indica si ja has rastrejat la llista d'amics d'aquest compte. Follows conté parells d'enters from_id i to_id, que representen connexions dirigides d'un usuari a un altre.
Tres conceptes clau estructuren aquest model: claus lògiques, claus primàries i claus externesUna clau lògica és el que el món exterior utilitza per referir-se a un registre; aquí, el nom d'usuari de Twitter. nameUna clau primària sol ser un enter generat per la base de dades (id) que identifica cada fila de manera única i és barat d'indexar i comparar. Una clau externa és un nombre enter que apunta a una clau primària d'una altra taula – from_id i to_id al Follows la taula són claus externes que fan referència People.id.
Per aplicar la qualitat de les dades, declareu restriccions a les definicions de la taula.. Per exemple, name TEXT UNIQUE in People garanteix que no es puguin inserir accidentalment dues files amb el mateix controlador. A UNIQUE(from_id, to_id) restricció en Follows t'impedeix emmagatzemar el mateix front de seguiment més d'una vegada. Aquestes restriccions també funcionen com a xarxes de seguretat quan comences a escriure lògica upsert en Python.
En Python sqlite3 mòdul, un patró comú és utilitzar INSERT OR IGNORE respectar aquestes restriccions amb elegànciaSi intenteu inserir un name que ja existeix, SQLite ometrà l'operació silenciosament en lloc de produir un error. Aleshores podeu comprovar cursor.rowcount per veure si realment s'ha afegit una fila i confiar en cursor.lastrowid per descobrir l'assignat id per als usuaris recentment inserits.
Quan el vostre codi rep un nom de pantalla nou, primer hauria d'intentar buscar el corresponent id. Si a SELECT id FROM People WHERE name = ? retorna una fila, reutilitzeu aquest enter. Si no, inseriu el nom amb retrieved = 0, confirma i després llegeix lastrowidAquest patró de "cerca o inserció" és el nucli de molts scripts d'ingestió de dades.
Un cop coneguts els identificadors del seguidor i del seguit, registrar la relació a Follows és només un altre INSERT OR IGNORE. El vostre UNIQUE(from_id, to_id) La restricció aborda els duplicats i us podeu concentrar en la lògica de nivell superior de quins perfils rastrejar a continuació, en lloc de microgestionar la deduplicació de files.
Ús de JOIN per reconstruir relacions a partir de taules normalitzades
Els esquemes normalitzats canvien la redundància per la indirecció: s'emmagatzemen nombres enters en lloc de cadenes repetides, però ara cal unir taules per reconstruir la imatge completa.Això és exactament el que fa SQL JOIN va ser dissenyat per a, i un cop t'hi acostumes, les consultes amb molts JOIN semblen completament naturals.
En l'exemple del gràfic social, si voleu veure amb quin usuari id = 2 està seguint, t'uniries Follows a People al costat de l'objectiu. Conceptualment, corres SELECT * FROM Follows JOIN People ON Follows.to_id = People.id WHERE Follows.from_id = 2Això produeix files combinades que contenen tant la vora numèrica com el nom llegible per a cada seguidor.
Cada fila d'aquest resultat és una "meta-fila" que fusiona columnes d'ambdues taules.Les dues primeres columnes podrien ser (from_id, to_id) de Follows, mentre que les columnes següents pertanyen a People - M'agrada (id, name, retrieved). Perquè el JOIN condició s'aplica Follows.to_id = People.id, podeu veure aquesta relació explícitament: la segona columna i la tercera columna de cada fila coincideixen.
Aquest mateix patró s'estén naturalment a més taulesJa ho has vist amb artist, piece_of_arti museum, i el rastrejador de Twitter ho il·lustra amb People i FollowsEn canalitzacions analítiques més complexes, podeu unir taules de fets (esdeveniments, comandes) a taules de múltiples dimensions (usuaris, productes, campanyes) per respondre preguntes multifacètiques.
Quan depureu el vostre codi o apreneu com encaixa l'esquema, un flux de treball de "executar Python i després inspeccionar amb DB Browser for SQLite" és extremadament eficaç.Executeu el vostre script per omplir la base de dades, tanqueu qualsevol instància de la GUI que mantingui el fitxer bloquejat i, a continuació, obriu el .sqlite fitxer al navegador. Des d'allà podeu inspeccionar el contingut de cada taula i executar ad hoc SELECT consultes per verificar les teves suposicions.
Una advertència: SQLite aplica bloquejos de fitxers, de manera que si el navegador de bases de dades té la base de dades oberta en mode d'edició, és possible que l'script de Python no es connecti o no es faci el commit.La solució és tancar la base de dades a la GUI (o sortir del navegador completament) abans de tornar a executar el codi Python. Adquirir el costum de tancar les eines que bloquegen el fitxer de la base de dades us estalviarà errors misteriosos de "base de dades bloquejada".
La combinació d'aquestes tècniques (disseny d'esquemes, restriccions, consultes parametritzades en Python, JOIN, GROUP BY i HAVING) us ofereix un potent laboratori local. per practicar exactament el tipus de treball SQL i Python que faràs a la feina. Amb res més que SQLite i unes quantes taules d'exemple ben estructurades, pots assajar preguntes d'estil d'entrevista, prototipar la lògica analítica i recuperar la confiança amb les eines de dades modernes.
On encaixen plataformes com DataLemur i cursos interactius
A més de la vostra pràctica local, les plataformes interactives us poden oferir una experiència més guiada amb comentaris instantanis.Les eines nascudes de l'experiència real en la indústria (per exemple, plataformes creades per antics enginyers de dades de Facebook i Google que passaven els dies escrivint SQL i Python i executant proves A/B) sovint centren el seu contingut al voltant de preguntes d'entrevista i escenaris analítics reals.
Els llibres que tracten estadística, aprenentatge automàtic i intuïció empresarial per a entrevistes de dades són ideals per a la teoria., però no sempre proporcionen el pati d'esbarjo pràctic de SQL que molts aprenents desitgen. Aquesta mancança és exactament el que algunes eines modernes pretenen omplir: reempaquetan centenars de preguntes d'estil d'entrevista en un entorn SQL i d'anàlisi dins del navegador perquè pugueu executar, ajustar i tornar a executar les vostres consultes sense preocupar-vos per la configuració local. També podeu provar exemples aplicats com ara avaluació del risc de rotació de clients combinar SQL amb fluxos de treball bàsics d'aprenentatge automàtic.
També trobareu cursos interactius d'SQL que reflecteixen els temes que hem tractat aquí.: consultes d'una sola taula amb SELECT i WHERE, unions entre dues o tres taules, agregació i agrupació, subconsultes i més. Molts d'aquests cursos es basen en conjunts de dades realistes (penseu en jocs, museus o vendes transaccionals) de manera que les preguntes semblen problemes empresarials genuïns en lloc de trencaclosques artificials.
Si us sentiu aclaparats per la documentació d'eines com PySpark, DuckDB o dbt, és perfectament raonable ajornar-la fins que els vostres fonaments d'SQL siguin sòlids.Centrar-se primer en SQLite i Python permet internalitzar els patrons de consultes bàsics sense haver de lluitar contra la configuració del clúster o els permisos del núvol. Un cop els conceptes bàsics siguin naturals, aprendre PySpark es centra més en l'execució distribuïda que en els nous conceptes de consulta.
En definitiva, la combinació d'una configuració local senzilla, problemes de pràctica estructurats i l'ús ocasional de plataformes interactives t'ofereix el millor de tots els mons: control total sobre el teu entorn, una sòlida base conceptual i exposició a l'estil de preguntes que els principals empresaris estimen. Amb la pràctica constant, la combinació, abans descoratjadora, d'eines SQL, Python i enginyeria de dades es converteix en un conjunt d'eines familiar, fins i tot agradable, que pots utilitzar amb confiança en nous rols.
En conjunt, el camí a seguir és clar: crea una base de dades SQLite amb Python, dissenya algunes taules realistes, explora patrons SQL bàsics i intermedis (filtres, unions, agregació, agrupació, HAVING), encapsula aquestes consultes en scripts de Python i, opcionalment, complementa el teu aprenentatge amb plataformes SQL interactives creades per professionals que han estat exactament on ets ara.; fent això, reconstruiràs els teus instints tècnics, reduiràs l'ansietat al voltant de les piles de dades modernes i estaràs preparat per gestionar les demandes d'SQL i Python dels rols de dades actuals.