Prepstellar

DP-600 · Dependency Deployment and Reuse

22 cards

XMLA Semantic Model Management

Swipe, scroll or use ← →
  1. Know what the endpoint is for

    The XMLA endpoint is the protocol that Power BI uses for communication between client applications and the engine that manages semantic models. It is the door that external tools and notebooks knock on when they need to query, inspect, or change a published model.

    Every Fabric or Power BI Premium workspace exposes an XMLA endpoint, and all data sent over XMLA is fully encrypted. Nothing has to be switched on for that traffic to be protected, and nothing can be switched off when a tool fails to connect.

    1 / 22
  2. Know what the endpoint is for

    It helps to fix the boundaries of the protocol early:

    What XMLA is What it is not
    A protocol between client tools and the model engine A way to move content between environments
    Available on every Fabric or Premium workspace A local file format for a report
    Always encrypted in transit A setting to relax when a tool cannot connect

    Everything else in this concept follows from that first line: which mode you connect in, what address you connect to, and which tool you point at it.

    2 / 22
  3. Quick check

    What does the XMLA endpoint provide?

    1. ACommunication between client tools and the semantic model engine

      Right. It is the protocol between client applications and the engine that manages semantic models, and its traffic is fully encrypted.

    2. BSaving report layouts as readable text files for review

      That is what a text-based project format does locally; it is not a protocol for talking to the model engine.

    3. CCopying content between the workspaces assigned to each deployment stage

      Moving content between stage workspaces is what a deployment pipeline does, not this protocol.

    3 / 22

  4. Match the access mode to the job

    The endpoint is enabled for read-only access by default. Read-only access supports queries against model data and metadata, which is enough for inspecting, testing, and reporting on what a model contains.

    A capacity administrator can enable read-write access for a workspace. Read-write access is the documented choice when an external tool must deploy model changes, run scripted operations, or trigger refresh.

    4 / 22
  5. Match the access mode to the job

    This access-mode distinction is the first deployment decision: inspection can remain read-only, but modification requires read-write access.

    What you need to do Mode required
    Query model data and metadata Read-only
    Deploy a model change from an external tool Read-write
    Run scripted operations Read-write
    Trigger a refresh Read-write

    It explains a failure that looks mysterious from the tool's side. A client that connects, browses, and queries perfectly yet cannot deploy is not misconfigured; it is meeting the default, and only a capacity administrator can change it.

    5 / 22
  6. Quick check

    A tool queries a production model over XMLA but cannot deploy an approved change. What should the capacity administrator do?

    1. ALeave read-only access in place and select the model again

      Read-only supports queries against data and metadata, which is exactly what already works and what is not enough here.

    2. BPoint the connection at a table instead of the workspace

      The connection string targets a workspace by design, so a different address would not change an access mode.

    3. CEnable read-write XMLA access for that workspace, since modification requires it

      Right. Read-only is the default, and deploying model changes needs read-write access, which a capacity administrator enables.

    6 / 22

  7. Address the workspace

    An XMLA connection string uses the format powerbi://api.powerbi.com/v1.0/[tenant name]/[workspace name]. Two things are named there, and neither of them is a model: the tenant and the workspace.

    The connection string targets a workspace rather than one semantic model. That is a deliberate shape, not an omission.

    7 / 22
  8. Address the workspace

    Because the address stops at the workspace, one connection string serves every model inside it. Convenient — a single string in a notebook or a tool profile — but it means the address alone never tells you which model you are working with.

    Two mistakes follow from forgetting that:

    • Pushing a model name into the tenant segment, which corrupts the address instead of selecting anything.
    • Reading a successful connection as proof that the right model is open. It is not; the model is chosen afterwards.
    8 / 22
  9. Quick check

    What does the XMLA connection string identify?

    1. AOne semantic model, addressed directly by name

      The address stops at the workspace, and the model is chosen by the client afterwards.

    2. BA workspace, not a single model

      Right. The format names the tenant and the workspace, and a model is specified once you are connected.

    3. CA single measure inside a published semantic model

      A measure is queried after a model has been selected and is never part of the connection address.

    9 / 22

  10. Keep your progress in the app

    That’s 3 of 8 quick checks. In the app they stay answered, and every lesson remembers where you left off.

  11. Then choose the model in the client

    After connecting to the workspace, specify the semantic model to query. How you name it depends on the client. SemPy accepts the model name as a parameter, while DAX Studio and Tabular Editor use the model as the database or initial catalog.

    Client How the model is specified
    SemPy The model name is passed as a parameter
    DAX Studio The model is the database, or initial catalog
    Tabular Editor The model is the database, or initial catalog
    10 / 22
  12. Then choose the model in the client

    This second step is where an otherwise healthy session stalls. A tool that reached the correct workspace address and still has nothing to query has not chosen a model yet. The fix is a selection, not a new connection string, and certainly not a change to how the traffic is protected.

    Applications designed for Azure Analysis Services or SQL Server Analysis Services typically work with Power BI through XMLA with minimal configuration changes, so the two-step habit — workspace first, then model — carries over from tooling a team may already own.

    11 / 22
  13. Quick check

    DAX Studio has connected to the right workspace address, but no model is selected. What comes next?

    1. AAdd the model name into the tenant segment of the address

      The tenant segment identifies the organization, and editing it breaks the address rather than choosing a model.

    2. BTurn off encryption so the model list can load

      All data sent over XMLA is fully encrypted, and encryption is not a switch that reveals models.

    3. CSelect the semantic model as the database, or initial catalog, for the connection

      Right. DAX Studio and Tabular Editor take the model as the database or initial catalog once the workspace is connected.

    12 / 22

  14. Validate with SemPy

    SemPy is included in Fabric Runtime 1.2 and later and connects Fabric notebooks to semantic models through XMLA. That turns model validation into something a notebook can do on demand, the same way every time.

    Its metadata functions can list tables, columns, measures, and relationships in a published model. Before asking whether a model is right, you can ask what it contains.

    13 / 22
  15. Validate with SemPy

    SemPy also supports calculation and data-quality checks:

    Function What it does
    list_relationship_violations() Returns foreign-key rows with no matching primary-key value
    evaluate_measure() Evaluates a measure grouped by specified dimensions
    evaluate_dax() Runs a custom DAX query
    read_table() Loads model data into a FabricDataFrame

    read_table() loads model data into a FabricDataFrame so notebook assertions can check conditions such as null or duplicate keys. These scripted checks are repeatable and can form a validation suite that runs before deployment.

    14 / 22
  16. Quick check

    A team must run the same relationship and measure checks before every deployment. What fits best?

    1. AA SemPy notebook that runs the checks as a repeatable suite

      Right. SemPy connects notebooks to models through XMLA, and its scripted checks can run before every deployment.

    2. BAn interactive DAX Studio session run by hand each time

      Interactive querying gives one person fast feedback, but repeating it by hand is not an automated suite.

    3. CA schema comparison in ALM Toolkit, repeated before each release

      Comparing schemas answers what differs between two models; it does not evaluate relationships or measure results.

    15 / 22

  17. Read a relationship check correctly

    The relationship check is worth a closer look, because its result reads backwards at first. The list_relationship_violations() function receives a dictionary of table DataFrames and returns foreign-key rows that have no matching primary-key value; an empty result means the relationships are intact.

    An empty output is the good outcome. Rows in the output are orphans: keys pointing at something that is not there.

    The other functions answer other questions. evaluate_measure() checks that a calculation returns what it should, grouped by the dimensions you name, and evaluate_dax() runs whatever query a check needs. Structure and arithmetic together are what a pre-deployment suite has to cover.

    16 / 22
  18. Quick check

    Which SemPy function returns foreign-key rows with no matching primary-key value?

    1. A`evaluate_measure()`, grouped by the chosen dimensions

      That evaluates a measure grouped by specified dimensions, which is a calculation check rather than a relationship check.

    2. B`list_relationship_violations()`

      Right. It takes a dictionary of table DataFrames, and an empty result means the relationships are intact.

    3. C`read_table()`, loaded into a FabricDataFrame

      Loading a table into a FabricDataFrame supports assertions such as null or duplicate keys, but it does not report violations itself.

    17 / 22

  19. Pick the external tool by the job

    DAX Studio provides interactive DAX query testing against a published semantic model. Tabular Editor provides a visual object tree for model inspection and editing, and its Best Practice Analyzer applies configurable structural rules. ALM Toolkit compares schemas between semantic models, such as development and production models.

    All three use the same XMLA workspace connection string, so the choice between them is about the job in front of you, not about access.

    18 / 22
  20. Pick the external tool by the job

    The job The tool
    Test a DAX query interactively DAX Studio
    Inspect or edit structure, or apply structural rules Tabular Editor
    Compare a development model against production ALM Toolkit
    Run the same checks before every deployment SemPy

    Choose SemPy for automated, repeatable validation and an external tool for interactive desktop feedback. One person exploring a problem wants an answer now; a team shipping every week wants the checks to run without anyone remembering to run them.

    19 / 22
  21. Quick check

    Which tool compares the schemas of a development and a production semantic model?

    1. AALM Toolkit, which compares schemas between semantic models

      Right. Comparing one model's schema against another's, such as development against production, is its job.

    2. BDAX Studio, for interactive queries

      DAX Studio tests DAX queries interactively against one published model rather than comparing two.

    3. CTabular Editor's Best Practice Analyzer

      The Best Practice Analyzer applies configurable structural rules to one model instead of diffing two of them.

    20 / 22

  22. Key takeaways

    • Read-only XMLA supports data and metadata queries; deploying model changes requires read-write access, enabled by a capacity administrator.
    • The connection string targets a workspace, after which the client selects a semantic model — by parameter in SemPy, as the database or initial catalog elsewhere.
    • Every Fabric or Premium workspace exposes the endpoint, and all traffic over it is fully encrypted.
    • Use SemPy for scripted, repeatable validation: relationship violations, measure evaluation, custom DAX, and table-level assertions.
    • Use the external tools for interactive work: DAX Studio for query testing, Tabular Editor for structure and rules, ALM Toolkit for schema comparison.
    21 / 22
  23. Quick check

    Which summary matches the XMLA workflow?

    1. ARead-write is the default, and the connection string names one model

      The endpoint is enabled for read-only access by default, and the address targets a workspace.

    2. BRead-only can deploy changes, and SemPy is the interactive query tool

      Read-only supports queries rather than deployments, and interactive DAX testing belongs to DAX Studio.

    3. CRead-only is the default; deploying changes needs read-write

      Right. Inspection can stay read-only, while modification requires read-write access.

    22 / 22

  24. 8 quick checks · then the test

    In the app, finishing the quick checks opens this lesson’s 10-question test, and the ones you miss come back exactly when you’re about to forget them.

The whole course, on your phone

Lessons you can read, audio you can listen to on the way to work, and practice that remembers what you got wrong.