Skip to content

Superset vs Power BI, and data storytelling

Exercise comparison-and-storytelling-annex.pdf · PDF

Three friends have spent two years making a game. They are about to launch it on Steam, and they ask you, the one who "knows about data", a simple question: should we, and at what price?

You open your Steam market dashboard and turn the screen towards them. Four KPIs, a line, some bars, two filters. They look at it for ten seconds. Then one of them says: "Okay... so what do we do?"

Your dashboard is correct. Every number on it is true. And it did not answer the question. This last lesson is about that gap: first you compare the two tools you now know, and then you learn the skill that neither tool has a button for — saying what the data mean for the person in front of you.

What you will learn

  • Compare Superset and Power BI on five points: licence, data model, where they run, API sources and who uses them
  • Explain why "which one is better?" is the wrong question
  • Tell an insight from a plain description of a chart
  • Write a three-part data story for a named reader: context, insight, action
  • Annotate a Superset dashboard with a headline, a text block and a takeaway chart title
  • State one honest limit of the data next to the claim it affects

Two tools, side by side

You have built the same three charts on two consoles. Time to compare them properly. A fair comparison does not start with "which is better". It starts with the same questions asked of both.

Apache Superset Microsoft Power BI
Who makes it A project of the Apache Software Foundation, built by a community of volunteers and companies Microsoft
Licence Open source, under the Apache License 2.0: free to use, change and host yourself Proprietary. Power BI Desktop is a free download. In the service, a free licence only covers your own workspace; sharing needs a paid licence, per user
Data model A thin layer: each chart reads one dataset (a table or a saved query) with its metrics. Joins are written in SQL A semantic model: several tables linked by relationships, with calculations written in a formula language called DAX. One model per report
Where it runs A web application on a server that someone has to look after. You use it from any browser. The data stay in the database Power BI Desktop, on Windows only, to build; Microsoft's cloud to share. The data are usually imported: a copy travels inside the file
An API as a source Not directly: it charts SQL tables. You extract, flatten to a table and load it into the database first, as you did in Datasets and destination Get data → Web reads an address that answers in JSON and hands it to Power Query, where you flatten it
Who tends to use it Teams that know SQL and run their own servers Organisations already on Microsoft 365; analysts who come from Excel

Two words in that table deserve a definition:

Open source software publishes its source code under a licence that lets anyone use it, study it, change it and share it. Proprietary software belongs to a company that keeps the code and sets the conditions of use.

Where Superset comes from

Superset started in 2015 as a three-day hackathon project by Maxime Beauchemin, an engineer at Airbnb. It entered the Apache Software Foundation's incubator in 2017 and became one of its top-level projects in January 2021. Nobody sells it to you: you download it and you run it.

Careful: free licence does not mean free of cost

"Superset is free, so it costs nothing." The licence is free. The server it runs on is not, and neither is the person who installs it, updates it and fixes it at three in the morning. With Power BI you pay per user and Microsoft looks after the machines. Both cost money: they just send the bill to different places.

A generalisation, not a statistic

The last row, "who tends to use it", is a rule of thumb, not a measured fact. You will find SQL teams on Power BI and Excel lovers on Superset.

So which one is better?

Refuse the question. Better for whom?

The reader of the decision What they have The tool that fits
A town hall Microsoft licences for everybody, no team to run servers, staff who live in Excel Power BI
A start-up A PostgreSQL database, two developers who write SQL, no budget for licences Superset

Same question, opposite answers, both right. The tool follows the context. Keep that word in your hand: you need it again in a minute.

From minimap to quest marker

All year, this module has been a crafting video game: you farmed the materials, smelted them, crafted with them, and built the HUD. A dashboard is the minimap of that HUD. It shows everything: every road, every enemy, every chest.

Now think of a new player dropped into that world. The minimap is complete, accurate and useless to them, because it does not say where to go. What they need is the quest marker: the little arrow that says there.

Data storytelling is turning a finding in the data into a message for a specific reader: what you found, why it matters to them, and what they should do about it.

A dashboard is the minimap: it shows everything. A story is the quest marker: it says where to go.

Your three friends looked at a perfect minimap and asked for the marker.

Careful: the data do not speak for themselves

It is tempting to think a good dashboard needs no text. You saw in the very first lesson, Data do not speak alone, that this is false: four datasets with the same statistics drew four completely different pictures. A chart shows. Somebody still has to say what it means for this reader. That somebody is you.

The three parts of a data story

A data story has three parts. Each one answers one question:

Part The question it answers In the game
Context Who is reading, and what do they have to decide? Which player, which quest
Insight What is the one finding, with its number, that changes the decision? What the minimap shows that matters for that quest
Action So what should they do? The marker: go there
flowchart LR
    C["<b>Context</b><br>who reads, what they<br>must decide"] --> I["<b>Insight</b><br>one finding, with its<br>number and its 'so what'"]
    I --> A["<b>Action</b><br>what to do: starts<br>with a verb"]
    L["<b>Limit</b><br>what the data<br>cannot tell you"] -. "written next to" .-> I

The order matters, and it starts with the reader, not with the chart. This is the first lesson of one of the best-known books on the subject, Storytelling with Data by Cole Nussbaumer Knaflic (Wiley, 2015): before you draw anything, know who your audience is and what you need them to know or do.

That is also why a story for the studio of three is not the story for Steam's own managers. Same data, same dashboard, another quest.

What makes an insight

An insight is a finding that carries a number and a consequence: it changes what the reader decides.

Most first attempts at an insight are really a description: they say what the chart is about. The test is simple. Is there a number? Is there a "so what"?

A description Why it is not an insight The insight
"Releases per year" It is a label. No number, no consequence "Releases multiplied by 6.5 in four years: your game will be one of thousands"
"Most games on Steam are cheap" No number, and so what? "43.5% of games cost under 5, but only 0.4% of those are hits: a low price alone will not find you players"
"Hits are rare" How rare? For whom does it matter? "Only 623 of 26,685 games, 2.3%, reach a million owners"

Every number in the right-hand column comes from games_clean. Here is the first one, drawn:

%%{init: {"themeVariables": {"xyChart": {"plotColorPalette": "#4051b5"}}}}%%
xychart-beta
    title "Games released on Steam per year"
    x-axis ["2013", "2014", "2015", "2016", "2017", "2018"]
    y-axis "Games" 0 --> 9000
    bar [556, 1352, 2544, 4503, 6871, 8845]

From 1,352 games in 2014 to 8,845 in 2018. Call the chart "Releases per year" and the reader has to do that sum alone. Call it "Six times more games in four years" and the title has already done it.

The honest part: say the limit

An insight is a claim. A professional writes, next to it, what the data cannot tell.

A limit is one thing your data cannot show, stated next to the claim it affects.

Two limits sit inside the Steam data, and both would hurt your friends if you hid them.

The 2018 trap. The table says that 87.6% of the games released in 2018 are niche: fewer than 20,000 owners. Terrifying. But the data were collected in 2019. A game released in December 2018 had only weeks to find its players; a game from 2014 had years. 2018 holds a third of all the games and only 37 of the 623 hits. Its games are not worse. They are younger. The 87.6% is true and overstated at the same time.

Correlation is not cause. Look at the share of hits per price band:

price_band games hit_pct
30 or more 565 10.4
15 to 30 2,367 7.1
Free 3,094 5.9
5 to 15 9,046 1.9
Under 5 11,613 0.4

"Cheap games fail, so charge 30." Careful. The table shows who is a hit, not why. Big studios charge more and have marketing budgets, famous names and hundreds of people. The price did not make the hit. Write it as a limit, not as advice.

A limit does not weaken your story

Beginners hide the limits, afraid of looking unsure. It works the other way round. The reader who discovers the limit alone stops trusting everything else you said. The reader who is told the limit trusts the rest more.

Try it: the Steam story

Your reader: a studio of three people deciding whether to launch on Steam, and at what price. You will turn your Steam market dashboard from a minimap into a quest marker.

Step 1 — Find the insight. In SQL Lab, database Dades classe, run these two queries one at a time and read the results slowly:

SELECT release_year, COUNT(*) AS games,
       ROUND(100.0 * COUNT(*) FILTER (WHERE owners_tier = 'Niche') / COUNT(*), 1) AS niche_pct,
       PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY price) AS median_price
FROM games_clean WHERE release_year >= 2013
GROUP BY release_year ORDER BY release_year;
release_year games niche_pct median_price
2013 556 16.5 9.99
2014 1352 29.9 7.99
2015 2544 47.0 4.99
2016 4503 59.4 4.99
2017 6871 77.2 4.99
2018 8845 87.6 3.99
SELECT price_band, COUNT(*) AS games,
       ROUND(100.0 * COUNT(*) FILTER (WHERE owners_tier = 'Hit') / COUNT(*), 1) AS hit_pct
FROM games_clean GROUP BY price_band ORDER BY hit_pct DESC;

The second query returns the price-band table you saw in the previous section. Now write one sentence with at least two numbers that would worry or encourage the studio.

If niche_pct always ends in .0

You wrote 100 instead of 100.0. Without the decimal point PostgreSQL divides whole numbers and throws the decimals away: 87.0 instead of 87.6.

Step 2 — Write the story. Three sentences, one per part. The insight must carry its numbers. The action must start with a verb. Give them to a classmate: if they can tell which sentence is which without being told, you are done.

Step 3 — Annotate the dashboard. A story nobody can see on the dashboard is a story only you know.

Do this Why
Open the dashboard, Edit dashboard. In the panel on the right, open the Layout elements tab That is where the text elements live
Rewrite the Header at the top, or drag a new one: the insight as a headline with a verb "Steam market 2004–2018" is a label; a headline says something
Drag a Text / Markdown block next to the chart that proves it. Double-click it and replace the sample text with the insight, its numbers and, in italics, one limit The claim sits beside its proof, and the limit beside the claim
Click the title of that chart and write the takeaway "Releases per year" becomes "Six times more games in four years". It changes on this dashboard only
Move the proving chart to the top row. Add a last Text / Markdown block at the bottom with the action. Save The eye lands top-left first, and leaves with what to do

You are finished when someone who reads only the header and the two text blocks knows what the studio should do.

A model story — write yours before you open this

Context. You are three people about to launch a game on Steam.

Insight. Releases went from 1,352 in 2014 to 8,845 in 2018, 6.5 times more, and the share of games with fewer than 20,000 owners rose from 29.9% to 87.6%. The median price fell from 7.99 to 3.99.

Action. Do not count on the store to bring you players: build an audience before launch, and do not expect a low price to do it for you.

Limit: games from 2018 had less time to gather owners when the data were collected in 2019, so their share of niche games is overstated.

Key takeaways

  • Superset is open source (Apache License 2.0), runs on a server you look after and reads one dataset per chart. Power BI is proprietary (Microsoft), builds on Windows, shares through Microsoft's cloud and imports the data into a semantic model.
  • Neither is "better". The tool follows the context: who will use it, what they already have, who looks after it. A free licence is not a free tool.
  • A dashboard is the minimap; data storytelling adds the quest marker. The data do not speak for themselves.
  • A data story has three parts: context (who reads, what they decide), insight (one finding with its number and its "so what") and action (what to do, starting with a verb).
  • A description is not an insight. "Releases per year" is a label; "releases multiplied by 6.5 in four years" is a finding.
  • Always state a limit next to the claim it affects: the 2018 games are younger, not worse; a higher price goes with hits, it does not cause them.

Quick check

1. Which statement about licences is true?
  • Superset and Power BI are both open source
  • Superset is open source under the Apache License 2.0; Power BI is proprietary software from Microsoft
  • Power BI is open source, and Superset belongs to Airbnb
  • Superset is proprietary, but free for schools

Superset is a project of the Apache Software Foundation, free to use, change and host. Power BI belongs to Microsoft: Desktop is a free download, but sharing in the service needs a paid licence per user. Superset was born at Airbnb in 2015, but Airbnb does not own it.

2. A classmate says: 'Superset is free, so it costs nothing.' What is the best answer?
  • True: open-source software never costs anything
  • False: Superset has a hidden monthly fee per user
  • The licence is free, but the server and the person who looks after it are not
  • True, as long as you only build dashboards and never publish them

A free licence is not a free tool. Superset is a web application on a server that somebody must install, update and repair. Power BI charges per user and Microsoft runs the machines. Both cost money, in different places.

3. Which of these is an insight?
  • "Releases per year, 2013 to 2018"
  • "Most games on Steam are cheap"
  • "This bar chart shows the five price bands"
  • "43.5% of games cost under 5, but only 0.4% of those are hits, so a low price alone will not find you players"

An insight carries a number and a consequence. The first and third options are labels: they say what a chart is about. The second has no number and no "so what".

4. In a data story, what does the context part answer?
  • Who is reading, and what they have to decide
  • Which chart type fits the data best
  • Where the dataset was downloaded from
  • What the reader should do next

Context comes first: which player, which quest. Without it you cannot choose the one finding that matters. What the reader should do is the action, the third part.

5. 87.6% of the games released in 2018 have fewer than 20,000 owners. Why must this number travel with a limit?
  • Because the percentage was calculated wrongly
  • Because 2018 has too few games to draw any conclusion
  • Because the data were collected in 2019, so 2018 games had far less time to find owners than older ones
  • Because niche games are not real games

The number is true and overstated. A game from late 2018 had weeks to gather owners; one from 2014 had years. 2018's games are younger, not worse. An honest story says so next to the claim.

6. The price-band table shows that 10.4% of games costing 30 or more are hits, against 0.4% of games under 5. A friend concludes: 'Then we charge 30 and we will be a hit.' What is wrong?
  • Nothing: the data prove that a high price creates hits
  • The table shows who is a hit, not why: big studios charge more and also have marketing and large teams
  • The percentages are too small to mean anything
  • The query should have used the mean price, not the bands

Correlation is not cause. Expensive games are more often hits, but the games that charge 30 are mostly made by studios with budgets a team of three does not have. Write it as a limit, not as advice.

7. A school with Microsoft 365 accounts for every teacher, no technician to run servers and staff used to Excel asks you which tool to choose for its attendance reports. What do you answer?
  • Superset, because open source is always the better choice
  • Superset, because Power BI cannot draw bar charts
  • Power BI: it fits what they already have, and nobody there can look after a server
  • Neither: schools should not make reports

The tool follows the context. Superset needs a server and someone to maintain it, and it rewards people who write SQL. This school has Microsoft accounts and Excel habits. For a start-up with a PostgreSQL database and two developers, the answer would flip.

8. You are annotating your dashboard for the studio of three. Pick the two changes that turn it from a minimap into a quest marker.
  • Renaming the chart "Releases per year" to "Six times more games in four years"
  • Adding four more charts so that no detail is left out
  • Adding a text block at the bottom with the action, starting with a verb
  • Removing every number from the text so that it reads more easily

A takeaway title does the reading for the reader, and the action tells them where to go. More charts make a bigger minimap, not a marker. And an insight without its number is just an opinion.

That was the last quest. You started this course looking at four datasets that hid behind identical statistics, and you finish it able to extract data, clean it, draw it and say what it means, limits included. Go back to the quest log, Learning outcomes, and read the nine criteria again: this time, every one of them describes something you have already done.