AI Power Tools for Sparx EA Docs Release 3.6.4
Applies to
  • Claude Code Runs fully
  • Claude Cowork Not available
  • Claude Desktop chat Not available
  • VS Code with GitHub Copilot You do the EA window steps

ea-power-bi

What it is for

Use it to give stakeholders Power BI reports over the repository without relying on Power BI's own relationship detection, and to let Microsoft 365 Copilot answer questions from the published model in your business terms. You end with a generated Power BI project that opens in Power BI Desktop, with every relationship declared, a description on every business table, column and measure, and EA's own tables hidden. Nothing is written to EA.

ea-power-bi puts an EA repository into Power BI as a generated semantic model: a complete .pbip project, with the model definition written in TMDL (the Tabular Model Definition Language), relationships declared by the generator, a count measure on each entity table, one traversal measure per inactive connector-table relationship, a description on every business table, column and measure, the key columns and EA's own tables hidden, and an Overview report page. It reads the business layer that ea-reporting-database builds, from any of the three delivery ways. Nothing in it writes to EA. The output is a Power BI project on disk.

The skill exists because Power BI's own relationship detection does not work on this data and fails silently. On the reference model, loaded with no relationships defined, auto-detect invented relationships from shared lists of allowed values (two tables related because both held a data-classification value), missed real ones, and switched a real relationship off with no warning. Nothing in Power BI reported any of it, and the report looked finished. Generating the model is the answer.

The model is the same shape on every delivery way: the same tables, names, columns, types, relationships, measures, descriptions, hidden tables and layout. Only where the rows come from, and the storage mode, differ.

Capabilities it uses

Capability Used for Without it
MCP server The session preflight. The definition file the generator reads comes from the business-layer build in ea-reporting-database, which runs on the server. For the descriptions file, a read-only query of each tagged value's distinct values (execute_sql) Not available. With no business layer built there is no definition file to generate from
Computer use Checking Power BI Desktop's two preview features. Opening the generated project, waiting for the load and pressing Refresh. Applying external changes after a regeneration. Publishing from Power BI Desktop. Reading Power BI's error dialogs The AI hands you these steps and asks what you see. You open the .pbip file, refresh it, publish it, and paste a screenshot of any error into the conversation
Local code execution Generating the .pbip project from the definition file, and for Parquet files, writing one file per table with the pyarrow Python library. pyarrow is not shipped, so install it for that way Not available. The generators are required
Browser control Not needed Not needed

When to use it, and when not

Use it when someone wants EA content in Power BI, asks for a dataset, a .pbip project, TMDL or a semantic model, asks which delivery way to use, asks how to refresh or publish, wants Microsoft 365 Copilot to answer from the model or to understand their business terms, or asks why Power BI's relationship detection does not give them what they expect.

The task Answer
EA content in Power BI This skill, after the business layer is built and checked in ea-reporting-database
Power BI reading the repository live This skill, with views in the EA database in DirectQuery, and only where you can reach the EA database directly. On any other estate the data is a snapshot, and the AI says so
Microsoft 365 Copilot answering questions from the model This skill: agree the descriptions file, generate, then publish from Power BI Desktop
A database to query with SQL, no Power BI ea-reporting-database
One or two counting questions ea-stakeholder-reporting
Dashboards and matrices on a Prolaborate server prol-dashboards and prol-matrix
A picture or a file out of EA ea-import-export

It does not replace Prolaborate, EA's own reporting, or a data warehouse. It gets architecture data into the reporting tool an organization already has. Run ea-start-here first: which repository is open and which technologies are loaded.

How it works

  1. Run the session preflight. AI Power Tools
  2. Choose the delivery way. (AI, then you) The AI asks the three questions, puts all three ways to you with their consequences, and waits. You answer.
  3. Check the preconditions, each of which stops the build. (AI, then AI with computer use; otherwise you) The definition file exists and the business layer has been checked; for Parquet files, pyarrow is installed; Power BI Desktop has the .pbip save option and "Store semantic model using TMDL format" turned on.
  4. Agree your business terms, when people will ask about them. (AI Power Tools, then AI, then you) The AI reads the distinct values of each tagged value you will ask about, from EA, with a read-only query (execute_sql). It asks what your terms mean ("retired", "critical", "in scope") and which values each covers, and never infers a definition. Any wording it suggests is labeled a draft, with the exact text shown. The descriptions file is written beside the profile only on your yes (see "Business terms: the descriptions file" below).
  5. Generate the project. Engine For a database way, the generator writes the project from the definition file, in Import, or in DirectQuery for views in the EA database when you want live data. For Parquet files, the Parquet step writes one file per table into the profile's folder, then the project. The descriptions file, when there is one, is passed on every generation. The AI reads the printed counts aloud: tables, relationships, inactive relationships and measures, then the size line. AI
  6. Open the project, wait for the initial load, and press Refresh once. AI with computer use; otherwise you A generated Import project holds no data until it is refreshed.
  7. Regenerate when the definition or the descriptions change. (engine, then AI with computer use; otherwise you) The semantic model's definition is rewritten and an existing report is left untouched. Power BI Desktop then offers to apply the external changes.
  8. After a reporting refresh, bring Power BI up to date. DirectQuery on views in the EA database: nothing to do. Import, on views in the EA database or a reporting database: Refresh in Power BI Desktop AI with computer use; otherwise you. Parquet files: rerun the Parquet step Engine, then Refresh.
  9. Publish, when the model is wanted in the Power BI service or in Microsoft 365 Copilot. AI with computer use; otherwise you Publish from Power BI Desktop, and set the data source credentials in the service. Your administrators' settings are yours to arrange You; the AI says what is needed and never changes them.
  10. Report. AI Five things, in order (see "What to say when you report back").

Choosing the delivery way

The choice is a fact about your estate, not a preference. The AI asks, in order:

  1. Can you reach the EA database directly, is it SQL Server, and may you create views in it?
  2. If not, can you run a SQL Server for a reporting database, or do you have a Microsoft Fabric capacity for a SQL database in Fabric?
  3. If neither, are Parquet files on this machine enough?

A repository held in a local file has no database server to connect to, and a cloud connection usually gives the person asking no direct database access; either rules out views in the EA database. Asking first means you hear a constraint rather than a refusal. The AI puts all three ways on the table in one message, with the consequence attached to each, then stops and waits.

Delivery way How Power BI reads it Data What to understand
Views in the EA repository's own database DirectQuery (live), or Import Live in DirectQuery; a snapshot as of the last Power BI refresh in Import The views live in the production database and EA's tables are never altered. DirectQuery queries that database. The generator uses DirectQuery only when you want live data; otherwise Import
A separate reporting database Import. The generator refuses DirectQuery for a reporting database A snapshot, rebuilt in full on every reporting refresh A SQL Server to run and keep, or a SQL database in Microsoft Fabric on a Fabric capacity. Queries never touch the production database. A failed reporting refresh leaves the previous data live. A model published from a SQL database in Fabric refreshes in the Power BI service with no gateway
Parquet files, with no database Import. The generator refuses DirectQuery for Parquet files A snapshot, rewritten on every reporting refresh Power BI Desktop imports the local files. pyarrow is needed to write them. The project stores the folder as an absolute path. A model published to the Power BI service cannot refresh from the files

Do not quietly build a snapshot when you asked for live data. The report keeps working and the numbers go stale silently. When you want live data and cannot reach the EA database directly, the AI says plainly that your estate gives a snapshot, and that a snapshot is not a substitute for live data.

Do not treat the three ways as three different Power BI capabilities. They are one model with three sources. Moving from one way to another keeps your report, because it is built on the same tables and column names.

What the project holds

  • The business tables, visible: every entity table, connector table, tag-row table and the Table Directory, named exactly as the business layer names them, "(not in MDG)" tables included.
  • The key columns, hidden but present. The element, connector and tagged-value identifiers mean nothing to a reader, so they are hidden on every business table. They stay in the model because the relationships use them, and visuals that already use them keep working.
  • EA's nine tables, hidden but present. A report can still reach anything EA holds that a business table does not carry, through the relationships.
  • Relationships declared by the generator, never auto-detected. The business layer filters EA's tables: each entity table relates to EA's element table by the element's GUID. The other direction was measured, and Power BI refused the project ("ambiguous paths"). Connector tables relate to their two entity tables by the source and target GUIDs, tag-row tables to their table, and EA's tables to each other as EA's own keys say.
    • A relationship is inactive when it would be a second relationship between the same two tables, or a second filter path from the same source, so Power BI's engine agrees with every relationship as declared.
    • A combination that links an entity type to itself gets one inactive relationship, on the target side.
  • Two kinds of measure, and no others. There is no measures table, and nothing sits on a hidden table.
    • A count measure on each entity table, named for the table, for example "Business Application count". Connector, tag-row and Table Directory tables get none. A count measure whose name would collide with another measure or with a column of its table stops the generation and names both; it is never renamed.
    • A traversal measure for each inactive relationship whose many side is a connector table, placed on that connector table and named for what it answers, for example "Uses by target Business Application". It is what makes the target side of a self-link reachable.
  • A description on every business table, column and measure. For each one, the first source that has text wins: the descriptions file you approved; then the technology's own notes (the Table Directory's description for a table, a tag's note for a column), never shortened; then a fixed template that names the object, such as "Number of Business Application elements." Templates define no business terms; that is the file's job. EA's hidden tables and the relationships carry no descriptions.
  • One blank member on every entity table. EA's element table holds every element, so for any one entity table most of its rows match nothing, and Power BI adds a blank row on the entity table's side: "(Blank)" in a slicer, and one extra row in a table visual. On the reference model a table visual showed 46 rows for 45 business applications. It is the price of the business layer filtering EA's tables. The count measures are right; a figure one too high is the blank member, so use the count measure or filter out blank.
  • A default layout: business tables in bands on top (entities, then connector tables, then tag-row tables and the Table Directory), and EA's tables in a band below.
  • No automatic date tables, and every column summarizes by nothing, so a numeric tagged value is not offered as a sum.
  • Stable identifiers. Lineage tags are derived from each object's path, so regenerating the same model gives the same identifiers.
  • A report with an Overview page and a theme, on a fresh project. The Overview page holds a table of the Table Directory (each table's name, kind and description) and a card for each entity count measure. No visual on it uses an entity table's columns, so the blank member does not show there. You build further visuals on top of the semantic model.

On the Westbrook Bank reference model, read back from Power BI's own engine in both Import and DirectQuery, the engine agreed with every declared relationship, the row counts equaled SQL Server's, and every traversal through an inactive relationship equaled the corresponding SQL join.

Preconditions, each of which stops the build

  • The definition file exists, written beside the profile by the business-layer build, and the layer has been checked (ea-reporting-database). An unchecked layer is not a deliverable.
  • For Parquet files, pyarrow must be installed. It is deliberately not shipped. The Parquet step checks its inputs first, then stops with the install instruction if pyarrow is missing. CSV is not a fallback. Parquet carries column names and types: the same tables loaded through Excel arrived as Column1 to ColumnN, and from Parquet they were right on the first attempt with no Power Query step. Excel and CSV are never outputs.
  • Power BI Desktop needs two preview features on: the .pbip save option, and "Store semantic model using TMDL format". The AI confirms both are on before promising the project will open. It looks in Power BI Desktop's options with computer use; otherwise it asks you to.

Power BI Desktop behavior was measured on specific builds (the project-format facts on 2.158.1177.0, publishing and Microsoft 365 Copilot on 2.159.883.0), and the AI quotes the build alongside any behavior it describes.

Business terms: the descriptions file

Microsoft 365 Copilot cannot know what your organization's words mean. On the Westbrook Bank reference model, asked which applications are being retired, Copilot found the Sunset applications and missed Archive in 4 of 4 runs. With a description on the lifecycle column saying that applications being retired are those in Sunset or Archive, it was right in 4 of 4. Only you know your terms, so the skill asks:

  1. The values first. The AI shows the distinct values of each tagged value you will ask about, read from EA with a read-only query, whichever delivery way you chose. The query reads the whole repository, so it can show values from packages your profile leaves out; the AI says so when one appears. An element carrying two of the technology's stereotypes is counted under its first.
  2. Your definitions. The AI asks what each term means and which values it covers. It never infers a definition.
  3. A draft you approve. Any wording the AI suggests is labeled a draft, and it shows the exact text that would go in the file.
  4. The file, on your yes. The descriptions file is written beside the profile, next to the definition file, only when you agree. It can describe a business table, any of its columns and any of its measures.
  5. Used on every generation. The file is passed each time the project is generated. Without it, the project falls back to the technology's notes and the templates.

An entry replaces the note or template for the object it names, and nothing else. The generator refuses the file, and writes no project, when an entry names a table, column or measure the model does not have (the message names it), names one of EA's own tables, is empty, or is longer than 250 characters (the message gives its length).

Generating, opening and regenerating

  • The Parquet files. One file per table, with types declared from the definition file and never inferred from the data, so a refresh cannot change a column's type by which rows happen to be filled. An empty table is still written with its columns. A value that does not fit its column is refused, not repaired. The files are identical for the same input and the same pyarrow version.
  • The Parquet folder is written into the project as an absolute path. Move the folder or the project and the tables point nowhere; regenerate rather than editing a path by hand, because Power BI rejects a hand-edited definition file whole. The same holds for the server and database written into a database project.
  • The size line. After its counts, the generator prints the model's size in tables plus columns, the unit of the 1,000 limit Microsoft documents for Copilot's index: once for the full model, hidden tables included, and once for the visible business layer. Past 1,000 it warns that Copilot may leave some out. It only warns; it never chooses what Copilot sees, and the AI says so.
  • Keep the project folder short. Windows has a 260-character path limit, and the project's own nested folders add to it.
  • One project name per model. Do not vary it between runs of the same model.
  • The files are written as Power BI writes them: UTF-8 with Windows line endings and no byte-order mark. A project that deviates is rejected.
  • Do not add relationships by hand, and do not let Power BI detect any.

Opening. Open the .pbip file at the top of the project folder AI with computer use; otherwise you. Expect the semantic model to load, then the report. Power BI Desktop offers a refresh after opening; wait for the initial load to finish before refreshing, then press Refresh once. A refresh started twice at the same time failed with a "cyclic reference" error, which is an overlapping-refresh problem, not a model defect. Opening a second project through File > Open starts a second Power BI Desktop process, so close projects you are done with. If Power BI Desktop is already running, the AI opens the project from it and does not start another instance.

Regenerating keeps your report. The generator rewrites the semantic model's definition, so a table that left the definition leaves the project, and it never writes an existing report folder, so the visuals you built are kept. A project whose report folder already exists therefore gets no Overview page. With "Detect and reload external PBIP changes" enabled, Power BI Desktop offers to apply the changes, and warns that unsaved edits made inside Power BI will be overwritten. That is correct: the generated files are the source of truth. Anyone who edits the model inside Power BI loses the edit on the next build, and the AI says so once, early. A description typed into the model inside Power BI is lost the same way; put business definitions in the descriptions file.

Regenerating does not repair a damaged report. Move the report folder aside (it holds your pages) and regenerate for a fresh report with its theme and the Overview page, then re-create your pages in Power BI.

After a refresh

Power BI reads whatever is behind the model. Keeping that current is the reporting refresh in ea-reporting-database, started by a scheduled AI agent while EA is running with the repository open on that machine. Then:

Delivery way After the reporting refresh
Views in the EA database, DirectQuery Nothing: every query reads the views live. The views are regenerated only after an edit to the technology or the inclusion choice
Views in the EA database, Import Refresh the model in Power BI Desktop
A separate reporting database Refresh the model in Power BI Desktop. A model published from a SQL database in Microsoft Fabric refreshes in the Power BI service with no gateway
Parquet files Rerun the Parquet step to rewrite the files, then refresh the model in Power BI Desktop

A model published to the Power BI service.

  • From a SQL database in Microsoft Fabric, it refreshes in the service with no gateway, using OAuth2 credentials set on the semantic model's data source credentials, with privacy level Organizational (measured). In Power BI Desktop, choose Microsoft account when the data source asks for credentials. If the service's credentials dialog says "You need to use SSL (HTTPS) when you use OAuth 2.0 authentication", the message is misleading: the browser blocked Microsoft's sign-in pop-up. Allow pop-ups for the Power BI site and choose OAuth2 again. How long the stored credential keeps a scheduled refresh working was not measured.
  • From a SQL Server you run, the service refreshes through an on-premises data gateway, as Microsoft describes it. That was not measured with the generated model, and the AI does not assert it either way.
  • From Parquet files, a published model cannot refresh, because the files are local. For a published model that refreshes, use a reporting database in a SQL database in Microsoft Fabric.

Removing the business layer breaks every refresh, in Power BI Desktop and in the service, until the layer is rebuilt from the saved profile and the model refreshed. The AI never offers Windows Task Scheduler as the way to schedule a refresh.

Publishing for Microsoft 365 Copilot

Microsoft 365 Copilot Chat, the only Copilot measured, answers questions from a published model. On the Westbrook Bank reference model, once Copilot was pointed at the model, it answered 9 of 11 fixed test questions right in both runs with no descriptions at all: counts, tagged-value filters, text inside a multi-valued tag, and traversals in both directions through the connector tables. It failed on business terms, which the descriptions file fixes, and on finding the model by itself. These figures belong to that one model.

  • Publish from Power BI Desktop. Descriptions reached Copilot within minutes of a publish from Power BI Desktop, about 8 minutes on a Fabric workspace. Descriptions changed by another route, an update of the published model's definition through Microsoft's programming interface, were not seen by Copilot. To change a description, edit the descriptions file, regenerate, open, and publish from Power BI Desktop again.
  • Copilot finds reports, not models. Tell people to name the report in the question, attach it from Copilot's attach menu, or paste the model's link, and give the project a name people will actually say. Whether the Overview page helps Copilot find the model unprompted was not measured.
  • No Copilot capacity is needed. Measured on a Power BI Pro workspace and on a Fabric workspace. Copilot in Power BI is a different product with its own requirements; the skill does not conflate them.
  • Your administrators set up a Microsoft 365 Copilot license and a Power BI Pro or Premium Per User license for each person who asks, the Microsoft 365 admin center setting "Fabric data available in Microsoft Copilot", and the Fabric tenant setting "Share Fabric data with your Microsoft 365 services". The AI says what is needed and never changes these settings.
  • Answers vary. The same question was answered with 45 once and 46 once. Ask twice before quoting a Copilot answer, and compare it with the count measure.

What to say when you report back

Five things, in this order, and no figure is quoted from the model without how populated the columns behind it are:

  1. Which delivery way, and whether the model is live (DirectQuery) or a snapshot, with its as-of time.
  2. That the business layer was checked, with the result.
  3. What was generated: the project path, the table, relationship and measure counts, the size line, the storage mode, and whether a descriptions file was used.
  4. What the field list shows: the business tables, a count measure on each entity table, the traversal measures on the connector tables, the key columns hidden, and the blank member. EA's tables are hidden, not absent, so a reader comparing with the database will see tables they cannot find in Power BI and should hear why from the AI first.
  5. What is outside the model: left-out packages, elements the inclusion choice left out, the "(excluded)" stand-ins, and any flag you continued past.

To read the results in a Claude Cowork cloud session, connect the folder that holds the generated project and, for Parquet files, the files themselves, never the folder that holds the model. A cloud session can read the project and the files, but it cannot change the model.

When it goes wrong

Symptom Cause and action
The project will not open and the message names no file Read the inner exception, not the dialog ("Copy details to clipboard" locates it). Measured causes, each of which stops the whole project: a description on a relationship, a report version setting written in the wrong form, and a model in which EA's tables filter the business layer ("ambiguous paths"). The generator avoids all three; a hand edit reintroduces them
The model loads and the report fails with "Failed to load the report" and an activity id The theme is missing. Do not hand-write the report definition: a minimal one loads the model, fails the report, and then crashes every save path. Regenerating into the same folder leaves the report as it is, so move the report folder aside first
Power BI rejects a whole definition file on one violation Regenerate instead of patching
A table visual is missing rows Power BI drops a row when every measure on it is blank, and a traversal measure is blank where there are no connectors in that direction. Show a column from the entity table beside the measure, or filter on the entity table
One row too many, or "(Blank)" in a slicer The blank member on the entity table. Use the count measure, or filter out blank
A hidden table is visible in the field list anyway It hosts a visible measure. That is why the generated measures sit on visible business tables and never on EA's hidden tables
The descriptions file is refused The message names the table, column or measure the model does not have, or gives the length of an entry over 250 characters. Correct the file and generate again
A refresh fails after the business layer was removed Rebuild the layer from the saved profile, then refresh
The service's credentials dialog says SSL (HTTPS) is needed for OAuth 2.0 The browser blocked Microsoft's sign-in pop-up. Allow pop-ups for the Power BI site and choose OAuth2 again
Relationships look wrong after letting Power BI detect them It invents them. Regenerate
DirectQuery is slow It queries the production database through the views. Use Import, or a reporting database
An error about pyarrow Install it, or choose a database way. Do not substitute CSV

Boundaries the AI keeps

These are rules the AI follows.

  • No live connection except views in the EA database in DirectQuery, which queries the production database. The reporting database and Parquet files are snapshots.
  • The Parquet files are written to a local folder and Power BI Desktop imports them.
  • Business terms come from you. The AI never infers a definition, labels any wording it suggests a draft, and writes the descriptions file only on your yes.
  • Copilot readiness is what the generator writes: descriptions, count measures, hidden key columns and the Overview page. The AI does not promise that Copilot will answer correctly; one model was measured.
  • Reference-model figures are always attributed as such, never presented as what you will get.
  • It does not fix data quality. Nothing in this skill changes a model. The one narrow case where AI Power Tools offers to apply a stereotype belongs to the governance gate in ea-reporting-database.
  • It does not replace Prolaborate, EA's own reporting, or a data warehouse.

Where the AI decides and where AI Power Tools decides

AI Power Tools decides The AI decides You decide
Every relationship, its direction and whether it is active How to put the three delivery ways to you, and whether to stop when live data is asked for on an estate that cannot have it The delivery way
What is hidden, the measures, summarization and types What to tell you about the field list, the hidden tables and the blank member For views in the EA database, DirectQuery or Import
Each description, from your file, the technology's notes or a template, in that order Which values to show you, and how to word a draft definition What your business terms mean, and whether the descriptions file is written
The Parquet files and their declared types, refusing a value that does not fit Whether an unchecked layer can be reported at all One stable project name per model
File format, identifiers, layout, the Overview page and the theme How to explain the as-of time, the size line and the open items A short project folder, and when to publish

What you get

  • A .pbip project folder: the semantic model in TMDL, with descriptions, count measures and traversal measures, the key columns and EA's tables hidden; and, on a fresh project, a report with an Overview page and a theme. Regenerating keeps an existing report.
  • For Parquet files, one file per table with declared types, in the profile's folder.
  • With your approval, a descriptions file beside the profile that holds your business definitions and is used on every generation.
  • The counts the generator printed (tables, relationships, inactive relationships and measures) and the size line.
  • A report-back with the five statements above.

Tools it relies on

  • The business layer and its definition file: ea-reporting-database, with the operations in Reporting business layer
  • The distinct values behind your business terms: execute_sql in Direct queries, read-only
  • The Power BI generator, the Parquet writer, the descriptions module and the model, TMDL and project writers: Power BI generator. They need local code execution, and the Parquet writer needs pyarrow
  • Computer use, to check Power BI Desktop's preview features and to open, refresh, update and publish the project
  • Optionally, Microsoft's own Power BI Modeling MCP server, which you install yourself, to inspect the generated project: see Build a Power BI model

No server operation is added by this skill.

Sample prompts

  1. Puts the three questions and the three delivery ways with their consequences, then stops.

  2. Checks for pyarrow, writes the files and the project, and says the project holds an absolute folder path.

  3. Generates in DirectQuery and states that every query reads the production database.

  4. Reads the distinct values from EA, asks which values "retired" covers, shows a draft description, writes the descriptions file on your yes, and regenerates with it.

  5. Walks through publishing from Power BI Desktop and the service credentials, lists the licenses and settings your administrators own, and says to name the report in the question.

  6. Asks for the inner exception and checks it against the measured causes.

The model names and figures are illustrations. Replace them with your own.

Model Fit Why
Claude Fable 5.1 Capable Strong on the conversation about which delivery way fits and on diagnosing an unreadable Power BI error, more than the routine generation needs
Claude Opus 5.5 Recommended The disciplined statements (live or snapshot, the as-of time), the business-terms conversation and error diagnosis from an inner exception reward a stronger model
Claude Sonnet 5.5 Recommended Generation is a deterministic engine run. Sonnet follows the sequence and holds the stop when live data is asked for on an estate that cannot have it
Claude Haiku 4.5 Capable for regeneration Adequate for regenerating a known project. For the first conversation a lighter model is more likely to build a snapshot when live data was asked for, or to infer a business term instead of asking

Ratings are guidance based on the kind of reasoning the skill needs, not measured benchmarks. The generation itself is a code engine, so the model matters most in the conversation around it.

Checking accuracy and completeness

  1. The counts match. Correct: the tables, relationships, inactive relationships and measures the generator printed match what Power BI Desktop shows, and the size line was read to you. Red flag: counts the AI did not read aloud.
  2. The layer was checked first. Correct: the report-back gives the business layer's check result. Red flag: a project generated from an unchecked layer.
  3. The model loads, then the report, and the refresh completes. Red flag: a project that opens a report with no data and no mention of refresh.
  4. Hiding and measures. EA's tables and the key columns are hidden, not absent; each entity table has a count measure; the traversal measures sit on the connector tables; no measure is on a hidden table.
  5. No relationship added by hand or detected by Power BI. Ask the AI to compare Power BI's relationship list with the generator's. Red flag: relationships Power BI detected.
  6. Traversals and counts are right. For a few elements, compare a traversal measure with a direct count of the corresponding connectors in the database. Include a self-link, where a model that silently reuses the active relationship is wrong while looking plausible. Compare a count measure with the table's row count in the database. Red flag: a count one too high, which is the blank member counted as a row.
  7. Descriptions came from you. Every entry in the descriptions file was shown to you as text and approved. Red flag: a business definition the AI wrote without asking, or a description you did not see.
  8. Every figure comes with its populated count, and the report-back states the delivery way, live or snapshot, and the as-of time. Red flags: you were told a snapshot is live; figures quoted without coverage; a Copilot answer quoted after one run.

Limitations

  • Live data only through views in the EA database in DirectQuery, which queries the production database. A reporting database and Parquet files are Import snapshots.
  • The Parquet project holds an absolute path. Move the files or the project and you must regenerate.
  • A published model refreshes in the service with no gateway only from a SQL database in Microsoft Fabric. From a SQL Server you run it needs an on-premises data gateway, which was not measured with the generated model. It cannot refresh from local Parquet files.
  • Every entity table shows one blank member. Use the count measures for counts.
  • Microsoft 365 Copilot was measured on one model, with Microsoft 365 Copilot Chat only. Its answers vary between runs, it finds reports more readily than models, and descriptions reach it when the model is published from Power BI Desktop.
  • Measured on one reference model and specific Power BI Desktop builds.
  • A fresh project's report has one Overview page. You build the other visuals. A regenerated project keeps its existing report and gets no Overview page.

The engines behind this skill are described in Power BI generator.