{% extends "base.html" %} {% block title %}Fabric & Power BI{% endblock %} {% block heading %}Fabric & Power BI Pipeline{% endblock %} {% block content %} {% if request.query_params.get('saved') %}
Fabric configuration saved successfully.
{% endif %}

End-to-End Pipeline

{% set steps = [ ("1", "Sources", cfg.sources|length ~ " configured", "blue", cfg.sources|length > 0), ("2", "Bronze", cfg.tables|selectattr('layer','eq','bronze')|list|length ~ " tables", "orange", cfg.tables|selectattr('layer','eq','bronze')|list|length > 0), ("3", "Silver", cfg.tables|selectattr('layer','eq','silver')|list|length ~ " tables", "slate", cfg.tables|selectattr('layer','eq','silver')|list|length > 0), ("4", "Gold", cfg.tables|selectattr('layer','eq','gold')|list|length ~ " tables", "yellow", cfg.tables|selectattr('layer','eq','gold')|list|length > 0), ("5", "Semantic","Model", "purple", cfg.fabric.semantic_model_name != ""), ("6", "Reports", "Power BI", "green", cfg.fabric.workspace_name != ""), ] %} {% for num, label, sub, color, done in steps %}
{% if done %}✓{% else %}{{ num }}{% endif %}

{{ label }}

{{ sub }}

{% endfor %}

Microsoft Fabric Configuration

Examples: 0 6 * * * = daily 6am · 0 */4 * * * = every 4 hours

DirectLake & Incremental Refresh

CLI Commands to Run

{% set cmds = [] %} {% if cfg.fabric.workspace_name %}

# 1. Authenticate with Fabric

pbi-agent fabric login

# 2. List workspaces (verify access)

pbi-agent fabric workspaces

{% if cfg.fabric.semantic_model_name %}

# 3. Trigger semantic model refresh

pbi-agent fabric refresh "{{ cfg.fabric.semantic_model_name }}" \

--workspace "{{ cfg.fabric.workspace_name }}" --wait

{% endif %} {% else %}
Configure workspace above to see CLI commands.
{% endif %}

Go-Live Checklist

{% set checks = [ (cfg.sources|length > 0, "Data sources configured"), (cfg.rules|length > 0, "Quality rules defined"), (cfg.tables|selectattr('layer','eq','bronze')|list|length > 0, "Bronze tables mapped"), (cfg.tables|selectattr('layer','eq','silver')|list|length > 0, "Silver transformations defined"), (cfg.tables|selectattr('layer','eq','gold')|list|length > 0, "Gold star schema designed"), (cfg.fabric.workspace_name != "", "Fabric workspace set"), (cfg.fabric.lakehouse_name != "", "Lakehouse name set"), (cfg.fabric.semantic_model_name != "", "Semantic model named"), ] %} {% for done, label in checks %}
{% if done %}✓{% else %}○{% endif %} {{ label }}
{% endfor %} {% set done_count = checks|selectattr('0')|list|length %}
Readiness {{ done_count }}/{{ checks|length }}

Ask Claude

Once config is saved, Claude can run all of this for you:

"Set up my Fabric workspace and create the medallion lakehouse"

"Trigger a full refresh and wait for completion"

"Validate my Delta tables are DirectLake-ready"

{% endblock %}