Skip to content

Weekly Researchβ€” Power BI & Microsoft Fabric: 15 May 2026Β #19

Description

@github-actions

πŸ“… Research date: 2026-05-15 | Scope: Business Intelligence, Power BI, Microsoft Fabric automation & the broader AI-driven analytics ecosystem.


πŸ—žοΈ Interesting News

semantic-link-labs 0.15.0 ships β€” 14 May 2026 πŸŽ‰

Hot off the press, yesterday's release is the most feature-dense drop since 0.14.0. Headline items:

Area What's New
Mirrored Azure Databricks Catalog Full CRUD (create_mirrored_azure_databricks_catalog, list_, delete_, get_, update_); ConnectMirroredAzureDatabricksCatalog wraps SQL/T-SQL execution against mirrored Databricks. generate_direct_lake_semantic_model now accepts a Mirrored Azure Databricks Catalog as a source.
Lakehouse schemas create_schema and create_materialized_lake_view β€” the latter only supported in schema-enabled lakehouses.
Perspective editor Interactive UI for creating/managing perspectives in semantic models.
deploy_semantic_model mini-model filter New filters parameter allows deploying a subset of a master model scoped to a perspective β€” "single-lakehouse-sourced Direct Lake" only.
TOM ergonomics add_direct_lake_tables, hide_key_columns, mark_primary_keys, get_mini_model_properties; all add_* functions now return the created object.
SQL Database list_restorable_deleted_databases, revalidate_cmk, "Sensitivity Label Id" column in list_sql_databases.
Workspace tags apply_workspace_tags / unapply_workspace_tags.
Bug fixes #1163, #1168, #1180, #1220 (the write_deltalake() schema error), and remove_vertipaq_annotations.

Active PRs Heading Toward 0.15.x / 0.16.0

Several substantial PRs have opened in the last week against main:

PR What It Does
#1221 list_apps() now returns "Workspace Id" β€” aligns the DataFrame with the Microsoft Admin Apps API
#1223 New sempy_labs.mirrored_catalog module: list/delete catalogs, trigger metadata refresh, monitor catalog & per-table mirroring status
#1226 extract_table_comments for Delta lakehouses β€” dual-path impl (pure deltalake library or PySpark DESCRIBE EXTENDED)
#1227 Full DAX parser/tokenizer/AST inside semantic-link-labs: parse_dax, format_dax (HTML color-coded), AST walk/find_all/transform, find_numeric_aggregation_columns, TOM-level find_non_numeric_aggregations
#1228 Fix list_data_access_roles path matching for CLS/RLS in Mirrored Catalogs β€” prefix matching for nested table paths

pbi-fixer Contribution Wave Still Incoming (Issue #1185)

30+ standalone PR batch adding a composable "linter-with-autofix" layer on top of semantic-link-labs:

  • Report fixers (IBCS): fix_pie_chart, fix_bar_chart, fix_column_chart, fix_line_chart, fix_ibcs_variance, fix_visual_alignment, fix_hide_visual_filters, fix_disable_show_items_no_data, fix_migrate_report_level_measures
  • Semantic model fixers: fix_floating_point_datatype, fix_do_not_summarize, fix_hide_foreign_keys, fix_use_divide_function, fix_measure_descriptions, fix_percentage_format, fix_whole_number_format, fix_data_category, fix_date_column_format
  • Bulk authoring helpers: add_calculated_calendar, add_calc_group_time_intelligence, add_calc_group_units, add_measures_from_columns, add_last_refresh_table, add_prep_for_ai

The add_prep_for_ai function auto-generates synonyms, descriptions, and linguistic schema to make models Copilot-ready β€” the most AI-integration-forward piece of the batch.

fabric-toolbox β€” New & Updated Tools

The Microsoft Fabric Customer Advisory Team (CAT) has updated the toolbox README to highlight:

  • 🟒 NEW: Fabric Assessment Tool (fat) v0.2.2 β€” CLI for scanning Synapse/Databricks workspaces and exporting structured inventory for Fabric migration readiness analysis. Supports Azure CLI and Fabric Notebook authentication; dual-path Entra ID / SQL auth for dedicated pools.
  • 🟑 UPDATED: Fabric Data Factory Migration Assistant β€” pipeline migration from ADF/Synapse
  • 🟒 NEW Script: Mirror CCI Tables for Fabric SQL DB β€” columnstore index mirroring helper
  • DAX Performance Tuner MCP Server β€” connects Copilot Chat or Claude Desktop to ADOMD.NET; performs evidence-based DAX optimization in a 2-stage workflow with semantic equivalence checking. Built from C# source via setup.bat / setup.ps1.
  • Semantic Model MCP Server β€” companion MCP server for semantic model introspection

πŸ₯Š Competitive Analysis

Platform Latest Move
Microsoft Fabric DAX-to-SQL push-down improvements in Fabric's serverless SQL endpoint; Direct Lake now supports Mirrored Azure Databricks Catalog as a source β€” Fabric is increasingly the unifying layer across the Azure/Databricks ecosystem.
Databricks The Fabric mirroring integration with Databricks catalogs goes both ways: Fabric can now mirror a Databricks Catalog as a first-class Fabric item, effectively making Databricks the upstream lakehouse and Fabric the BI layer β€” a potential coexistence posture rather than a displacement fight.
Anthropic / Claude Released claude-for-financial-services (github.com/anthropics/financial-services) β€” a reference-agent library for investment banking, equity research, PE, and wealth management. Agents: Pitch Agent, Market Researcher, Earnings Reviewer, GL Reconciler, Month-End Closer, Valuation Reviewer, KYC Screener. Distributable as Claude Cowork plugins or via the Managed Agents API. Directly relevant: the GL Reconciler and Month-End Closer are the kind of BI-adjacent workflows that Power BI + Fabric teams support in FP&A.
Tableau (Salesforce) Continues to compete at the enterprise visualization layer; no significant announcements this week in the open-source ecosystem.
Looker (Google) Silent in open source; Google's LookML-to-BigQuery positioning keeps it tight to GCP rather than the Fabric/Azure ecosystem.

πŸ“„ Research Papers & Technical Reads

DAX Parser Inside semantic-link-labs (PR #1227)

This PR is research-grade β€” it ships a Pratt-style DAX parser with VAR/RETURN support, virtual columns, AST walk/transform, and HTML color-coded rendering. While not an academic paper, it represents the first full Python DAX AST library baked into the sempy_labs ecosystem. Interesting design notes:

  • Regex-driven tokenizer with a known sql parameter name typo and a string-escape regex bug (flagged in the PR)
  • _generator.py is a minimal ASTβ†’DAX printer β€” partial coverage only
  • _analysis.py provides find_numeric_aggregation_columns as a concrete use-case driving the parser

BPA Rule Proposal: SUM on Text Columns (Issue #1222)

A well-argued feature request with a thorough write-up: detect at BPA (Best Practice Analyzer) time when a measure calls SUM() or AVERAGE() over a String-typed column. The analysis notes that neither the sempy_labs BPA rule pack nor the canonical community BPA rules at Microsoft/Analysis-Services cover this case β€” a genuine industry gap. Proposed as severity "Error" (the model is demonstrably broken, not merely styled poorly). This is a good reference for anyone building their own pre-publish validation pipelines.

evaluate_dax_impersonation API Endpoint Bug (Issue #1225)

A reported regression: labs.evaluate_dax_impersonation(...) now calls api.fabric.microsoft.com/v1.0/myorg/groups/{id}/datasets/{id}/executeQueries but the documented endpoint is api.powerbi.com. This silent base-URL drift is worth monitoring β€” it affects any automation that queries semantic models with impersonation from a Fabric notebook.


πŸ’‘ New Ideas

1. Automated Report Quality Gate in CI/CD

The pbi-fixer batch of 30+ functions, combined with BPA rules, creates the building blocks for a Power BI CI/CD quality gate: run all fix_* functions in "dry run" mode, collect violations, fail the pipeline if error-severity BPA rules or fixer-detectable issues exist. Similar to ESLint --max-warnings 0. The add_prep_for_ai function then runs as a post-process to ensure Copilot readiness before promotion to production.

2. DAX Semantic Analyzer (Leveraging PR #1227)

With a full Python DAX AST now in sempy_labs, there's a clear path to:

  • Static type-checking of DAX expressions (detect SUM on string columns at parse time, not at refresh time)
  • Measure complexity scoring (cyclomatic-complexity-equivalent for DAX)
  • Automated refactoring (AST transform to replace / [Total] with DIVIDE(...), complement the fix_use_divide_function fixer)

3. Fabric Migration Readiness Dashboard

fabric-toolbox's new Fabric Assessment Tool scans Synapse/Databricks workspaces and outputs a structured folder hierarchy. Pairing this with semantic-link-labs' bulk_export_items / bulk_import_items and the Mirrored Azure Databricks Catalog features creates a complete migration readiness dashboard workflow: assess β†’ export β†’ mirror β†’ validate.

4. MCP-First Power BI Development

Two MCP servers now exist in fabric-toolbox: the DAX Performance Tuner and the Semantic Model MCP Server. The pattern of exposing Fabric/Power BI capabilities as MCP tools (compatible with Claude, Copilot Chat, VS Code) is accelerating. A natural next step: an MCP server exposing pbi-fixer functions so any AI coding assistant can apply quality fixes interactively.


πŸ“Š Market Opportunities

Fabric Migration Services

With Synapse Analytics nearing end-of-mainstream-support positioning, the Fabric Assessment Tool (fat) and the Direct Lake + Mirrored Catalog path from Databricks represent a well-documented migration corridor. Consulting and ISV opportunities exist around:

  • Automated Synapseβ†’Fabric workspace inventory
  • Semantic model generation from Databricks catalogs
  • Post-migration quality scoring (BPA + pbi-fixer)

Power BI Report Auditing as a Service

The pbi-fixer ecosystem points toward a commercial opportunity: a SaaS tool that ingests a .pbix / TMDL-enabled report, runs all fixers and BPA rules, and returns a scored quality report with one-click remediation. No such tool exists at scale today. Target buyers: BI teams with 50–500 reports and no internal automation practice.

AI-Ready Semantic Models (add_prep_for_ai)

As Power BI Copilot adoption grows, enterprises need semantic models with proper synonyms, descriptions, and linguistic schemas. The add_prep_for_ai function automates this, but there's a market for Copilot Readiness Audits β€” scoring existing models against Copilot's requirements and delivering a remediation plan. This is a repeatable, high-margin professional services engagement.

Financial BI + Anthropic's Financial Services Agents

Anthropic's open-source claude-for-financial-services release signals a shift: AI agents are now first-class participants in FP&A, GL reconciliation, and equity research. Power BI / Fabric teams embedding in financial services organizations should evaluate integrating these agents with their Fabric lakehouses and semantic models as a competitive differentiator.


πŸ˜„ Enjoyable Anecdotes

"The Pie Chart Killer" πŸ₯§

PR #1186 β€” fix_pie_chart β€” does one thing: it finds every pie and donut chart in a Power BI report and replaces it with a bar chart, citing IBCS (International Business Communication Standards) norms. One-line summary: the maintainer of an 8,000-star Python library is, by popular demand, systematically eliminating pie charts from the known universe. The BI data visualization debate has been settled: submit a PR.

The DAX Parser Has a Bug Named sql

In PR #1227's new regex-driven DAX tokenizer (_tokenizer.py), the parameter that accepts DAX expressions is named sql. The PR author noted the misname in their own write-up and left it for the maintainer to fix. There is something deeply funny about shipping a DAX parser where the entry point is parse(sql=...).

GitHub's Most Trending Python Repo This Week: AI-Trader

The top trending Python repository on GitHub this week is HKUDS/AI-Trader, billed as "100% Fully-Automated Agent-Native Trading." Anthropic simultaneously released claude-for-financial-services with an explicit disclaimer: "These agents draft analyst work product β€” they do not execute transactions." The contrast in philosophy is instructive.


πŸ” Research Provenance (queries, tools, commands)

Web Fetches

  • https://github.com/microsoft/semantic-link-labs/releases β€” release notes for 0.15.0
  • https://github.com/microsoft/semantic-link-labs/issues?q=is:open&sort=updated β€” open issues list
  • https://github.com/microsoft/semantic-link-labs/issues/1185 β€” pbi-fixer tracking issue
  • https://github.com/microsoft/semantic-link-labs/issues/1221 β€” list_apps workspace ID PR
  • https://github.com/microsoft/semantic-link-labs/issues/1222 β€” BPA SUM on text column request
  • https://github.com/microsoft/semantic-link-labs/issues/1223 β€” mirrored catalog PR
  • https://github.com/microsoft/semantic-link-labs/issues/1225 β€” evaluate_dax_impersonation bug
  • https://github.com/microsoft/semantic-link-labs/issues/1226 β€” extract_table_comments PR
  • https://github.com/microsoft/semantic-link-labs/issues/1227 β€” DAX parser PR
  • https://github.com/microsoft/semantic-link-labs/issues/1228 β€” data access roles path fix
  • https://github.com/microsoft/semantic-link-labs/pulls?q=is:pr+is:merged+sort:updated-desc β€” merged PRs
  • https://github.com/microsoft/fabric-toolbox/blob/main/README.md β€” fabric-toolbox README
  • https://github.com/microsoft/fabric-toolbox/blob/main/tools/fabric-assessment-tool/README.md β€” FAT README
  • https://github.com/microsoft/fabric-toolbox/blob/main/tools/DAXPerformanceTunerMCPServer/README.md β€” DAX MCP README
  • https://github.com/anthropics/financial-services β€” Claude for Financial Services
  • https://github.com/trending/python?since=weekly β€” GitHub Python trending
  • `(powerbi.microsoft.com/redacted) β€” (failed: network firewall)
  • `(techcommunity.microsoft.com/redacted) β€” (failed)
  • `(learn.microsoft.com/redacted) β€” (failed)
  • `(arxiv.org/redacted) β€” (failed)

GitHub MCP Tools Used

  • github-get_file_contents β€” repository root listing, README.md, .github directory
  • github-list_issues β€” Cecex-git/BI-Research issues (to understand prior art & report format)

Bash Commands

  • cat /tmp/...issues.txt | python3 -c "..." β€” parsed issues JSON to extract titles and count

Warning

⚠️ Firewall blocked 5 domains

The following domains were blocked by the firewall during workflow execution:

  • anthropics.github.io
  • arxiv.org
  • learn.microsoft.com
  • powerbi.microsoft.com
  • techcommunity.microsoft.com

To allow these domains, add them to the network.allowed list in your workflow frontmatter:

network:
  allowed:
    - defaults
    - "anthropics.github.io"
    - "arxiv.org"
    - "learn.microsoft.com"
    - "powerbi.microsoft.com"
    - "techcommunity.microsoft.com"

See Network Configuration for more information.

Generated by Weekly Research Β· ● 980.5K Β· β—·

To install this agentic workflow, run

gh aw add githubnext/agentics/workflows/weekly-research.md@96b9d4c39aa22359c0b38265927eadb31dcf4e2a

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions