A well-kept Power BI or Analysis Services model is years of decisions: which tables matter, how they relate, what “net sales” means in DAX. Throwing that away to start a new semantic layer would be a waste. Taking it on faith would be a risk. Terazu does neither.

What comes in

You export the model file (a model.bim or a TMSL script) and import it in Estate › Connections. A fixed translator reads it, with no AI involved. Cognos models and reports, and SSIS packages, come in the same way:

  • The model and its tables, with their columns and the warehouse tables each one reads from.
  • Its measures, with their DAX kept exactly as written.
  • Its relationships, recorded as joins the model declares.
  • Its sources, linked to the warehouse tables Terazu has already discovered. A reference that doesn’t match exactly one table is listed as unresolved, not guessed.

Importing certifies nothing. It adds evidence, and a model’s measures become draft Measures once an Object serves their table; a person still certifies each one.

From model to proposals

Turning the model into proposed meanings is a separate step you choose to take, on the Concepts view of Ontology › Objects.

Imported semantic models on the demo's Concepts view: transcribing proposes one Concept per visible model object; nothing is certified, and a binding is proposed only where a grain drafts from declared or measured evidence; a model's measures become draft Measures on their own, once an Object serves their table. One model: MeridianFinance, 6 query subjects, 13 measures declared, with Transcribe into proposed Concepts.
On the demo, Ontology › Objects › Concepts › Imported semantic models. The demo’s finance model, a Cognos one, read the same way a Power BI model is. Its measures became draft Measures on their own; transcribing its objects into Concepts is a step a person chooses, and nothing it proposes is certified.
  • One proposal per visible model object. Hidden objects stay out, because hiding them was the modeler’s own decision.
  • No duplicates. If a meaning with the same name exists, the model object becomes another source for it.
  • No resurrection. A meaning someone deleted is never proposed again.
  • A grain only from evidence. “One row per store_id” is drafted from a key a person declares, a key the database declares, the model’s own relationships, or a column measured unique. If two columns qualify, a person decides.

Every proposal waits for a person, like anything else in Terazu.

DAX, rebuilt rather than run

Terazu never evaluates DAX. When a measure has a shape it recognizes (a SUM, a count of rows, a CALCULATE with one equality filter, or a DIVIDE of two measures), it rebuilds it on its own as a draft Measure that runs against the warehouse table behind the model table, and notes where it came from. Anything else is set aside as needing a shape, with its DAX kept, for a person to define.

The Measures page on the demo. Needs a person: 1 certified Measure whose check now disagrees; Certify 1 that gives the BI model's number; Check 8 drafts from a BI model; 11 drafts to certify; 10 totals with no unit; 2 duplicate Measures; 4 imported measures Terazu can't read yet. 13 Measures, 2 certified and 11 drafts, grouped by what they're about, each with what it gives, where it came from and where it stands: on Weekly sales, five drafts from the MeridianFinance model, one marked as giving the BI model's number and two marked as the same number, keep one; on Daily sales, Gross sales and Net sales, money in SAR, from Priya Sharma (Data Steward), certified, net sales flagged as its check now disagrees; Cancellation rate on Online order and Refunds on returns on Sales return, both from Terazu, drafts ready to certify.
On the demo, Ontology › Measures. Nine drafts rebuilt from the MeridianFinance model, each saying where it came from. One already gives the model’s own number, two compute the same thing and say which to keep, and the bar at the top counts what needs a person.

A rebuilt Measure is a draft like any other: asked for by name, it answers, marked not certified, and it counts as certified only once a person certifies it. The Measures page checks the model’s drafts against the model’s own numbers, computed from its definitions over their source tables, and certifies the ones that give the same number in one act. Terazu still runs no DAX; the shapes it recognizes are rebuilt, and a measure outside them can’t be checked.

What it doesn’t do

  • It reads a file, not a live model. When the model changes, you import it again. There is no connection to the Power BI service, and PBIX files aren’t read.
  • Numbers can differ from Power BI’s. A rebuilt Measure runs on the warehouse table. Filters and joins inside the model’s Power Query steps aren’t repeated, which is exactly the kind of gap worth measuring.
  • Some parts are left out: row-level security roles, hierarchies, perspectives, translations and calculated-column DAX.
Keep reading When two numbers disagree Define a number by its shape What Terazu can see, and what it can’t