programmatic-development

v2026.09.24

Programmatic Power BI development with PBIR, PBIP, TMDL, TOM, and fabric-cicd. PROACTIVELY activate for: (1) creating Power BI reports programmatically (PBIR enhanced report format), (2) PBIR vs PBIR-Legacy selection (2026 default), (3) PBIP developer mode and Power BI project files, (4) Tabular Object Model (TOM) / .NET SDK scripting, (5) Tabular Editor scripting (C# scripts, advanced scripting), (6) pbi-tools workflows, (7) fabric-cicd Python deployments (FabricWorkspace, publish_all_items), (8) Fabric CLI (fab deploy), (9) Semantic Link / sempy / semantic-link-labs, (10) generating PBIX programmatically, (11) parameter.yml for environment-specific deployments, (12) ALM Toolkit. Provides: PBIR/PBIP project templates, fabric-cicd deploy.py, Tabular Editor scripting recipes, parameter.yml patterns, and end-to-end programmatic workflows.

GitHub
安装命令
npx skhub add josiahsiegel/programmatic-development
Markdown
SKILL.md

Programmatic Power BI Development

Overview

Power BI supports multiple approaches for creating and managing reports and semantic models through code. As of 2026, the canonical stack is:

  • PBIP (Power BI Project) as the folder-based source format
  • TMDL as the semantic-model format inside PBIP (see tmdl-mastery skill)
  • PBIR (Power BI Enhanced Report Format) as the report format inside PBIP
  • fabric-cicd (Python) or Fabric CLI fab deploy for deployment
  • TOM / .NET SDK for advanced programmatic model editing
  • semantic-link-labs for Python-based scripting from Fabric notebooks

Reference Map

Detailed material lives in references/. Load only what the current task needs.

TopicFileWhen to load
PBIR rollout timeline, full PBIP folder structure, byPath/byConnection, annotations, validation, limitationsreferences/pbir-format-deep-dive.mdAuthoring PBIR by hand, debugging definition.pbir, validating generated PBIR, understanding 2026 rollout state
PBIR JSON schema (visuals, pages, report settings) with Python manipulation examplesreferences/pbir-schema-reference.mdScripting PBIR with Python: add page, batch-update visuals, copy between reports
TOM/Tabular Editor/fabric-cicd/Fabric CLI/semantic-link/pbi-tools/ALM Toolkit -- setup, examples, Desktop developer featuresreferences/tools-and-tabular-editor.mdChoosing a tool, deploying, scripting TOM, running C# scripts, configuring Desktop
TOM advanced patterns (RLS, OLS, partitions, perspectives, translations, calc groups, SP auth)references/tom-advanced-patterns.mdWriting complex TOM .NET code beyond basic measure/table edits
fabric-cicd advanced recipes (multi-workspace, hooks, GitHub Actions/Azure DevOps pipelines, parameter patterns, troubleshooting)references/fabric-cicd-recipes.mdProduction CI/CD workflows, multi-environment promotion, OIDC federated credentials

PBIR - Power BI Enhanced Report Format

PBIR is Microsoft's modern, publicly documented, folder-based, JSON report format. It replaces the opaque report.json blob (now called PBIR-Legacy) with one file per visual, page, and bookmark, enabling proper Git diff/merge, code review, and schema-validated editing in VS Code.

Current state (April 2026): PBIR is the default for newly created reports in the Service. Existing Service reports are being auto-upgraded gradually. Desktop still needs the preview toggle until the May 2026 release, when PBIR becomes the Desktop default. PBIR-Legacy will be deprecated at PBIP GA.

For the full 2026 rollout timeline, admin opt-out, Service/Desktop restore policies, Sovereign Cloud caveats, complete project structure, byPath vs byConnection examples, annotations, self-validation procedure, and limitations, see references/pbir-format-deep-dive.md.

Quick PBIP structure (essentials only):

MyProject.pbip                          # Entry JSON
├── MyProject.Report/
│   ├── definition.pbir                # Required entry; uses byPath or byConnection
│   └── definition/                    # PBIR folder (one file per page/visual/bookmark)
└── MyProject.SemanticModel/
    ├── definition.pbism
    └── definition/                    # TMDL folder

TMDL - Tabular Model Definition Language

TMDL is the human-readable, source-control-friendly format for semantic model definitions. GA since 2025. For comprehensive TMDL coverage including complete syntax reference, all object types, CI/CD patterns, and deployment workflows, load the dedicated powerbi-master:tmdl-mastery skill.

Quick example:

table Sales
    measure 'Total Sales' = SUM(Sales[Amount])
        formatString: $ #,##0.00
        displayFolder: Revenue

    partition 'Sales-Partition' = m
        mode: import
        source =
            let
                Source = Sql.Database("server", "db"),
                Sales = Source{[Schema="dbo",Item="Sales"]}[Data]
            in
                Sales

    column Amount
        dataType: decimal
        sourceColumn: Amount
        formatString: $ #,##0.00

Core Workflow

  1. Pick the source format — PBIP (modern, TMDL + PBIR) for new work; legacy PBIX only for Report Server or pre-PBIP projects.
  2. Edit programmatically — VS Code for PBIR/TMDL JSON; Tabular Editor for model authoring; semantic-link-labs for Fabric notebooks; TOM .NET for custom apps.
  3. Validate locally — JSON schema, PBI-InspectorV2, lineage walker, BPA. See powerbi-master:validation-testing skill.
  4. Parameterize — parameter.yml for environment-specific GUIDs/connection strings.
  5. Deploy — fabric-cicd (Python library, primary) or fab deploy (CLI wrapper). Both consume the same parameter.yml. First deploy requires manual data-source credential entry in the Fabric portal.
  6. Diff and promote — ALM Toolkit for schema diff; Fabric Deployment Pipelines or scripted multi-workspace deploy for promotion.

Deployment Decision Matrix (2026)

ScenarioRecommended Tool
PBIP project with CI/CD (GitHub Actions / Azure DevOps)fabric-cicd (Python)
Local ad-hoc deploy of a PBIPfab deploy (Fabric CLI v1.5+)
Fabric notebook-based model editingsemantic-link-labs (sempy_labs)
Pure semantic model via XMLATOM (.NET) via Microsoft.AnalysisServices.NetCore.retail.amd64
TMDL folder -> XMLATabular Editor 2 CLI (-D switch)
Legacy PBIX only (no PBIP)pbi-tools
Cross-environment promotion (dev/test/prod)Fabric Deployment Pipelines (GUI) OR fabric-cicd with parameter.yml
Schema diff between two modelsALM Toolkit

Tool Quick-Pick

NeedLoad referenceTool
Modify a measure on a deployed modeltools-and-tabular-editor.mdTOM or semantic-link-labs
Auto-generate measures across folderstools-and-tabular-editor.mdTabular Editor C# script
Deploy PBIP from CIfabric-cicd-recipes.mdfabric-cicd + parameter.yml
Generate PBIR pages from a templatepbir-schema-reference.mdPython + JSON schema validation
RLS/OLS in .NETtom-advanced-patterns.mdTOM
Extract legacy PBIX for difftools-and-tabular-editor.mdpbi-tools

Related Skills

  • powerbi-master:tmdl-mastery -- Deep TMDL language reference and syntax
  • powerbi-master:validation-testing -- Validate generated PBIR / TMDL / DAX before deploy
  • powerbi-master:rest-api-automation -- Raw Fabric REST API endpoints when fabric-cicd doesn't cover a scenario
  • powerbi-master:deployment-admin -- Fabric Deployment Pipelines, workspace management, RLS at deploy time
  • powerbi-master:fabric-integration -- Direct Lake, OneLake, Lakehouse/Warehouse integration

Official Microsoft References (2026)

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

MIT

源路径

plugins/powerbi-master/skills/programmatic-development

默认分支

main

最新提交

5a1b112

Tree SHA

376c8e0