spark.read.csv("caminho", header=True, inferSchema=True)Lê CSV com cabeçalho e tipos automáticos.
spark.read.parquet("caminho")Lê arquivos Parquet.
spark.read.table("nome_tabela")Lê tabela do Unity Catalog.
spark.read.json("caminho")Lê arquivos JSON.
spark.read.format("delta").load("caminho")Lê dados em formato Delta pelo caminho físico.
spark.read.option("delimiter", ";").csv("caminho")Define opções extras de leitura (delimitador, encoding, etc).
df.display()Exibe a tabela formatada — o melhor comando do Databricks.
df.printSchema()Mostra colunas e tipos (INT, STRING, TIMESTAMP...).
df.show(5) · df.limit(5)Mostra apenas as primeiras linhas.
df.count()Conta o número total de linhas.
df.columnsLista os nomes das colunas.
df.dtypesLista colunas com seus tipos de dado.
df.describe().show()Estatísticas básicas (média, desvio, min, max) por coluna numérica.
df.summary().show()Como describe(), mas inclui percentis (25%, 50%, 75%).
df.createOrReplaceTempView("nome_tabela")Cria view temporária consultável via %sql, válida na sessão.
df.createOrReplaceGlobalTempView("nome")Como acima, mas acessível entre notebooks/sessões (via global_temp.nome).
spark.sql("SELECT * FROM vw_dados WHERE valor > 10")Executa SQL puro dentro do Python e retorna um DataFrame.
df.select("col1", "col2")Equivalente a SELECT col1, col2.
df.selectExpr("col1 as c1", "col2 * 2 as dobro")Seleciona usando expressões estilo SQL direto na string.
df.filter(df.col == "valor")
df.where("col = 'valor'")Equivalente a WHERE.
df.filter((df.a > 1) & (df.b < 10))Múltiplas condições: use & (AND), | (OR), ~ (NOT) com parênteses.
df.dropDuplicates() · df.distinct()Remove linhas duplicadas.
df.sample(0.1)Retorna uma amostra aleatória (10% das linhas nesse exemplo).
df.withColumn("nova", expressão)Cria ou altera uma coluna. Muito usado no dia a dia!
df.withColumnRenamed("antigo", "novo")Renomeia uma coluna.
df.drop("coluna")Remove uma ou mais colunas.
df.withColumn("c", df.c.cast("int"))Converte o tipo de dado de uma coluna.
df.col.alias("apelido")Renomeia uma coluna dentro de um select (ex: df.select(df.a.alias("x"))).
df.na.drop()Remove linhas com qualquer valor nulo.
df.na.fill(0)
df.na.fill({"col": "valor_padrao"})Preenche nulos com um valor fixo (geral ou por coluna).
df.filter(df.col.isNull())
df.filter(df.col.isNotNull())Filtra linhas nulas ou não-nulas de uma coluna.
from pyspark.sql.functions import coalesce
df.withColumn("c", coalesce(df.a, df.b))Retorna o primeiro valor não-nulo entre colunas.
df.groupBy("categoria").count()Conta linhas por grupo.
from pyspark.sql.functions import sum, avg, max, min
df.groupBy("cat").agg(sum("valor"), avg("valor"))Aplica múltiplas agregações de uma vez.
df.groupBy("cat").pivot("ano").sum("valor")Transforma valores de uma coluna em novas colunas (tabela dinâmica).
df.agg({"valor": "max"})Agregação simples sobre o DataFrame inteiro, sem agrupar.
df.orderBy("coluna")
df.sort("coluna")Ordena de forma ascendente (padrão).
df.orderBy(df.coluna.desc())Ordena de forma descendente.
df1.join(df2, "chave", "inner")Junção interna pela coluna "chave".
df1.join(df2, df1.id == df2.id, "left")Left join com condição explícita entre colunas diferentes.
"inner" · "left" · "right" · "full" · "left_anti"Tipos de join disponíveis (left_anti retorna só quem NÃO tem match).
df1.union(df2)Empilha linhas de dois DataFrames com mesma ordem de colunas.
df1.unionByName(df2)Empilha por nome de coluna, mesmo em ordem diferente.
from pyspark.sql.functions import col, litcol() referencia uma coluna; lit() cria um valor literal fixo.
from pyspark.sql.functions import when
when(df.nota >= 7, "aprovado").otherwise("reprovado")Equivalente ao CASE WHEN do SQL.
from pyspark.sql.functions import concat, concat_ws
concat_ws(" ", df.nome, df.sobrenome)Concatena colunas de texto (concat_ws já insere um separador).
from pyspark.sql.functions import split
split(df.texto, ",")Divide uma string em array a partir de um delimitador.
from pyspark.sql.functions import regexp_replace
regexp_replace(df.texto, "[0-9]", "")Substitui texto via expressão regular.
from pyspark.sql.functions import upper, lower, trimMaiúsculas, minúsculas e remoção de espaços em branco.
from pyspark.sql.functions import current_date, current_timestampRetorna a data/hora atual.
from pyspark.sql.functions import to_date, to_timestamp
to_date(df.texto, "yyyy-MM-dd")Converte texto em data/timestamp.
from pyspark.sql.functions import date_format
date_format(df.data, "dd/MM/yyyy")Formata uma data como texto.
from pyspark.sql.functions import datediff, months_between
datediff(df.data_fim, df.data_ini)Diferença entre datas em dias ou meses.
from pyspark.sql.functions import year, month, dayofmonthExtrai partes específicas de uma data.
from pyspark.sql.window import Window
w = Window.partitionBy("categoria").orderBy("data")Define a "janela": como particionar e ordenar os dados.
from pyspark.sql.functions import row_number
df.withColumn("rn", row_number().over(w))Numera as linhas dentro de cada partição.
from pyspark.sql.functions import rank, dense_rank
rank().over(w)Cria ranking (com ou sem "buracos" na numeração de empates).
from pyspark.sql.functions import lag, lead
lag(df.valor, 1).over(w)Traz o valor da linha anterior (lag) ou seguinte (lead).
df.write.format("delta").mode("append").saveAsTable("catalog.schema.tabela")Adiciona novas linhas ao final de uma tabela existente.
df.write.format("delta").mode("overwrite").saveAsTable("catalog.schema.tabela")Substitui todo o conteúdo da tabela.
df.write.partitionBy("ano", "mes").saveAsTable("tabela")Particiona fisicamente os dados por colunas (melhora performance de leitura).
df.write.mode("overwrite").option("mergeSchema", "true").saveAsTable("tabela")Permite que o schema da tabela evolua junto com novas colunas.
df.cache()Mantém o DataFrame em memória para reuso rápido em várias operações.
df.persist()Como cache(), mas com controle do nível de armazenamento (memória/disco).
df.repartition(8)Aumenta/redistribui o número de partições (mais paralelismo).
df.coalesce(1)Reduz o número de partições — útil antes de salvar um único arquivo.
df.explain()Mostra o plano de execução — útil para diagnosticar lentidão.
Ler → inspecionar na zona de conforto SQL → ajustar em Python → salvar.
# 1. Ler os dados df = spark.read.csv("/Volumes/path/dados.csv", header=True, inferSchema=True) # 2. Criar a view SQL para trabalhar na sua zona de conforto df.createOrReplaceTempView("vw_dados") # 3. (Opcional) Ajuste rápido em Python df_limpo = df.withColumnRenamed("nome_antigo", "nome_novo").dropDuplicates() # 4. Salvar o resultado final em uma tabela definitiva df_limpo.write.format("delta").mode("overwrite").saveAsTable("prod.meu_schema.minha_tabela")