[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69BTM4E9J3KS4G2V166C3PF":3,"skill-same:01M69BTM4E9J3KS4G2V166C3PF":105},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":38,"ownerHtmlUrl":39,"ownerBlogUrl":40,"ownerDescription":41,"updatedAt":42,"install":43,"resources":56},"01M69BTM4E9J3KS4G2V166C3PF","fabric-cli-powerbi",null,"Use Fabric CLI for Power BI operations — semantic models, reports, DAX queries, refresh, gateways. Activate when users work with Power BI items, need to refresh datasets, execute DAX, manage reports, or troubleshoot refresh failures.","microsoft\u002Ffabric-cli","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69BTFDR7NKXSM2NHPR24PF4",178,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ffabric-cli\u002Fblob\u002Fmain\u002F.ai-assets\u002Fskills\u002Ffabric-cli-powerbi\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27],"cli","powerbi","fabric cli","fabric","fabric cli powerbi","troubleshoot","dax","power bi","semantic models","2026-11-10 10:12:30",false,"---\nname: fabric-cli-powerbi\ndescription: Use Fabric CLI for Power BI operations — semantic models, reports, DAX queries, refresh, gateways. Activate when users work with Power BI items, need to refresh datasets, execute DAX, manage reports, or troubleshoot refresh failures.\n---\n\n# Fabric CLI Power BI Operations\n\nExpert guidance for working with Power BI items (semantic models, reports, dashboards) using the `fab` CLI.\n\n## When to Use This Skill\n\nActivate automatically when tasks involve:\n\n- Semantic model (dataset) operations — get, export, refresh, update\n- Report management — export, clone, rebind to different model\n- Executing DAX queries against semantic models\n- Managing refresh schedules and troubleshooting failures\n- Gateway and data source configuration\n- TMDL (Tabular Model Definition Language) operations\n\n## Prerequisites\n\n- Load `fabric-cli-core` skill first for foundational CLI guidance\n- User must be authenticated: `fab auth status`\n- Appropriate workspace permissions for target items\n\n## Automation Scripts\n\nReady-to-use Python scripts for Power BI tasks. Run any script with `--help` for full options.\n\n| Script | Purpose | Usage |\n|--------|---------|-------|\n| `refresh_model.py` | Trigger and monitor semantic model refresh | `python scripts\u002Frefresh_model.py \u003Cmodel> [--wait] [--timeout 300]` |\n| `list_refresh_history.py` | Show refresh history and failure details | `python scripts\u002Flist_refresh_history.py \u003Cmodel> [--last N]` |\n| `rebind_report.py` | Rebind report to different semantic model | `python scripts\u002Frebind_report.py \u003Creport> --model \u003Cnew-model>` |\n\nScripts are located in the `scripts\u002F` folder of this skill.\n\n## 1 - Power BI Item Types\n\n| Entity Suffix | Type | Description |\n|---------------|------|-------------|\n| `.SemanticModel` | Semantic Model | Power BI dataset (tabular model) |\n| `.Report` | Report | Power BI report (visualizations) |\n| `.Dashboard` | Dashboard | Power BI dashboard (pinned tiles) |\n| `.Dataflow` | Dataflow | Power Query dataflow |\n| `.PaginatedReport` | Paginated Report | RDL-based paginated report |\n\n### Path Examples\n\n```\n# Semantic model\nProduction.Workspace\u002FSales.SemanticModel\n\n# Report connected to model\nProduction.Workspace\u002FSalesReport.Report\n\n# Dashboard\nProduction.Workspace\u002FExecutiveDash.Dashboard\n```\n\n## 2 - Semantic Model Operations\n\n### Get Model Information\n\n```bash\n# Check if model exists\nfab exists \"ws.Workspace\u002FModel.SemanticModel\"\n\n# Get model properties\nfab get \"ws.Workspace\u002FModel.SemanticModel\"\n\n# Get model ID (needed for Power BI API calls)\nfab get \"ws.Workspace\u002FModel.SemanticModel\" -q \"id\"\n\n# Get full definition (TMDL)\nfab get \"ws.Workspace\u002FModel.SemanticModel\" -q \"definition\"\n```\n\n### Export Model\n\n```bash\n# Export to local directory (PBIP format with TMDL)\nfab export \"ws.Workspace\u002FModel.SemanticModel\" -o .\u002Fexports -f\n```\n\nCreates folder structure:\n```\nModel.SemanticModel\u002F\n├── .platform\n├── definition.pbism\n└── definition\u002F\n    ├── model.tmdl\n    ├── tables\u002F\n    │   ├── Sales.tmdl\n    │   └── Date.tmdl\n    └── relationships.tmdl\n```\n\n### Import\u002FUpdate Model\n\n```bash\n# Import from PBIP folder\nfab import \"ws.Workspace\u002FModel.SemanticModel\" -i .\u002Fexports\u002FModel.SemanticModel -f\n\n# Copy between workspaces\nfab cp \"Dev.Workspace\u002FModel.SemanticModel\" \"Prod.Workspace\u002FModel.SemanticModel\" -f\n```\n\n## 3 - Refresh Operations\n\n### Trigger Refresh\n\n```bash\n# Get IDs\nWS_ID=$(fab get \"ws.Workspace\" -q \"id\" | tr -d '\"')\nMODEL_ID=$(fab get \"ws.Workspace\u002FModel.SemanticModel\" -q \"id\" | tr -d '\"')\n\n# Trigger full refresh\nfab api -A powerbi \"groups\u002F$WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes\" -X post -i '{\"type\":\"Full\"}'\n\n# Check refresh status\nfab api -A powerbi \"groups\u002F$WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes?\\$top=1\"\n```\n\n### Enhanced Refresh (Partition-Level)\n\n```bash\n# Refresh specific tables\nfab api -A powerbi \"groups\u002F$WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes\" -X post -i '{\n  \"type\": \"Full\",\n  \"commitMode\": \"transactional\",\n  \"objects\": [\n    {\"table\": \"Sales\"},\n    {\"table\": \"Inventory\"}\n  ]\n}'\n\n# Refresh with retry\nfab api -A powerbi \"groups\u002F$WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes\" -X post -i '{\n  \"type\": \"Full\",\n  \"retryCount\": 3\n}'\n```\n\n### Refresh Schedule\n\n```bash\n# Get current schedule\nfab api -A powerbi \"datasets\u002F$MODEL_ID\u002FrefreshSchedule\"\n\n# Set daily refresh at 6 AM UTC\nfab api -A powerbi \"datasets\u002F$MODEL_ID\u002FrefreshSchedule\" -X patch -i '{\n  \"enabled\": true,\n  \"days\": [\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\"],\n  \"times\": [\"06:00\"],\n  \"localTimeZoneId\": \"UTC\"\n}'\n```\n\n### Troubleshoot Refresh Failures\n\n```bash\n# Get refresh history\nfab api -A powerbi \"groups\u002F$WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes\"\n\n# Common failure patterns:\n# - \"credentials\" → Update data source credentials\n# - \"gateway\" → Check gateway status\n# - \"timeout\" → Use enhanced refresh with smaller batches\n# - \"memory\" → Optimize model or use incremental refresh\n```\n\n## 4 - DAX Query Execution\n\nExecute DAX queries against semantic models:\n\n```bash\nMODEL_ID=$(fab get \"ws.Workspace\u002FModel.SemanticModel\" -q \"id\" | tr -d '\"')\n\n# Simple query\nfab api -A powerbi \"datasets\u002F$MODEL_ID\u002FexecuteQueries\" -X post -i '{\n  \"queries\": [{\"query\": \"EVALUATE VALUES(Date[Year])\"}]\n}'\n\n# Aggregation query\nfab api -A powerbi \"datasets\u002F$MODEL_ID\u002FexecuteQueries\" -X post -i '{\n  \"queries\": [{\n    \"query\": \"EVALUATE SUMMARIZECOLUMNS(Date[Year], \\\"Total\\\", SUM(Sales[Amount]))\"\n  }]\n}'\n\n# TOPN query\nfab api -A powerbi \"datasets\u002F$MODEL_ID\u002FexecuteQueries\" -X post -i '{\n  \"queries\": [{\n    \"query\": \"EVALUATE TOPN(10, Product, [Total Sales], DESC)\"\n  }]\n}'\n\n# Query with parameters\nfab api -A powerbi \"datasets\u002F$MODEL_ID\u002FexecuteQueries\" -X post -i '{\n  \"queries\": [{\n    \"query\": \"EVALUATE FILTER(Sales, Sales[Year] = @Year)\",\n    \"parameters\": [{\"name\": \"@Year\", \"value\": \"2024\"}]\n  }]\n}'\n```\n\n## 5 - Report Operations\n\n### Get Report Info\n\n```bash\n# Check exists\nfab exists \"ws.Workspace\u002FReport.Report\"\n\n# Get properties\nfab get \"ws.Workspace\u002FReport.Report\"\n\n# Get connected model\nfab get \"ws.Workspace\u002FReport.Report\" -q \"definition.parts[?contains(path, 'definition.pbir')].payload | [0]\"\n```\n\n### Export Report\n\n```bash\n# Export to PBIP format\nfab export \"ws.Workspace\u002FReport.Report\" -o .\u002Fexports -f\n```\n\n### Clone Report\n\n```bash\n# Copy within workspace\nfab cp \"ws.Workspace\u002FReport.Report\" \"ws.Workspace\u002FReportCopy.Report\" -f\n\n# Copy to another workspace\nfab cp \"Dev.Workspace\u002FReport.Report\" \"Prod.Workspace\u002FReport.Report\" -f\n```\n\n### Rebind Report to Different Model\n\n```bash\nWS_ID=$(fab get \"ws.Workspace\" -q \"id\" | tr -d '\"')\nREPORT_ID=$(fab get \"ws.Workspace\u002FReport.Report\" -q \"id\" | tr -d '\"')\nNEW_MODEL_ID=$(fab get \"ws.Workspace\u002FNewModel.SemanticModel\" -q \"id\" | tr -d '\"')\n\nfab api -A powerbi \"groups\u002F$WS_ID\u002Freports\u002F$REPORT_ID\u002FRebind\" -X post -i \"{\n  \\\"datasetId\\\": \\\"$NEW_MODEL_ID\\\"\n}\"\n```\n\n### Export Report to File (PDF\u002FPPTX)\n\n```bash\n# Export to PDF\nfab api -A powerbi \"groups\u002F$WS_ID\u002Freports\u002F$REPORT_ID\u002FExportTo\" -X post -i '{\n  \"format\": \"PDF\"\n}'\n\n# Poll for completion, then download\n```\n\n## 6 - Gateway Operations\n\n### List Gateways\n\n```bash\n# Tenant-level gateways (hidden entity)\nfab ls .gateways\n\n# Get gateway details\nfab get \".gateways\u002FMyGateway.Gateway\"\n```\n\n### Data Source Management\n\n```bash\nGATEWAY_ID=$(fab get \".gateways\u002FMyGateway.Gateway\" -q \"id\" | tr -d '\"')\n\n# List data sources on gateway\nfab api -A powerbi \"gateways\u002F$GATEWAY_ID\u002Fdatasources\"\n\n# Get data source status\nfab api -A powerbi \"gateways\u002F$GATEWAY_ID\u002Fdatasources\u002F$DATASOURCE_ID\"\n```\n\n### Update Data Source Credentials\n\n```bash\n# Update credentials (basic auth example)\nfab api -A powerbi \"gateways\u002F$GATEWAY_ID\u002Fdatasources\u002F$DATASOURCE_ID\" -X patch -i '{\n  \"credentialDetails\": {\n    \"credentialType\": \"Basic\",\n    \"credentials\": \"{\\\"credentialData\\\":[{\\\"name\\\":\\\"username\\\",\\\"value\\\":\\\"user\\\"},{\\\"name\\\":\\\"password\\\",\\\"value\\\":\\\"pass\\\"}]}\",\n    \"encryptedConnection\": \"Encrypted\",\n    \"encryptionAlgorithm\": \"None\",\n    \"privacyLevel\": \"Organizational\"\n  }\n}'\n```\n\n## 7 - Take Over Ownership\n\nWhen a semantic model owner leaves the organization:\n\n```bash\nWS_ID=$(fab get \"ws.Workspace\" -q \"id\" | tr -d '\"')\nMODEL_ID=$(fab get \"ws.Workspace\u002FModel.SemanticModel\" -q \"id\" | tr -d '\"')\n\n# Take over semantic model ownership\nfab api -A powerbi \"groups\u002F$WS_ID\u002Fdatasets\u002F$MODEL_ID\u002FDefault.TakeOver\" -X post\n```\n\n## 8 - Common Patterns\n\n### Dev to Production Deployment\n\n```bash\n#!\u002Fbin\u002Fbash\nDEV_WS=\"Dev.Workspace\"\nPROD_WS=\"Prod.Workspace\"\n\n# 1. Export from dev\nfab export \"$DEV_WS\u002FSales.SemanticModel\" -o .\u002Fdeploy -f\nfab export \"$DEV_WS\u002FSalesReport.Report\" -o .\u002Fdeploy -f\n\n# 2. Import to prod\nfab import \"$PROD_WS\u002FSales.SemanticModel\" -i .\u002Fdeploy\u002FSales.SemanticModel -f\nfab import \"$PROD_WS\u002FSalesReport.Report\" -i .\u002Fdeploy\u002FSalesReport.Report -f\n\n# 3. Trigger refresh\nPROD_WS_ID=$(fab get \"$PROD_WS\" -q \"id\" | tr -d '\"')\nMODEL_ID=$(fab get \"$PROD_WS\u002FSales.SemanticModel\" -q \"id\" | tr -d '\"')\nfab api -A powerbi \"groups\u002F$PROD_WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes\" -X post -i '{\"type\":\"Full\"}'\n\n# 4. Verify\nfab api -A powerbi \"groups\u002F$PROD_WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes?\\$top=1\" -q \"value[0].status\"\n```\n\n### Backup Semantic Model\n\n```bash\n# Export definition for version control\nfab export \"Prod.Workspace\u002FModel.SemanticModel\" -o .\u002Fbackups\u002F$(date +%Y%m%d) -f\ngit add .\u002Fbackups\u002F\ngit commit -m \"Backup Model $(date +%Y-%m-%d)\"\n```\n\n### Incremental Refresh Setup\n\nFor large models, use incremental refresh:\n\n1. Configure in Power BI Desktop with RangeStart\u002FRangeEnd parameters\n2. Publish to workspace\n3. First refresh creates partitions:\n\n```bash\n# Monitor partition creation\nfab api -A powerbi \"groups\u002F$WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes?\\$top=5\"\n```\n\n## 9 - Safety Guidelines\n\n- **Always verify workspace context** before refresh operations\n- **Test in dev first** — never refresh production without testing\n- **Monitor refresh duration** — set appropriate timeouts\n- **Backup before major changes** — export definition before updates\n- **Use enhanced refresh** for large models to avoid timeouts\n\n## 10 - References\n\nFor detailed patterns, see:\n\n- [references\u002Fsemantic-models.md](.\u002Freferences\u002Fsemantic-models.md) — Full TMDL operations\n- [references\u002Freports.md](.\u002Freferences\u002Freports.md) — Report management\n- [references\u002Frefresh.md](.\u002Freferences\u002Frefresh.md) — Refresh troubleshooting\n- [references\u002Fdax-queries.md](.\u002Freferences\u002Fdax-queries.md) — Advanced DAX patterns\n- [references\u002Fgateways.md](.\u002Freferences\u002Fgateways.md) — Gateway configuration\n","# Fabric CLI Power BI Operations\n\nExpert guidance for working with Power BI items (semantic models, reports, dashboards) using the `fab` CLI.\n\n## When to Use This Skill\n\nActivate automatically when tasks involve:\n\n- Semantic model (dataset) operations — get, export, refresh, update\n- Report management — export, clone, rebind to different model\n- Executing DAX queries against semantic models\n- Managing refresh schedules and troubleshooting failures\n- Gateway and data source configuration\n- TMDL (Tabular Model Definition Language) operations\n\n## Prerequisites\n\n- Load `fabric-cli-core` skill first for foundational CLI guidance\n- User must be authenticated: `fab auth status`\n- Appropriate workspace permissions for target items\n\n## Automation Scripts\n\nReady-to-use Python scripts for Power BI tasks. Run any script with `--help` for full options.\n\n| Script | Purpose | Usage |\n|--------|---------|-------|\n| `refresh_model.py` | Trigger and monitor semantic model refresh | `python scripts\u002Frefresh_model.py \u003Cmodel> [--wait] [--timeout 300]` |\n| `list_refresh_history.py` | Show refresh history and failure details | `python scripts\u002Flist_refresh_history.py \u003Cmodel> [--last N]` |\n| `rebind_report.py` | Rebind report to different semantic model | `python scripts\u002Frebind_report.py \u003Creport> --model \u003Cnew-model>` |\n\nScripts are located in the `scripts\u002F` folder of this skill.\n\n## 1 - Power BI Item Types\n\n| Entity Suffix | Type | Description |\n|---------------|------|-------------|\n| `.SemanticModel` | Semantic Model | Power BI dataset (tabular model) |\n| `.Report` | Report | Power BI report (visualizations) |\n| `.Dashboard` | Dashboard | Power BI dashboard (pinned tiles) |\n| `.Dataflow` | Dataflow | Power Query dataflow |\n| `.PaginatedReport` | Paginated Report | RDL-based paginated report |\n\n### Path Examples\n\n```\n# Semantic model\nProduction.Workspace\u002FSales.SemanticModel\n\n# Report connected to model\nProduction.Workspace\u002FSalesReport.Report\n\n# Dashboard\nProduction.Workspace\u002FExecutiveDash.Dashboard\n```\n\n## 2 - Semantic Model Operations\n\n### Get Model Information\n\n```bash\n# Check if model exists\nfab exists \"ws.Workspace\u002FModel.SemanticModel\"\n\n# Get model properties\nfab get \"ws.Workspace\u002FModel.SemanticModel\"\n\n# Get model ID (needed for Power BI API calls)\nfab get \"ws.Workspace\u002FModel.SemanticModel\" -q \"id\"\n\n# Get full definition (TMDL)\nfab get \"ws.Workspace\u002FModel.SemanticModel\" -q \"definition\"\n```\n\n### Export Model\n\n```bash\n# Export to local directory (PBIP format with TMDL)\nfab export \"ws.Workspace\u002FModel.SemanticModel\" -o .\u002Fexports -f\n```\n\nCreates folder structure:\n```\nModel.SemanticModel\u002F\n├── .platform\n├── definition.pbism\n└── definition\u002F\n    ├── model.tmdl\n    ├── tables\u002F\n    │   ├── Sales.tmdl\n    │   └── Date.tmdl\n    └── relationships.tmdl\n```\n\n### Import\u002FUpdate Model\n\n```bash\n# Import from PBIP folder\nfab import \"ws.Workspace\u002FModel.SemanticModel\" -i .\u002Fexports\u002FModel.SemanticModel -f\n\n# Copy between workspaces\nfab cp \"Dev.Workspace\u002FModel.SemanticModel\" \"Prod.Workspace\u002FModel.SemanticModel\" -f\n```\n\n## 3 - Refresh Operations\n\n### Trigger Refresh\n\n```bash\n# Get IDs\nWS_ID=$(fab get \"ws.Workspace\" -q \"id\" | tr -d '\"')\nMODEL_ID=$(fab get \"ws.Workspace\u002FModel.SemanticModel\" -q \"id\" | tr -d '\"')\n\n# Trigger full refresh\nfab api -A powerbi \"groups\u002F$WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes\" -X post -i '{\"type\":\"Full\"}'\n\n# Check refresh status\nfab api -A powerbi \"groups\u002F$WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes?\\$top=1\"\n```\n\n### Enhanced Refresh (Partition-Level)\n\n```bash\n# Refresh specific tables\nfab api -A powerbi \"groups\u002F$WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes\" -X post -i '{\n  \"type\": \"Full\",\n  \"commitMode\": \"transactional\",\n  \"objects\": [\n    {\"table\": \"Sales\"},\n    {\"table\": \"Inventory\"}\n  ]\n}'\n\n# Refresh with retry\nfab api -A powerbi \"groups\u002F$WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes\" -X post -i '{\n  \"type\": \"Full\",\n  \"retryCount\": 3\n}'\n```\n\n### Refresh Schedule\n\n```bash\n# Get current schedule\nfab api -A powerbi \"datasets\u002F$MODEL_ID\u002FrefreshSchedule\"\n\n# Set daily refresh at 6 AM UTC\nfab api -A powerbi \"datasets\u002F$MODEL_ID\u002FrefreshSchedule\" -X patch -i '{\n  \"enabled\": true,\n  \"days\": [\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\"],\n  \"times\": [\"06:00\"],\n  \"localTimeZoneId\": \"UTC\"\n}'\n```\n\n### Troubleshoot Refresh Failures\n\n```bash\n# Get refresh history\nfab api -A powerbi \"groups\u002F$WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes\"\n\n# Common failure patterns:\n# - \"credentials\" → Update data source credentials\n# - \"gateway\" → Check gateway status\n# - \"timeout\" → Use enhanced refresh with smaller batches\n# - \"memory\" → Optimize model or use incremental refresh\n```\n\n## 4 - DAX Query Execution\n\nExecute DAX queries against semantic models:\n\n```bash\nMODEL_ID=$(fab get \"ws.Workspace\u002FModel.SemanticModel\" -q \"id\" | tr -d '\"')\n\n# Simple query\nfab api -A powerbi \"datasets\u002F$MODEL_ID\u002FexecuteQueries\" -X post -i '{\n  \"queries\": [{\"query\": \"EVALUATE VALUES(Date[Year])\"}]\n}'\n\n# Aggregation query\nfab api -A powerbi \"datasets\u002F$MODEL_ID\u002FexecuteQueries\" -X post -i '{\n  \"queries\": [{\n    \"query\": \"EVALUATE SUMMARIZECOLUMNS(Date[Year], \\\"Total\\\", SUM(Sales[Amount]))\"\n  }]\n}'\n\n# TOPN query\nfab api -A powerbi \"datasets\u002F$MODEL_ID\u002FexecuteQueries\" -X post -i '{\n  \"queries\": [{\n    \"query\": \"EVALUATE TOPN(10, Product, [Total Sales], DESC)\"\n  }]\n}'\n\n# Query with parameters\nfab api -A powerbi \"datasets\u002F$MODEL_ID\u002FexecuteQueries\" -X post -i '{\n  \"queries\": [{\n    \"query\": \"EVALUATE FILTER(Sales, Sales[Year] = @Year)\",\n    \"parameters\": [{\"name\": \"@Year\", \"value\": \"2024\"}]\n  }]\n}'\n```\n\n## 5 - Report Operations\n\n### Get Report Info\n\n```bash\n# Check exists\nfab exists \"ws.Workspace\u002FReport.Report\"\n\n# Get properties\nfab get \"ws.Workspace\u002FReport.Report\"\n\n# Get connected model\nfab get \"ws.Workspace\u002FReport.Report\" -q \"definition.parts[?contains(path, 'definition.pbir')].payload | [0]\"\n```\n\n### Export Report\n\n```bash\n# Export to PBIP format\nfab export \"ws.Workspace\u002FReport.Report\" -o .\u002Fexports -f\n```\n\n### Clone Report\n\n```bash\n# Copy within workspace\nfab cp \"ws.Workspace\u002FReport.Report\" \"ws.Workspace\u002FReportCopy.Report\" -f\n\n# Copy to another workspace\nfab cp \"Dev.Workspace\u002FReport.Report\" \"Prod.Workspace\u002FReport.Report\" -f\n```\n\n### Rebind Report to Different Model\n\n```bash\nWS_ID=$(fab get \"ws.Workspace\" -q \"id\" | tr -d '\"')\nREPORT_ID=$(fab get \"ws.Workspace\u002FReport.Report\" -q \"id\" | tr -d '\"')\nNEW_MODEL_ID=$(fab get \"ws.Workspace\u002FNewModel.SemanticModel\" -q \"id\" | tr -d '\"')\n\nfab api -A powerbi \"groups\u002F$WS_ID\u002Freports\u002F$REPORT_ID\u002FRebind\" -X post -i \"{\n  \\\"datasetId\\\": \\\"$NEW_MODEL_ID\\\"\n}\"\n```\n\n### Export Report to File (PDF\u002FPPTX)\n\n```bash\n# Export to PDF\nfab api -A powerbi \"groups\u002F$WS_ID\u002Freports\u002F$REPORT_ID\u002FExportTo\" -X post -i '{\n  \"format\": \"PDF\"\n}'\n\n# Poll for completion, then download\n```\n\n## 6 - Gateway Operations\n\n### List Gateways\n\n```bash\n# Tenant-level gateways (hidden entity)\nfab ls .gateways\n\n# Get gateway details\nfab get \".gateways\u002FMyGateway.Gateway\"\n```\n\n### Data Source Management\n\n```bash\nGATEWAY_ID=$(fab get \".gateways\u002FMyGateway.Gateway\" -q \"id\" | tr -d '\"')\n\n# List data sources on gateway\nfab api -A powerbi \"gateways\u002F$GATEWAY_ID\u002Fdatasources\"\n\n# Get data source status\nfab api -A powerbi \"gateways\u002F$GATEWAY_ID\u002Fdatasources\u002F$DATASOURCE_ID\"\n```\n\n### Update Data Source Credentials\n\n```bash\n# Update credentials (basic auth example)\nfab api -A powerbi \"gateways\u002F$GATEWAY_ID\u002Fdatasources\u002F$DATASOURCE_ID\" -X patch -i '{\n  \"credentialDetails\": {\n    \"credentialType\": \"Basic\",\n    \"credentials\": \"{\\\"credentialData\\\":[{\\\"name\\\":\\\"username\\\",\\\"value\\\":\\\"user\\\"},{\\\"name\\\":\\\"password\\\",\\\"value\\\":\\\"pass\\\"}]}\",\n    \"encryptedConnection\": \"Encrypted\",\n    \"encryptionAlgorithm\": \"None\",\n    \"privacyLevel\": \"Organizational\"\n  }\n}'\n```\n\n## 7 - Take Over Ownership\n\nWhen a semantic model owner leaves the organization:\n\n```bash\nWS_ID=$(fab get \"ws.Workspace\" -q \"id\" | tr -d '\"')\nMODEL_ID=$(fab get \"ws.Workspace\u002FModel.SemanticModel\" -q \"id\" | tr -d '\"')\n\n# Take over semantic model ownership\nfab api -A powerbi \"groups\u002F$WS_ID\u002Fdatasets\u002F$MODEL_ID\u002FDefault.TakeOver\" -X post\n```\n\n## 8 - Common Patterns\n\n### Dev to Production Deployment\n\n```bash\n#!\u002Fbin\u002Fbash\nDEV_WS=\"Dev.Workspace\"\nPROD_WS=\"Prod.Workspace\"\n\n# 1. Export from dev\nfab export \"$DEV_WS\u002FSales.SemanticModel\" -o .\u002Fdeploy -f\nfab export \"$DEV_WS\u002FSalesReport.Report\" -o .\u002Fdeploy -f\n\n# 2. Import to prod\nfab import \"$PROD_WS\u002FSales.SemanticModel\" -i .\u002Fdeploy\u002FSales.SemanticModel -f\nfab import \"$PROD_WS\u002FSalesReport.Report\" -i .\u002Fdeploy\u002FSalesReport.Report -f\n\n# 3. Trigger refresh\nPROD_WS_ID=$(fab get \"$PROD_WS\" -q \"id\" | tr -d '\"')\nMODEL_ID=$(fab get \"$PROD_WS\u002FSales.SemanticModel\" -q \"id\" | tr -d '\"')\nfab api -A powerbi \"groups\u002F$PROD_WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes\" -X post -i '{\"type\":\"Full\"}'\n\n# 4. Verify\nfab api -A powerbi \"groups\u002F$PROD_WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes?\\$top=1\" -q \"value[0].status\"\n```\n\n### Backup Semantic Model\n\n```bash\n# Export definition for version control\nfab export \"Prod.Workspace\u002FModel.SemanticModel\" -o .\u002Fbackups\u002F$(date +%Y%m%d) -f\ngit add .\u002Fbackups\u002F\ngit commit -m \"Backup Model $(date +%Y-%m-%d)\"\n```\n\n### Incremental Refresh Setup\n\nFor large models, use incremental refresh:\n\n1. Configure in Power BI Desktop with RangeStart\u002FRangeEnd parameters\n2. Publish to workspace\n3. First refresh creates partitions:\n\n```bash\n# Monitor partition creation\nfab api -A powerbi \"groups\u002F$WS_ID\u002Fdatasets\u002F$MODEL_ID\u002Frefreshes?\\$top=5\"\n```\n\n## 9 - Safety Guidelines\n\n- **Always verify workspace context** before refresh operations\n- **Test in dev first** — never refresh production without testing\n- **Monitor refresh duration** — set appropriate timeouts\n- **Backup before major changes** — export definition before updates\n- **Use enhanced refresh** for large models to avoid timeouts\n\n## 10 - References\n\nFor detailed patterns, see:\n\n- [references\u002Fsemantic-models.md](.\u002Freferences\u002Fsemantic-models.md) — Full TMDL operations\n- [references\u002Freports.md](.\u002Freferences\u002Freports.md) — Report management\n- [references\u002Frefresh.md](.\u002Freferences\u002Frefresh.md) — Refresh troubleshooting\n- [references\u002Fdax-queries.md](.\u002Freferences\u002Fdax-queries.md) — Advanced DAX patterns\n- [references\u002Fgateways.md](.\u002Freferences\u002Fgateways.md) — Gateway configuration\n",{"name":5,"description":7},"main","3a18b952fc78f49ceeabd2ddbbd6ca6e43ac1cfd",".ai-assets\u002Fskills\u002Ffabric-cli-powerbi",66,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ffabric-cli","https:\u002F\u002Fmicrosoft.github.io\u002Ffabric-cli\u002F","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-04 15:04:14",{"source":8,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add microsoft\u002Ffabric-cli --skill fabric-cli-powerbi",{"tool":49,"command":50},"bunx","bunx skills add microsoft\u002Ffabric-cli --skill fabric-cli-powerbi",{"tool":52,"command":53},"pnpm","pnpm dlx skills add microsoft\u002Ffabric-cli --skill fabric-cli-powerbi","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ffabric-cli\u002Fblob\u002Fmain\u002F.ai-assets\u002Fskills\u002Ffabric-cli-powerbi\u002FSKILL.md",true,[57,63,67,71,75,79,83,87,91,97,101],{"path":58,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":61,"sourceHtmlUrl":62},"README.md","REFERENCE","参考文档",1586,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ffabric-cli\u002Fblob\u002Fmain\u002F.ai-assets\u002Fskills\u002Ffabric-cli-powerbi\u002FREADME.md",{"path":64,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":65,"sourceHtmlUrl":66},"references\u002Fadvanced-usage.md",12541,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Ffine-tuning-peft\u002Freferences\u002Fadvanced-usage.md",{"path":68,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":69,"sourceHtmlUrl":70},"references\u002Fdax-queries.md",4704,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ffabric-cli\u002Fblob\u002Fmain\u002F.ai-assets\u002Fskills\u002Ffabric-cli-powerbi\u002Freferences\u002Fdax-queries.md",{"path":72,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fgateways.md",4498,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ffabric-cli\u002Fblob\u002Fmain\u002F.ai-assets\u002Fskills\u002Ffabric-cli-powerbi\u002Freferences\u002Fgateways.md",{"path":76,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Frefresh.md",5546,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ffabric-cli\u002Fblob\u002Fmain\u002F.ai-assets\u002Fskills\u002Ffabric-cli-powerbi\u002Freferences\u002Frefresh.md",{"path":80,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Freports.md",5183,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ffabric-cli\u002Fblob\u002Fmain\u002F.ai-assets\u002Fskills\u002Ffabric-cli-powerbi\u002Freferences\u002Freports.md",{"path":84,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Fsemantic-models.md",4381,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ffabric-cli\u002Fblob\u002Fmain\u002F.ai-assets\u002Fskills\u002Ffabric-cli-powerbi\u002Freferences\u002Fsemantic-models.md",{"path":88,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Ftroubleshooting.md",10344,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fai-research\u002Ffine-tuning-peft\u002Freferences\u002Ftroubleshooting.md",{"path":92,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":95,"sourceHtmlUrl":96},"scripts\u002Flist_refresh_history.py","SCRIPT","脚本",12398,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ffabric-cli\u002Fblob\u002Fmain\u002F.ai-assets\u002Fskills\u002Ffabric-cli-powerbi\u002Fscripts\u002Flist_refresh_history.py",{"path":98,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":99,"sourceHtmlUrl":100},"scripts\u002Frebind_report.py",12535,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ffabric-cli\u002Fblob\u002Fmain\u002F.ai-assets\u002Fskills\u002Ffabric-cli-powerbi\u002Fscripts\u002Frebind_report.py",{"path":102,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":103,"sourceHtmlUrl":104},"scripts\u002Frefresh_model.py",12890,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ffabric-cli\u002Fblob\u002Fmain\u002F.ai-assets\u002Fskills\u002Ffabric-cli-powerbi\u002Fscripts\u002Frefresh_model.py",[106],{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":28},"01M69BTHDJQRPQFH21S1DWW0VW","fabric-cli-core","Use Microsoft Fabric CLI (fab) to manage workspaces, semantic models, reports, notebooks, and Fabric resources. Activate when users mention fab, Fabric CLI, or need to automate Fabric operations.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Ffabric-cli\u002Fblob\u002Fmain\u002F.ai-assets\u002Fskills\u002Ffabric-cli-core\u002FSKILL.md",[],[19,21,113,22,114,9,115,27],"core","fabric cli core","microsoft fabric"]