Power BI Files

Free downloads Power BI Core visuals DAX

Power BI Files, the .pbix behind the tips

Seventeen working reports. Every one has the data baked in, so you can open it, click into any visual, and see exactly how the trick is wired up.

A montage of six Power BI reports from the repository: a hospital performance dashboard, a profit and loss matrix, a slope chart, a variance bar chart, a scatter chart with a ratio line, and a column chart with labels parked above the axis.

Most of these started as a LinkedIn post: someone asks whether Power BI can do a thing, the answer turns out to be yes, and the file is the proof. Almost all of it is built with the core visuals. No custom visual to install, no Deneb, no R or Python. Just formatting cards, measures, visual calculations and the occasional piece of misuse that the product never advertised.

Every file is free to download, and the whole set lives in one public repository.

Getting started

  1. Download the .pbix you want, or clone the whole repo.
  2. Open it in Power BI Desktop.
  3. Click the visual you came for and open the Format pane. The trick is always in a formatting card or a measure, and the notes below tell you which one.

There is nothing to connect and nothing to refresh. Every file carries its own model with the data already loaded, so they open offline and behave exactly as they did when the post went out.

The files

Data labels that behave

Error bars for column chart data labels

Four column charts showing a before and after of data label headroom: the problem, the error bar switched on and visible, the error bar hidden, and a drilled version where the axis has followed.

Column chart data labels sit outside the column when there is room and flip inside when there is not, so a field parameter switch or a drill down can wreck them. Driving the axis maximum from a measure fixes the first problem but not the second: drill into a month and the axis stays where it was, so the daily columns shrink to nothing.

Error bars fix both. One measure:

Error Bars = [Y Axis] * 1.2

Put it in the error bar’s upper bound, turn the bar on, colour it the same as the chart background, and switch the markers and tooltips off. The chart now sizes its own axis to 1.2 times whatever is currently on screen, drill downs included, and the thing doing it is invisible.

The four tiles are the argument in order: the problem, the error bar switched on so you can see it, the error bar hidden, and a drilled version proving the axis follows.

Between tiles two and three, the only things that change are the marker switch and the bar colour.

Data labels above the x axis

Two column charts side by side, the right one with every data label parked in a single row just above the x axis.

Instead of sitting on top of each column, every label lines up in a single row just above the axis. A visual calculation returning a negative number is bound to the axis Start, which opens a band below zero. An invisible line series is plotted in that band, and its multi line label is re-pointed at the real measures with dynamicLabelValue and dynamicLabelDetail.

Left chart is the control, right chart is the technique, same data.

Dynamic format strings

A column chart whose measure and number format both change with a button slicer, showing volume, revenue and gross profit percentage each in its own format.

One measure switched by a button slicer over a disconnected table, carrying a dynamic format string so Volume, Revenue and Gross Profit % each get their own number format. The catch is that parked labels normally lose the format. Setting display units to None on the label is what keeps the measure’s own format alive.

Visual calculations for Y axis max

Column charts whose y axis maximum adjusts so the data labels always have room above the tallest column.

Data labels get clipped when a column reaches the top of the plot area. Put a hidden visual calculation in the Y bucket, bind valueAxis.end to it, and the axis always leaves 10 to 20 per cent of headroom no matter what the slicer selection does.

Three variants are in the file, including Gustaw Dudek’s EXPANDALL version, plus a second page that does the same job from a model measure instead.

One limitation worth knowing before you commit to this: the axis does not re-scale on a drill down. Error bars solve that case.

Max All =
IF (
    ISINSCOPE ( [Customer] ),
    MAXX ( ALL ( [Customer] ), [Revenue] ) * 1.2,
    EXPAND ( MAX ( [Revenue] ), [Customer] ) * 1.2
)

Chart types the core visuals were never meant to make

Slope chart

A slope chart ranking four countries across years, drawn from a standard Power BI line chart.

A slope, or bump, chart out of the stock line chart. Plot the rank instead of the measure, keep the measure in the Y bucket but flagged hidden so RANK can still see it, then invert and hide the value axis.

Rank = RANK ( DENSE, COLUMNS, ORDERBY ( [Revenue], DESC ) )

Pages 2 and 3 add field parameters for the dimension and the date grain, with a second visual calculation sizing the axis so it keeps working whatever the parameter returns.

Strip plot

A jittered strip plot of revenue by country, built from the standard Power BI scatter chart.

Strip plots and jittered strip plots from the standard scatter chart. A constant valued visual calculation on the Y axis collapses every marker onto one line. Add a second Y field holding a row number and the dots spread back out into a jittered band, which is what stops overlapping points hiding each other.

3 Service Profit Analysis

A service profit dashboard whose gross margin panel is a lollipop chart built from diamond markers and error bar stems.

The gross margin panel is a lollipop chart, and there is no lollipop visual involved. Line width is set to 0 so the line vanishes, diamond markers become the heads, and the stems are error bars running from a [Zero] measure up to the value. Positive and negative use separate one sided ranges, which is how they end up different colours.

The rest of the report is a field parameter workout: date grain, metric and number format are all swapped from slicers, with the axis maximum pinned to a measure.

Distribution by customer segment

A stacked column chart with ribbon bands connecting each segment across the categories.

A core visuals rework of a stacked column chart Cole Nussbaumer Knaflic posted. Turning on ribbon bands connects the segments across categories, so the eye follows a segment through the population instead of comparing four separate stacks. The takeaway carries: segments 3, 4 and 5 are 30% of the US population and 50% of our customers.

stackedGapSize and reversed series order do the rest of the work.

Testing ribbon chart

A 100 percent stacked column chart that has kept the ribbon connectors from the ribbon chart it was converted from.

Build a ribbon chart, then change it to a 100% stacked column chart. The ribbonBands card survives the conversion even though Power BI never offers it on that visual type, so you keep the connectors and gain share of total.

Transparency as a formatting tool

Transparent chart switching

A chart switcher in which two charts sit on top of each other and transparent colour measures decide which one paints.

Power BI has no transparent colour. It does have #FFFFFF00, which is transparent in hex, except that the colour fields only accept six characters and that is eight. Return it from a measure and conditional formatting takes it happily.

Colour Transparent =
IF ( SELECTEDVALUE ( Colour_Switch[Switch] ) = "Chart 1", "#FFFFFF00", "#445469" )

Taken to its conclusion: two charts sit on top of each other and both render all the time, a disconnected slicer feeds a colour measure into each one’s data point fill and axis label colours, and the chart you did not pick paints nothing at all. Chart switching with no bookmarks.

It is a demo, not a pattern to ship. Tooltips have to be turned off, and only the front chart is selectable, which is why there is an invisible rectangle sitting over both of them.

Transparent text

A report with a warning banner that appears only when gross profit drops below fifteen per cent.

A warning banner that appears when gross profit drops under 15% and is gone otherwise. No bookmark, no button, no extra page.

It all rests on the alpha channel. #FFFFFF is the colour, the extra 00 is full transparency, and the colour picker will only accept six digits. A measure can hold all eight:

Hex Transparent = FORMAT ( "#FFFFFF00", "0" )

The FORMAT is not decoration. Conditional formatting only takes a text measure, so without it the measure is unusable. Bind the shape’s fill and its outline to a measure returning either that or a warning colour, and the banner handles itself.

Anything with a conditional formatting button can be made transparent this way, up to and including a whole visual.

Variance, highlighting and context

Variance highlights stacked bar chart

A horizontal bar chart where the coloured tip of each bar is the variance between actual and budget.

Actual against budget where the coloured tip of the bar is the variance. Three measures are stacked: a near invisible base holding the minimum of sales and budget, then two mutually exclusive segments carrying the positive only and negative only absolute variance. Total bar length ends up as the larger of the two figures and the tip is the gap.

The information icon in the corner is its own small trick. Image visuals cannot host a report page tooltip, so it is a card bound to a dummy measure with an image background.

8 line chart with selection highlight

A line chart of eight series where the selected one is drawn in full colour over its greyed out siblings.

Highlighting one line in a crowded chart, without losing the others for context. A field parameter swaps a duplicate “v2” copy of the selected measure into the first Y slot, so it draws directly over its own greyed out twin. The duplicate is renamed to match, which is why the legend gives nothing away.

Y axis ratio

A scatter chart with a ratio line through it, bubbles coloured by whether they sit above or below the line, and a table proving the arithmetic.

The scatter chart’s ratio line from the Analytics pane, which draws y = (sum of Y / sum of X) * x through the origin and gives the plot a reference to read against. The file then reproduces the same ratio in DAX so each bubble can be coloured by whether it sits above or below the line, with a table alongside proving the arithmetic.

Three pages build it up one step at a time.

Health dataset

A hospital revenue and performance report with KPI cards, custom tooltips and a shaded band between actual and last year.

A hospital performance report that doubles as a conditional formatting showcase. The standout is the shaded band between actual and last year, which Power BI has no feature for: turn error bars on for the Last Year series only, switch the bar off and the shade on, then bind the lower bound to the other series’ measure.

Also in here: custom tooltips, KPI cards built from measure bound reference labels, and a deliberately unformatted control card so you can see what the dynamic format strings are doing.

Matrix layout and DAX plumbing

Half blank lines P&L

A profit and loss statement built in a Power BI matrix, with half height blank rows acting as separator bands between the line items.

“But I can make it in Excel.” A P&L in a matrix with no Rows field and no Columns field at all. The measures run down the left through Values on row, and a dummy measure whose dynamic format string is a single space in quotes gets dropped into Values between the real line items.

Power BI then renders those rows at half height, which is the part nobody can explain. Add row padding and an alternating row background and they become the separator bands in the picture. Found by accident, and almost certainly a bug.

Sales & budget

A daily budget allocation report comparing cumulative month to date actuals against a monthly budget spread to a daily grain.

Turning a monthly budget into a daily one in DAX, then comparing it to actuals as a cumulative month to date line. The interesting page is the benchmark: three tables built as a hand rolled Performance Analyzer harness, racing the measure that allocates on the fly against one that reads from a pre-materialised daily table.

The follow up post makes the case for doing the transformation upstream instead, which is usually the right answer.

Full index

File What it shows Pages Visuals Post
3 Service Profit AnalysisLollipop chart from a zero width line plus error bar stems321none
8 Line Chart With Selection HighlightField parameter swaps a duplicate measure over its dimmed twin252025-03-30
Data Labels Above X AxisNegative visual calcs park every label above the axis132025-10-09
Distribution by Customer Segment Stacked ColumnsRibbon bands on a stacked column chart112025-10-20
Dynamic format stringsKeeping a dynamic format string alive in a parked data label242025-11-04
Error bars for column chart data labelsInvisible error bar reserves headroom for two line labels142025-11-14
Half Blank Lines P&LSpace format string renders half height separator rows212025-09-09
Health DatasetError bar shading fakes an actual versus last year band4142024-09-13
Sales & BudgetMonthly budget allocated to daily grain, with a speed test4132024-10-05
Slope ChartRANK visual calculation on an inverted line chart3132025-06-09
Strip plotConstant visual calc collapses a scatter chart into a strip382025-07-17
Testing Ribbon ChartRibbon bands kept on a 100% stacked column chart122025-04-16
Transparent Chart SwitchingTransparent colour measures switch charts without bookmarks272025-06-07
Transparent TextMeasure driven fill hides and shows a warning banner142025-11-13
Variance Highlights Stacked Bar ChartThree segment stack turns the bar tip into the variance492025-05-08
Visual Calculations for Y Axis MaxHidden visual calculation drives the value axis maximum3152025-06-08
Y Axis RatioScatter ratio line plus DAX that colours each bubble37Article

Notes

Format. Fifteen of these are classic .pbix files. Two, Error bars for column chart data labels and Transparent Text, were saved from a newer Desktop build and carry the enhanced report format inside, so their report definitions are readable JSON if you unzip them.

Themes. Most files use a theme built with the BIBB.PRO theme generator, or one of my “2025 Projects” palettes. Testing Ribbon Chart is the one that runs on the stock Power BI theme.

Data. All sample data. Nothing here comes from a client.

About these files

I am Tim Osborn, a Power BI and Fabric consultant in Sydney. I post a Power BI tip most weeks, and when the tip needs a file to make sense, the file ends up here. Follow me on LinkedIn for the posts these files come from.

If any of this was useful, a star on the repo helps other people find it. Star the repo

Need one of these in a real report?

Demo files are the easy half. Getting the model, the measures and the render time right on a report people depend on is what I do for a living.