officetuning/skill-library

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 g…

View source

How to use

  1. Copy the installation command and review the source package before installing it in your own agent environment.
  2. Check the source document for required tools, credentials and supported hosts.
  3. Describe your input and desired deliverable; review the output against the source material.
npx skills add https://github.com/officetuning/skill-library --skill bi-qa-documentacao

Before you start

  • Installation does not include a model subscription, API allowance or permission to access your files.
  • Repository stars and installation counts describe activity, not an independent quality or security test.
Original skill document

Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.

QA e documentação de modelos Power BI

Três frentes, na ordem em que aparecem no ciclo:

FrenteQuandoOnde
Descrever a medida com ///Ao escrever a medidaAbaixo
QA em três camadasAntes de cada merge ou publicaçãoreferences/qa-pipeline.md
Gerar documentação .docxA cada publicaçãoreferences/documentacao.md

1. Descrição de medida com /// na DAX Query View

A descrição vai no próprio código, sem abrir o Model Explorer.

dax
DEFINE
    /// Soma o valor líquido das vendas.
    /// Exclui pedidos cancelados e devoluções.
    /// Retorna BLANK() quando não há vendas no período filtrado.
    /// Usada nos KPIs comerciais e financeiros.
    MEASURE Vendas[Total de Vendas Líquidas] =
        SUM ( Vendas[Valor Líquido] )

EVALUATE
    ROW ( "Total de Vendas Líquidas", [Total de Vendas Líquidas] )

Depois, execute Atualizar modelo com alterações (CodeLens acima do MEASURE). A descrição vai para a propriedade Description e aparece no Model Explorer, no painel Dados, no tooltip do campo e no TMDL.

Regras

  • /// imediatamente acima do MEASURE; várias linhas viram uma descrição.
  • Descreva o quê, a regra de negócio, as exceções, quando retorna BLANK() e

onde é usada. Pense no próximo dev e no Copilot.

  • Não repita a fórmula na descrição. Nada de "Calcula vendas" ou "Medida de teste".
  • Fórmula mudou → descrição muda junto.
  • A tabela no MEASURE é a tabela semântica visível (Vendas), e as colunas

usam o nome semântico ([Valor Líquido]), nunca o físico (skill bi-nomenclatura).

DAX Query View

2. QA em três camadas

Se eu publicar agora, o que quebra — e eu fico sabendo antes do usuário?
CamadaValidaFerramenta
3. BindingTodo campo de visual.json existe no TMDLscripts/check_visual_bindings.py
1. BPAModelo segue as regrasTabular Editor 2 CLI (TabularEditor.exe)
2. Smoke testCada medida calcula sem erroInvoke-ASCmd via XMLA, pós-deploy em staging

Rode a camada 3 primeiro: é a mais barata e pega o erro mais comum (campo renomeado).

Obrigatório

  • As três camadas antes de publicar.
  • Rodar contra a pasta TMDL/PBIR versionada no Git, nunca contra "o que deveria estar".
  • Versionar o arquivo de regras do BPA no repositório.
  • Falhar o pipeline em regra de severidade Alta.

Como o Tabular Editor 2 falha o pipeline: não existe opção --error-on-violation. O CLI retorna exit code 1 quando há saída de nível Error, e o BPA emite Error para regra com severidade ≥ 3. Portanto, deixe as regras Altas com severidade 3 no arquivo de regras. Severidade 2 vira Warning e 1 vira informação.

powershell
# Camada 1 — BPA sobre a pasta TMDL; -G anota no GitHub Actions (-V no Azure DevOps)
$p = Start-Process -FilePath ".\te2\TabularEditor.exe" -Wait -NoNewWindow -PassThru `
       -ArgumentList "`"VendasAurora.SemanticModel\definition`" -A `"ci\BPARules.json`" -G"
exit $p.ExitCode

⚠️ TabularEditor.exe é aplicativo WinForms: sem -Wait (ou start /wait no cmd), o prompt volta antes de terminar e o exit code se perde. -B não é "modo build": ele salva o modelo como Model.bim. Confirme a leitura de pasta TMDL na versão que o time usa.

Comandos completos das três camadas, workflow do GitHub Actions e proveniência das ferramentas: references/qa-pipeline.md.

3. Documentação automática

Alguém que nunca abriu este relatório entende o modelo só lendo o documento?

Gere a partir do repositório, a cada publicação. Nunca digite à mão.

bash
python scripts/extrair_modelo.py VendasAurora.SemanticModel/definition VendasAurora.Report/definition > modelo.json
node scripts/gerar_docx.js modelo.json documentacao-modelo.docx "Vendas Aurora" 2B579A

O documento sai com capa, sumário, tabelas (papel pelo prefixo), colunas, relacionamentos (inativos marcados), medidas com DAX completo, formato, pasta e descrição, e páginas com os campos de cada visual. Medida sem formato ou sem /// aparece marcada com ❗. Commit de origem no rodapé.

Estrutura, o que extrair de cada arquivo, cuidados (RLS com valores sensíveis, explicação de DAX complexo) e checklist: references/documentacao.md.

Scripts

ScriptFazRequer
scripts/tmdl_parser.pyLê tabelas, colunas, medidas multilinha e relacionamentos do TMDLPython 3.9+
scripts/check_visual_bindings.pyCamada 3; exit 1 se houver campo quebradoPython 3.9+
scripts/extrair_modelo.pyJSON intermediário para a documentaçãoPython 3.9+
scripts/gerar_docx.js.docx a partir do JSONNode + npm install docx

O leitor TMDL é mínimo: cobre QA e documentação, não substitui o TmdlSerializer.

Related by task

from this repository

More skills

All skills
officetuning
Community

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.

installs
1
GitHub stars
1
Updated
Oct 3
officetuning
Community

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.

installs
1
GitHub stars
1
Updated
Oct 3
officetuning
Community

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

installs
1
GitHub stars
1
Updated
Oct 3
officetuning
Community

data-storytelling

Storytelling com dados aplicado a relatórios Power BI, a partir dos frameworks de Cole Nussbaumer Knaflic — contexto e audiência, escolha do gráfico eficaz, limpeza de poluição visual, atributos pré-atentivos, Big Idea, título-conclusão e arco narrativo entre páginas. Use quando o usuário pedir a mensagem principal de uma página, reduzir poluição visual, preparar apresentação para diretoria, decidir qual gráfico comunica melhor, ou citar storytelling, Big Idea, gráfico de espaguete ou "então o q

installs
1
GitHub stars
1
Updated
Oct 3