DP-700: dominar partições e ordenação em tabelas do Fabric
Vou ensinar como planear e implementar partições e ordenação em tabelas do Microsoft Fabric (OneLake/Delta tables) — uma competência útil para o DP-700 e crítica na prática para desempenho de consulta e eficiência de armazenamento.
O que precisas de saber
Particionar uma tabela significa dividir os dados em segmentos lógicos (por exemplo, por data, região) para que operações de leitura e manutenção processem apenas um subconjunto dos dados. Ordenar (sort order) organiza os ficheiros/linhas dentro das partições segundo colunas-chave, o que acelera operações de junção, varreduras por intervalos (range scans) e compressão. Em Fabric, isto aplica-se a tabelas em formato Delta dentro do OneLake e influencia tanto o tempo de consulta no Power BI/SQL quanto o custo de processamento.
Exemplo simples: tens uma tabela de transacções com milhões de linhas. Se as partições forem por year e month, as queries históricas que consultem apenas um mês evitam digitalizar todo o historial. Se dentro de cada partição os dados estiverem ordenados por customer_id, uma junção por cliente será muito mais eficiente.
Como funciona
Conceitos-chave:
- Coluna de partição: escolhida para segmentar os dados; idealmente de baixa cardinalidade por partição e que corresponda a padrões de consulta (ex.:
date,region). - Granularidade: por ano/mês/dia; maior granularidade significa mais ficheiros/partições e overhead de metadados.
- Ordenação (sort): colunas usadas para ordenar ficheiros dentro da partição; melhora leituras sequenciais e compactação.
- File pruning: mecanismo que evita ler ficheiros irrelevantes quando existe partição/metadata adequada.
- Compaction/OPTIMIZE: operação para combinar muitos ficheiros pequenos em ficheiros maiores, mantendo ordenação e reduzindo custos de leitura.
Na prática
Passos práticos para implementar partições e ordenação numa tabela Delta em Fabric (exemplo genérico de SQL/Notebook):
-
Escolhe colunas para partição e ordenação.
Regra prática: partição por coluna usada frequentemente em filtros (ex.:
event_date), ordenação por coluna usada em joins/ordenamentos (ex.:user_id). -
Cria a tabela com partição e ordenação (exemplo em T-SQL/Delta DDL):
CREATE TABLE sales_delta ( sale_id BIGINT, event_date DATE, customer_id BIGINT, amount DECIMAL(10,2) ) USING DELTA PARTITIONED BY (YEAR(event_date), MONTH(event_date)) -- Opcional: propriedades para sort/optimize (varia conforme engine)Nota: a sintaxe exacta de
PARTITIONED BYe opções de ordenação pode variar conforme o ambiente (notebook Spark, SQL endpoint). Em Fabric, muitas vezes usas comandos em notebooks Spark ou as opções do Data Factory/ingestão. -
Ingestão: escreve dados mantendo a partição. Exemplo Spark:
df.write .format("delta") .mode("append") .partitionBy("year","month") .save("/onedrive/OneLake/.../sales_delta") -
Otimização: combina ficheiros e aplica ordenação (exemplo genérico):
-- Em Spark/Delta OPTIMIZE delta.`/onedrive/OneLake/.../sales_delta` WHERE year = 2026 AND month = 06 ZORDER BY (customer_id)O comando
OPTIMIZE(ou equivalente) vai compactar ficheiros na partição específica e aplicar ordem física (ZORDER é uma técnica comum para melhorar a localidade dos dados em várias colunas). -
Valida: testa queries com e sem filtro por partição para confirmar redução de scan de ficheiros (ver estatísticas do plano de execução ou uso de métricas).
Erros comuns
- Escolher colunas de alta cardinalidade para partição (por exemplo,
transaction_id) — cria demasiadas partições pequenas, aumentando o overhead. - Excesso de partições (granularidade demasiado fina) — causa muitos ficheiros pequenos e piora desempenho devido a metadados e falta de pruning eficaz.
- Não executar compaction/OPTIMIZE regularmente após ingestões em streaming ou micro-batches — leva a muitos ficheiros pequenos e penaliza as leituras.
Como praticar
Pratica estas tarefas num ambiente de testes em Fabric/OneLake: cria uma tabela Delta, importa dados reais (ou gerados) e experimenta diferentes estratégias de partição e ordenação, medindo o impacto nas queries. Para preparação do exame DP-700, utiliza o Practice Assessment OFICIAL gratuito da Microsoft para avaliar os teus conhecimentos e consulta o guia de estudo oficial (ambos gratuitos). Estas fontes ajudam a alinhar a prática com as competências medidas sem usar material protegido.
Em resumo
- Particionar reduz o volume de dados lidos ao filtrar por valores de partição; escolhe colunas que correspondam a padrões de consulta.
- Ordenação dentro de partições (ZORDER/ORDER) melhora junções e varreduras por intervalos e favorece compressão.
- Evita partições demasiado finas e colunas de alta cardinalidade como chaves de partição.
- Faz compaction/OPTIMIZE após ingestões para reduzir ficheiros pequenos e melhorar desempenho.