SQL • Delta Lake • Bronze/Silver/Gold • Versionado com GitHub Repos
Workspace: Databricks Free Edition (sem cluster manual, compute inicia ao executar células)
- Praticar Databricks (Free Edition) com foco em Spark SQL e Delta Lake.
- Construir notebooks curtos e reprodutíveis (1h, 4x por semana).
- Versionar tudo via GitHub (Databricks Repos).
- Conta no GitHub e um repositório vazio (ex.:
databricks-labs-mcunhash). - Personal Access Token no GitHub (PAT) com escopo
repo. - Conta no Databricks Free Edition e acesso ao Workspace.
- No Databricks: User Settings > Git integration → Provider: GitHub → cole o seu PAT → Save.
- Sidebar: Repos > Add Repo > Clone remote Git repo → URL HTTPS do seu repo (ex.:
https://github.com/mcunhash/databricks-labs-mcunhash.git) → Branchmain→ Create. - Crie pastas dentro de
/Repos/<seu-usuário>/databricks-labs-mcunhash:notebooks/ 00_setup 01_sql_basics 02_delta_basics 03_bronze_silver_gold 04_perf_e_bi README.md
Execute as células SQL abaixo para criar e usar um database de trabalho.
%sql
CREATE DATABASE IF NOT EXISTS mc_labs;
USE mc_labs;Teste fontes de dados (use a que estiver disponível no seu Free):
%sql -- Opção A: catálogo de samples (se disponível) SELECT * FROM samples.nyctaxi.trips LIMIT 10;
-- Opção B: arquivos de datasets (se expostos no seu workspace) -- SELECT * FROM csv.dbfs:/databricks-datasets/nyctaxi/tripdata/yellow_tripdata_2019-01.csvLIMIT 10;
Crie uma tabela Delta gerenciada a partir de CSV (ajuste o caminho disponível):
%sql
CREATE OR REPLACE TABLE trips_raw USING delta AS
SELECT * FROM csv.`dbfs:/databricks-datasets/nyctaxi/tripdata/yellow_tripdata_2019-01.csv`;Consultas de prática:
%sql -- Agregações SELECT passenger_count, COUNT(*) trips FROM trips_raw GROUP BY passenger_count ORDER BY trips DESC;
-- CTE + deduplicação WITH ranked AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY vendor_id, tpep_pickup_datetime ORDER BY tpep_dropoff_datetime DESC) rn FROM trips_raw ) SELECT * FROM ranked WHERE rn = 1;
%sql -- Histórico e propriedades DESCRIBE HISTORY trips_raw;-- Simular upsert com MERGE (lote 2 fictício) CREATE OR REPLACE TABLE trips_bronze AS SELECT * FROM trips_raw; CREATE OR REPLACE TEMP VIEW trips_lote2 AS SELECT *, total_amount + 1 AS total_amount FROM trips_raw LIMIT 1000;
MERGE INTO trips_bronze t USING trips_lote2 s ON t.vendor_id = s.vendor_id AND t.tpep_pickup_datetime = s.tpep_pickup_datetime WHEN MATCHED THEN UPDATE SET * WHEN NOT MATCHED THEN INSERT *;
-- Time travel SELECT COUNT(*) FROM trips_bronze VERSION AS OF 0;
- Abrir o notebook alterado → botão Git (topo) → selecione mudanças → mensagem → Commit & Push.
- Para trazer mudanças do GitHub: Pull.
- Sem criação de cluster manual; use o compute que inicia automaticamente ao rodar células.
- Recursos como SQL Warehouses, Workflows/Jobs completos e Unity Catalog avançado podem não estar disponíveis.
- Exporte seus notebooks periodicamente: File > Export > Source.
- Commits pequenos e frequentes, com mensagens claras.
- Não coloque dados sensíveis no repositório.