officetuning/skill-library

power-query-m

Boas práticas de Power Query M no Power BI — Query Folding, consultas em camadas (Cns), Incremental Refresh com RangeStart/RangeEnd, função M documentada com Value.ReplaceType e tratamento de erro auditável.

소스 보기

사용 방법

  1. 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
  2. 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
  3. 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/officetuning/skill-library --skill power-query-m

시작 전 확인

  • 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
  • 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 Skill 문서

원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.

Power Query M

Camada entre a origem dos dados e o modelo semântico. Metade dos problemas de refresh lento nasce aqui e ninguém olha primeiro.

Pergunta central

Essa transformação pode ser feita na fonte, ou precisa mesmo acontecer aqui?

Power Query é o lugar de tratar, não de processar. Agregação, junção de tabelas grandes e filtro sobre milhões de linhas vão para a fonte (SQL, view semântica). Sobra para o M: tipagem, renomeação para o nome semântico, tratamento de nulo e erro, e combinação de fontes que a origem não combina sozinha.

Regras

Obrigatório

  • Verificar Query Folding em toda consulta sobre fonte relacional. Perder o

folding no meio faz a máquina local processar linha a linha, e o refresh sai de minutos para horas.

  • Nomear toda consulta de ETL com prefixo Cns, separando staging (não

carregada) de final (carregada). Nomes seguem a skill bi-nomenclatura.

  • Conferir no catálogo de funções (references/funcoes-m.md) antes de escrever

uma transformação nova. Não invente função.

  • Documentar toda função reutilizável com metadados via Value.ReplaceType.

Nunca entregue função "nua".

  • Corrigir erro na causa. Nunca mascare com try ... otherwise sem isolar as

linhas descartadas.

Preferir

  • Três camadas por tabela: Staging → Tratamento → Final.
  • Table.Buffer só antes de operação não dobrável reaproveitada por várias

consultas-filhas. Nunca "por garantia".

  • Parâmetros (RangeStart, RangeEnd, ambiente, caminho) como Parâmetros de

Consulta nomeados, nunca valor fixo dentro de um passo.

  • "Selecionar Colunas" quando se mantêm poucas colunas: a consulta sobrevive a

colunas novas na fonte sem trazer lixo.

Evitar

  • Mais de ~40–50 passos numa consulta sem quebrar em consultas intermediárias.
  • Table.Buffer no início da consulta: trava a árvore em memória e impede o

folding no resto.

  • Filtro de data com valor fixo (= #date(2024,1,1)) em vez dos parâmetros de

Incremental Refresh: funciona no Desktop, mas não particiona no Service.

Query Folding

Folding é o Power Query traduzir os passos numa única instrução executada na fonte (ex.: um SELECT), em vez de baixar tudo e filtrar localmente.

Como achar o passo que quebrou:

  1. Clique com o botão direito no último passo aplicado.
  2. Se Exibir Consulta Nativa estiver ativo, ainda dobra até ali.
  3. Suba passo a passo até o primeiro em que a opção fica cinza. Esse passo

quebrou o folding.

Os indicadores de folding no painel de passos mostram o mesmo sem clicar.

O que costuma quebrar (varia por conector):

  • Transformação de texto complexa (ex.: Text.Combine sobre várias colunas).
  • Table.AddColumn com função customizada que o conector não traduz.
  • Ordenar antes de filtrar. Inverta a ordem quando der.
  • Mesclar consultas de fontes diferentes.
  • Table.Buffer, sempre.

Regra prática: toda transformação pesada acontece antes do primeiro passo que quebra o folding. Depois dele, só tipagem final e renomeação.

Docs: Query folding · Indicadores

Padrão de camadas

CamadaExemplo de nomeCarrega no modelo?Faz
StagingCnsClienteStagingNãoExtração crua, 100% dobrável
TratamentoCnsClienteTratadoNãoTipagem, renomeação, nulo, duplicata
FinalTabDimClienteSimReferencia o Tratamento

Desmarque Habilitar carregamento em Staging e Tratamento. Vantagens: debug por camada, reuso do mesmo Staging por várias tabelas finais e isolamento da quebra de folding na camada de Tratamento.

Incremental Refresh

Particiona a tabela por faixas de data e atualiza só as recentes. Suportado em Pro, PPU, Premium e Embedded. As partições reais só existem depois de publicar no Service; no Desktop os parâmetros apenas filtram uma janela pequena.

Parâmetros com nomes exatos, tipo Data/Hora:

m
// Valores iniciais quaisquer: a política sobrescreve ao publicar
RangeStart = #datetime(2024, 1, 1, 0, 0, 0) meta [IsParameterQuery = true, Type = "DateTime", IsParameterQueryRequired = true]
RangeEnd   = #datetime(2024, 1, 2, 0, 0, 0) meta [IsParameterQuery = true, Type = "DateTime", IsParameterQueryRequired = true]

Filtro na consulta, logo após a origem para dobrar:

m
= Table.SelectRows(
    CnsVendaTratado,
    // >= em um lado e < no outro: evita linha duplicada entre partições
    each [DataVenda] >= RangeStart and [DataVenda] < RangeEnd
)
Campo da políticaDefine
Arquivar dados a partir deHistórico retido sem reprocessar
Atualizar incrementalmente a partir deJanela "quente" refeita a cada refresh
Detectar alterações de dados (opcional)Coluna de última modificação na fonte
Atualizar só períodos completosNão reprocessa o dia corrente aberto

Docs: Incremental refresh

Função documentada e tratamento de erro

Modelos prontos em references/padroes-m.md:

  • função com Value.ReplaceType completo (nome, descrição, categoria, exemplo);
  • padrão de auditoria de erro que isola as linhas que falharam, em vez de

descartá-las em silêncio.

Checklist final

  • [ ] Consulta relacional com "Exibir Consulta Nativa" ativo até o passo mais tardio possível
  • [ ] Nenhum Table.Buffer no início de consulta
  • [ ] Camadas Staging → Tratamento → Final, com as duas primeiras sem carregamento
  • [ ] Consultas de ETL com prefixo Cns
  • [ ] RangeStart/RangeEnd em toda fato de volume relevante
  • [ ] Funções reutilizáveis documentadas com Value.ReplaceType
  • [ ] Nenhum try ... otherwise sem isolar as linhas afetadas
  • [ ] Nenhuma função inventada (confira references/funcoes-m.md)
  • [ ] Consultas com mais de ~40–50 passos avaliadas para quebra

관련 작업

같은 저장소의 Skills

더 많은 Skills

모든 Skills
officetuning
커뮤니티

bi-nomenclatura

Padrão Corporativo de Nomenclatura para SQL, ETL e modelo semântico Power BI — prefixos Tab/Vw/Pr/Fn/Cns, TabDim/TabFat/TabPon/TabFlt, fronteira entre camada física e semântica, nomes de medida e a convenção de comparativo temporal AV/AA/Δ/Δ%/Δi. Use ao nomear ou renomear tabela, view, procedure, consulta, coluna ou medida, ao escolher prefixo, ao criar alias SQL ou ao nomear medida que compara com o ano anterior.

설치 수
1
GitHub Stars
1
업데이트
10월 3일
officetuning
커뮤니티

bi-qa-documentacao

Documentar e validar um modelo Power BI antes de publicar — descrição de medida com /// na DAX Query View, QA em três camadas (Best Practice Analyzer pelo Tabular Editor CLI, smoke test de medidas via XMLA, binding visual.json × TMDL), pipeline de CI/CD e geração de documentação .docx a partir do TMDL/PBIR. Use para documentar medida no código, checklist de publicação automatizado, validar PBIP, CI/CD Power BI, testar medidas por script, visual quebrado, dicionário de dados, handoff ou "gerar Wo

설치 수
1
GitHub Stars
1
업데이트
10월 3일
officetuning
커뮤니티

dashboard-canvas

Método Dashboard Canvas (OfficeTuning) para planejar um relatório Power BI antes de abrir o Desktop — 12 blocos em 4 fases (Descoberta, Dados, Governança, Execução), taxonomia de tabela e campo, matrizes Tipo de Dado × Segmentação e Tipo de Dado × 5W2H, anatomia de página e revisão de modelo existente contra o Canvas. Use em briefing de BI, workshop com cliente, escopo de dashboard, cronograma de projeto BI, 5W2H ou "planejar dashboard". Para posição em pixel dos visuais use dashboard-layout.

설치 수
1
GitHub Stars
1
업데이트
10월 3일
officetuning
커뮤니티

dashboard-layout

Wireframe, grid e sistema visual de relatórios Power BI — base 8px, grid 12×9 sobre canvas 1920×1080, conversão para x/y/width/height do visual.json, zonas reservadas e modos de filtro do Background Builder, tooltip 400×304, paleta derivada de Accent/Navy e o bug de fuso horário em "última atualização" no Service. Use para definir onde cada visual fica, padronizar layout entre páginas, montar um relatório a partir do Background Builder, diagnosticar relatório desalinhado ou data de atualização e

설치 수
1
GitHub Stars
1
업데이트
10월 3일