u/maxanatsko

Beyond Power BI Writeback: Microsoft Fabric Data Apps
▲ 35 r/MicrosoftFabric+1 crossposts

Beyond Power BI Writeback: Microsoft Fabric Data Apps

I've been using Power BI writeback since day 1. And to be completely honest, I wish I didn't have to.

It is extremely basic in what it can do UI/UX-wise, and as soon as there are extra requirements, you start fighting both Power BI and DAX to make it work.
It doesn't get any better when you have to deploy it - remapping all the entities manually because deployment pipelines don't do that.
I've been super excited when it first got released, and extremely disappointed the longer I use it.

This is where Fabric Data Apps (Rayfin) come in.
 • Native integration with Fabric SQL DB - check.
 • Flexible web UI - check.
 • Accessibility for AI agents - check.
 • Ease of deployment - mostly check.

You can prototype a working MVP in minutes. And with so many web components freely available, you can get a polished, fully customizable UI without having to fight Power BI conventions.

It's not all roses though.
Since these are React web apps, you're now responsible for the UI stack - monitoring performance, keeping dependencies up to date, and all the other fun stuff developers get to deal with once you move the UI stack from something Microsoft supports into the hands of developers.
And despite all of that, I'm hooked.

YouTube video: https://youtu.be/O2RAWlrLlSk

u/maxanatsko — 2 days ago
▲ 7 r/MicrosoftFabric+1 crossposts

SemanticOps MCP & Test Runner updates are out

SemanticOps MCP v3.9.119 is out, with HTML model reports, fully configurable DAX formatting, deeper storage diagnostics, flaky-test classification, combined Power Query commits, and new skills for DAX debugging and performance tuning.

New in v3.9.119

  • HTML model reports — generate HTML alongside DOCX and PDF, including multiple formats from one request.
  • Configurable DAX formatting — indentation, spacing, line breaks, casing, and other DAX formatting options are now fully configurable in one place.
  • Deeper storage diagnostics — model, table, partition, and column detail are reported individually, so unavailable values are no longer shown as zero.
  • Test stability classification — tests are now classified as stable, flaky, degraded, or lacking enough history, using persisted retry evidence.
  • Combined Power Query commits — related table, partition, parameter, and query-group changes can be staged and committed together in one Desktop model commit.
  • New skills — DAX debugging, DAX performance tuning, and safe semantic-model refactoring, with more precise guidance and evidence checks.

Coming soon in 4.0

A DAX measure quality scorecard: correctness, performance, maintainability, and style, scored together with the findings behind them. (scroll deck till the end to see sneak peek).

____

SemanticOps Test Runner v1.1.39 is out, with browser and device-code sign-in, test stability classification, order-tolerant baselines, virtualized selectors, steadier run behavior, and model-scoped tests that survive migrations.

New in v1.1.39

  • Flexible sign-in — choose browser sign-in for local interactive use or device-code sign-in for remote and headless sessions, with clear waiting, cancellation, and conflict states.
  • Test stability classification — the dashboard and test list show stable, flaky, degraded, and insufficient-history classifications with retry evidence.
  • Order-tolerant baselines — new hash and aggregate baselines ignore incidental engine row ordering while preserving duplicates and selected-column order.

Website: semanticops.dev

u/maxanatsko — 3 days ago
▲ 2 r/MicrosoftFabric+1 crossposts

Bulk-migrating Dataflow Gen1 to Gen2 (CI/CD) with Azure CLI

Dataflows Gen1 are legacy at this point, so it might be time to start migrating to Dataflows Gen2.
Fortunately, there is a handy preview API allowing you to automate this process. Combined with agents, you can go quite far before you have to take over.

Few things to consider before migrating:

  1. Gen2 doesn't support rules in deployment pipelines, you will have to migrate to Variables Library.
  2. There could be some naming collisions, that were previously a non-issue.
  3. Same with transformations - due to different architecture Gen2 dataflows might surface issues that were previously hidden.

I have published a blog post outlining how to setup the automation, and prepared agent skill that will get you most of the way.

Blog post: https://www.maxanatsko.com/blog/bulk-migrating-dataflow-gen1-to-gen2-cicd-with-azure-cli

u/maxanatsko — 15 days ago
▲ 31 r/MicrosoftFabric+1 crossposts

I fine-tuned GPT-OSS-20B for DAX: 15/30 → 20/30 on DAXBench

I run DAXBench, a project where I test LLMs on their ability to write correct DAX.

So far, no model has solved all 30 tasks, although frontier models are getting close. Local models are still noticeably behind, so I wanted to see how much a relatively small domain-specific fine-tune could help.

My goals were to:

• solve more DAXBench tasks
• improve reasoning about DAX filter semantics
• improve adherence to the supplied model metadata
• improve syntax and output-format adherence

I used OpenAI’s GPT-OSS-20B. It is around a year old at this point, but it is still a capable local model that can run on many modern laptops.

The fine-tuned version improved several dimensions compared with the base model:

• DAXBench: 15/30 → 20/30
• Slightly better metadata and syntax adherence
• 20% more correct answers on an independent evaluation set

The largest practical improvement was output discipline.

The base model often produces a long explanation even when explicitly asked for “just DAX.” The fine-tuned model follows that requirement much more reliably.

For the DAXBench evaluations, the average response changed from approximately:

18 seconds / 2,200 characters

to:

2.4 seconds / 170 characters

The strongest qualitative improvements were in:

• preserving the existing filter context
• distinguishing filter intersection from replacement
• partial-period time-intelligence calculations
• weighted calculations using the correct iterator
• ranking and calculating at the requested business grain

I do not think specialized local models will replace frontier models. However, I believe there is a useful architecture in combining fine-tuned local models for narrow, repeatable tasks with frontier cloud models for harder or ambiguous problems.

I have open-sourced the LoRA here: https://huggingface.co/maxanatsko/gpt-oss-20b-dax-lora

LoRA was trained on a Mac and is published as an MLX LoRA for Apple Silicon. I currently do not have a sufficiently powerful NVIDIA machine to train and validate a more broadly compatible version.

The concrete before/after DAX examples are in the blog post: https://www.maxanatsko.com/blog/fine-tuning-gpt-oss-20b-for-dax-from-1530-to-2030-on-daxbench

u/maxanatsko — 21 days ago
▲ 51 r/MicrosoftFabric+1 crossposts

SemanticOps MCP 3.8.2 is out!

This release is what Snow Leopard was for macOS - no flashy new features, instead I focused on fully supporting May/June 2026 Power BI Desktop updates: user-aware calculated columns, UDF optional parameters, and a lot of stabilization improvements to make sure your AI agents having great time using the MCP.

New Features

  • User-context calculated columns - Refer to https://www.sqlbi.com/articles/introducing-user-aware-calculated-columns-in-power-bi/ for more details.
  • Optional DAX function parameters - DAX user-defined functions (UDFs) now support optional parameters with default values. Refer to https://www.sqlbi.com/articles/optional-parameters-in-dax-user-defined-functions/ for more details.
  • Field parameter operations - added explicit operations for field parameters, including support for custom columns.
  • More stable Power Query / M edits in PBI Desktop workflows - Did you know TOM doesn't really protect your model from being corrupted when agent runs wild? This is particularly easy to do when it comes to PQ operations. I went on a hunt to close more loopholes like this.
  • Non-interactive mode for agent environments without prompts

Full changelog and release: https://github.com/maxanatsko/mcp-engine-public/

If you're VS Code user - it's available in vs code marketplace too.

u/maxanatsko — 2 months ago
▲ 162 r/MicrosoftFabric+1 crossposts

PBIR CLI v0.9.20 is out

If you've been following PBIR CLI, developed by me & Kurt Buhler, you will be happy to hear that the new v0.9.20 release with bunch of bug-fixes is out.

PBIR CLI focuses on visual layer and allows to create Power BI reports/visuals agentically. For semantic models agentic development refer to my other tool: semanticops.dev.

Download PBIR CLI here: https://github.com/maxanatsko/pbir.tools/releases

Changelog

New

  • Code signing - binaries now come code signed both on Windows and macOS.
  • Page conformance - pbir pages conform enforces visual formatting properties (title, background, border) against theme defaults across a page or report, with --dry-run preview, JSON output, and idempotent apply mode
  • Field where-used - pbir fields where-used finds every visual and filter that references a given field, with exact and substring matching

Bug Fixes

  • Card visuals now apply font color conditional formatting correctly using the Power BI default dataViewWildcard selector, fixing pbir visuals cf on cardVisual value properties
  • pbir fields and pbir tree now traverse report pages by directory path rather than display name, so pages with em dashes, parentheses, or other path-like characters in their names resolve correctly
  • Visual group parent links broken by pbir connect downloads are now repaired automatically during download, and group membership changes are tracked through the object model change history
  • Visual group operations (list, ungroup, group workflow) are now more reliable: page and path validation is enforced before mutations, cleanup is persisted after ungroup, and edge cases in multi-step group workflows are handled
  • pbir visuals bind now fails closed when the semantic model cannot be loaded - explicit --no-validate is required to proceed, and the model load error is surfaced in the output
  • Validation JSON output now includes model_load_error detail alongside the existing model_loaded flag
  • Validation now reports orphan parent groups and stale visual interaction entries as diagnostics
  • Animated startup splash is replaced with a static splash on Windows and non-interactive consoles, fixing rendering artifacts on Windows terminals
  • Microsoft schema and bundled runtime artifacts were refreshed to May
u/maxanatsko — 3 months ago