datacoolie/powerbi-skills · Archived

power-bi-semantic-model

>- Design and build Power BI semantic models using star schema principles and the PowerBI Modeling MCP tools. Use this skill whenever the user wants to build a semantic model, create a data model, design a star schema, add tables or columns, create or modify relationships, configure storage modes (Import, DirectQuery, DirectLake, Composite), implement RLS (Row-Level Security), optimize model performance, or explore existing data sources for modeling. Triggers include: "build semantic model", "c…

First seen Apr 20, 2026

Installation

$ npx skills add datacoolie/powerbi-skills --skill power-bi-semantic-model

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from datacoolie/powerbi-skills.

npx skills add datacoolie/powerbi-skills

Browse all from datacoolie/powerbi-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 4
Default branch main
Open issues 0
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

Declared agents github-copilot

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 12,050 B
  • docs SUMMARY.md 899 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 27 installs

SKILL.md

Power BI Semantic Model Builder

Design and build Power BI semantic models following star schema best practices, using PowerBI Modeling MCP tools for all model operations.

Always search Microsoft Learn (microsoft-learn-mcp/microsoftdocssearch) for the latest modeling guidance before making design decisions.

Use PowerBI Modeling MCP (powerbi-modeling-mcp/*) for all model operations — exploring tables, creating relationships, configuring columns, testing queries. Read references/mcp-tool-reference.md for the complete tool mapping.

Quick Reference

Task Approach Reference
Explore existing model modeloperations → get model info, tableoperations → list tables
Discover model metadata INFO.VIEW.* queries for tables, columns, measures, relationships references/discovery-queries.md
Connect to gold layer connection_operations → configure data source references/connection-binding.md
Design star schema Run Star Schema Checklist references/star-schema-checklist.md
Naming conventions Tables, columns, measures, hierarchies naming rules references/naming-conventions.md
Choose storage mode Use Decision Matrix references/storage-mode-decision.md
Direct Lake guide Framing, guardrails, fallback, composite references/directlake-guide.md
Build relationships relationship_operations → create with proper cardinality references/advanced-relationships.md
Optimize columns column_operations → set data types, remove unused, hide keys references/vertipaq-optimization.md
DAX coding standards Variables, comments, query syntax, best practices references/dax-guidelines.md
DAX performance Optimization framework (21 patterns, tier 1–4) references/dax-perf-decision-guide.md + references/dax-perf-patterns.md
Power Query / ETL M language, query folding, transformations references/power-query-reference.md
Implement RLS Dynamic RLS, OLS, DirectLake RLS patterns references/rls-patterns.md
TMDL / PBIP structure Tables, columns, measures, relationships, roles references/tmdl-reference.md + references/pbip.md
Deploy to workspace Git integration, CI/CD, Fabric pipelines references/deployment-alm-guide.md
Gateway & refresh On-prem gateway, scheduled/incremental refresh references/gateway-refresh-guide.md
Fabric REST API TMDL CRUD, refresh, data sources, permissions references/semantic-model-rest-api.md
Prepare for AI/Copilot Descriptions, synonyms, AI instructions, verified answers references/semantic-model-ai-readiness.md
Test the model daxqueryoperations → run EVALUATE queries references/discovery-queries.md

Tool Selection Priority

When multiple tools can perform the same operation, follow this priority:

Tier 1 — MCP (powerbi-modeling-mcp): Use MCP tools for all authoring operations when connected to the target model. Fastest, least-error-prone, no file I/O.

Tier 2 — TMDL files + az rest: Use when MCP is unavailable. Edit TMDL files directly and deploy via Fabric REST API. See references/tmdl-reference.md for syntax and references/semantic-model-rest-api.md for API endpoints.

Tier 3 — Fallback: If neither MCP nor TMDL access is available, guide the user to save as PBIP or install MCP.

Must / Prefer / Avoid

MUST

  • Understand data source schema before designing the model
  • Follow star schema principles (references/star-schema-checklist.md)
  • Follow naming conventions (references/naming-conventions.md)
  • Follow tool selection priority (MCP → TMDL → Fallback)
  • Validate model with DAX queries after structural changes

PREFER

  • Star schema over flat/denormalized tables
  • Explicit measures over implicit aggregation
  • TMDL format for version-controlled model definitions
  • INT keys over TEXT keys for relationships

AVOID

  • Hardcoded workspace/item IDs — resolve dynamically
  • Reading TMDL files when MCP is connected (use MCP operations instead)
  • Calculated columns on fact tables (use measures or Power Query)
  • Auto Date/Time (use dedicated date dimension)

Workflow

Step 1: Explore Available Data

Before designing, understand what exists:

Exploration Checklist:
□ Use powerbi-modeling-mcp/model_operations to get current model state
□ Use powerbi-modeling-mcp/table_operations to list all tables and columns
□ Use powerbi-modeling-mcp/relationship_operations to see existing relationships
□ Identify which tables are facts (transactions, events) vs. dimensions (descriptive)
□ Check column data types and cardinality
□ Note any existing measures (powerbi-modeling-mcp/measure_operations)
□ Check connection/partition info (powerbi-modeling-mcp/partition_operations)

If connecting to a gold layer or lakehouse:

Data Source Exploration:
□ Use fabric-notebook-mcp/list_artifacts to find available tables
□ Use fabric-notebook-mcp/get_lakehouse_detail for lakehouse schema
□ Use fabric-notebook-mcp/preview_lakehouse_table to inspect data
□ Use fabric-notebook-mcp/get_table_column_stats for column statistics
□ Use ms-mssql.mssql tools to query SQL-based gold layers

Step 2: Design Star Schema

Classify tables then validate with references/star-schema-checklist.md:

Type Role Examples
Fact Measurable events, FK to dims, numeric aggregates Sales, Orders, Production
Dimension Descriptive context, surrogate key, filtering/grouping Date, Product, Customer
Bridge M:N link, key columns only CustomerProduct, EmployeeProject
Measure Table No data rows, organizes DAX measures Measures, KPIs

Full design rules and validation → references/star-schema-checklist.md

Step 3: Configure Storage Modes

Scenario Recommended Mode
Historical data, < 1GB Import
Historical data, > 1GB with Fabric Direct Lake
Direct Lake + external reference data Composite (DL + Import)
Real-time operational data DirectQuery
Mix of real-time + historical Composite (DQ + Import)
Dimension tables in composite model Dual
Aggregation tables Import

Full decision matrix → references/storage-mode-decision.md

Step 4: Build Relationships

Use powerbi-modeling-mcp/relationship_operations:

□ Cardinality: One-to-Many (dimension → fact) is standard
□ Cross-filter: Single direction (dimension filters fact) is default
□ Active: Only one active relationship between any two tables
□ Inactive: Use USERELATIONSHIP() for role-playing dimensions
□ Referential integrity: Enable for Import mode (performance boost)

Advanced patterns (M:M, weak, role-playing, ambiguity) → references/advanced-relationships.md

Step 5: Optimize the Model

Prioritize in this order (biggest compression impact first):

  1. Remove unused columns — hidden columns still consume memory
  2. Reduce cardinality — bin dates, round decimals, group rare values
  3. Use INT keys over TEXT — value encoding vs hash encoding
  4. No calculated columns on fact tables — use measures or Power Query

Model-level:

  • Dedicated date dimension (disable Auto Date/Time)
  • Remove auto-generated LocalDateTable_* tables
  • Aggregation tables for >100M row facts
  • Incremental refresh for growing tables
  • Target < 1GB model size (Import mode)

Full optimization guide → references/vertipaq-optimization.md

Step 6: Implement Security

RLS Implementation Steps:
1. Define roles → powerbi-modeling-mcp/security_role_operations
2. Write DAX filter expressions per role
3. Test with dax_query_operations (EVALUATE with role context)

All patterns (static, dynamic, hierarchy, time-based, OLS) → references/rls-patterns.md

Step 7: Validate the Model

Use powerbi-modeling-mcp/daxqueryoperations to validate:

  • EVALUATE INFO.VIEW.RELATIONSHIPS() — verify relationship structure
  • Orphaned records check — ISBLANK(RELATED(...)) pattern
  • Row count spot-check — COUNTROWS() per table
  • RLS propagation test — CALCULATETABLE with role context

Full discovery query catalog → references/discovery-queries.md

Step 8: Prepare for AI (Copilot Readiness)

Optimize the model for Power BI Copilot and Fabric Data Agent:

Prep for AI Checklist:
□ Use descriptive, human-readable names for all tables, columns, measures
□ Add descriptions to tables, columns, and measures (Copilot uses metadata)
□ Hide relationship key columns and unused technical fields
□ Avoid duplicate field names across tables (e.g., "Name" in Customer vs Store)
□ Remove unused objects — fewer objects = less AI ambiguity
□ Configure AI Data Schema (Prep data for AI → Simplify data schema)
□ Add AI Instructions (business context, terminology, domain logic)
□ Set up Verified Answers for common questions
□ Mark model as "Prepped for AI" in semantic model settings
□ Test with Copilot pane → validate responses against expected answers

Copilot folder structure in PBIP → references/tmdl-reference.md §Copilot Folder Full AI readiness guide → references/semantic-model-ai-readiness.md

Common Modeling Scenarios

Slowly Changing Dimensions (SCD)

Type 1 (overwrite): Update dimension row directly. No special modeling.

Type 2 (history): Surrogate key per version + ValidFrom/ValidTo/IsCurrent. Relationship uses surrogate key (not natural key).

Date Table Requirements

Every model MUST have a proper date table — time intelligence fails without it:

5 Non-Negotiable Requirements:
1. Contiguous dates — one row per calendar date, NO gaps
2. Covers full range of all fact table dates (plus buffer year)
3. Date column is DATE type — no time component
4. DateKey column is INT (YYYYMMDD) — use as relationship key
5. Marked as Date Table via powerbi-modeling-mcp/calendar_operations

Note: Calendar-based time intelligence (preview, Sep 2025) relaxes the
contiguity requirement for custom calendars (fiscal, 4-5-4, 13-month, lunar).
Defines calendars on tables via Column Category mappings. New DAX functions:
TOTALWTD, PREVIOUSWEEK, TOTALYTD('CalendarName'). Enable via Preview Features.

Full column requirements → references/star-schema-checklist.md (Section 3)

PBIP / TMDL File Structure

For complete PBIP folder layout, file schemas, and TMDL syntax → read references/tmdl-reference.md and references/pbip.md.

Related Skills

Skill Relationship When
power-bi-business-analysis Upstream (Phase 1) Requirements doc defines tables, data sources, and RLS needs
power-bi-dax-development Downstream (Phase 3) Model schema feeds into measure creation
power-bi-performance-troubleshooting Cross-cutting VertiPaq optimization, storage mode tuning, cardinality reduction
power-bi-report-authoring Downstream (Phase 4b) Model schema used during PBIR generation for queryState bindings