(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

DP-700: dominar partições e ordenação em tabelas do Fabric

João Barros 02 de August de 2026 4 min de leitura

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):

  1. 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).

  2. 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 BY e 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.

  3. Ingestão: escreve dados mantendo a partição. Exemplo Spark:

    df.write
      .format("delta")
      .mode("append")
      .partitionBy("year","month")
      .save("/onedrive/OneLake/.../sales_delta")
    
  4. 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).

  5. 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.