Semanticus
Documentation

Compare

Diff two versions of a model down to the property and the line of DAX, then cherry-pick exactly the changes you want into the model you have open. Compare works against a git ref, a file on disk, or another live model, so it fits dev-versus-prod drift checks and hotfix porting alike.

Comparing a model with itself

When both sides resolve to the same model state, Compare shows nothing to review. Serialization-only fields such as inferred data types are normalized so they do not appear as false changes.

In the Studio

The Compare tab: an object-level diff of two models with drill-down to property and code, and a cherry-pick selection.

The Compare tab shows an object-level diff in one view with three modes that share a single Source and Target and a single selection. Review is a pull-request-style list, grouped by table then kind, where you tick the objects to bring across. Side by side is a two-column, word-level comparison of the before and after. Map lays the tables out as blocks sized by object count and tinted by how much changed, so a big divergence is obvious at a glance. An "Only differences" toggle hides everything that matches, and you can drill from any object down to the specific property and the exact code that changed.

Compare a local model against a published one and the diff shows only what actually differs: the runtime bookkeeping a server adds (last-processed and last-modified stamps, refresh state) is normalised away before the comparison, so a clean model reads as clean instead of every object showing as changed. A native status-bar item mirrors the same "editing versus querying" verdict while you work outside the Studio, and clicking it opens a seeded compare.

Pick a comparison target: the last commit, a branch or tag, a model file, or another model you have open. Then cherry-pick a merge, select the objects you want and bring just those across.

Over MCP

The diff and merge primitives are dual-drive:

model_diff                                  # open model vs HEAD (uncommitted changes)
model_diff  gitRef=origin/prod              # dev vs prod drift
cherry_pick sourceFile=<prod.bim>  refs=["measure:Sales/Margin %"]              # dry run
cherry_pick sourceFile=<prod.bim>  refs=["measure:Sales/Margin %"]  commit=true # apply

Two everyday jobs

One object is free; the one-click batch is Pro

Copying or merging a single object is free. Bringing more than one object across in a single undoable batch (a bulk cherry-pick or diff apply) is the one-click Pro operation, the same gate as every other bulk primitive. See Pro.