A Power BI-Style Data Model and DAX Measures, Right in Your Browser

·

The Data model dialog: tables from two datasources and the relationships between them

A Power BI-style data model and DAX measures, right in your browser

Real questions rarely live in one table. Sales by region needs the sales table and the table that says which country is in which region. Margin by segment needs a formula, not a column. Until now that meant a desktop tool, a data model file and someone who knows DAX.

Report Studio now does it in the browser: several datasources in one report, relationships between their tables, combined tables, and DAX-style measures and calculated columns.

The Data model dialog with tables from two datasources and their relationships

One report, several datasources

Add any datasource from the same workspace to a report, then choose for each chart which datasource and table it reads. Your SQL database, an Excel export from finance and a CRM's REST API can sit on one page.

A chart's Data tab with its Datasource and Table

Relationships: one slicer, every chart

Tell the report that Sales.Country matches Countries.Country, or let it detect the relationships your SQL database already declares. Now a slicer on Region = North filters the sales chart to Canada and Mexico, even though Sales has no Region column. Relationships can even cross datasources: a region list in SQL can filter an Excel sheet.

Region = North on the slicer filters the related charts

Charts on tables that aren't related are left alone, instead of breaking on a column they don't have.

Combined tables

Need both tables in one chart? Combine two tables of the same SQL datasource into one, keeping all rows of the first or only the matches, and pick it like any other table. Sales with region gives you Sales by Region in two clicks.

DAX measures, tested before they're saved

Write the numbers your data doesn't have as measures, in the same formula language as DAX and Excel:

Total Profit = SUM([Profit])
Margin %     = DIVIDE([Total Profit], SUM([Sales]))
Gov Sales    = CALCULATE(SUM([Sales]), [Segment] = "Government")

Each measure is worked out for every bar, slice and card from the rows behind it, so Margin % by Segment shows each segment's own margin, and the loss-making one goes below zero.

The measure editor with Margin % tested on the table's rows

Select Test and the formula runs on your real rows before you save it. A typo, a column outside an aggregate ([Sales] instead of SUM([Sales])) or two measures that use each other gets a plain-English message instead of an empty chart.

Calculated columns

Add a value to every row: Cost = [Sales] - [Profit], or a band like High / Low / Loss with IF. Use it as a chart's label, its value, a table column or a filter.

A page of charts built on measures and calculated columns

Same security as every chart

Nothing is copied into a model file. Every chart still reads its own datasource with the reader's permissions, so row-level security, slicers and filters apply to measures and related tables exactly as they do elsewhere. A report can only use datasources from its own workspace.

Try it

Open any report, switch to Edit, and look for Data model in the left rail. The guides walk through it:

Your first report is free: no credit card, no time limit.