Most demo datasets in Power BI are flat files. A few columns, a handful of rows, and maybe a chart or two. They prove the tool works, but they don’t prove the point: with the right modeling discipline you can transform a small dataset into an immersive, enterprise-level analytics experience.
This Pixar report takes a thin 100-row film list and engineers it into a complete semantic model. The front end feels like a streaming app, but it’s built on the same principles we use for financial reporting, supply chain optimization, and executive dashboards.
Seed dataset: ~100 Pixar films with title, release date, rating, runtime, and poster URL. Good for a gallery. Not good enough to answer:
Answering these requires enrichment, not just visualization.
Target architecture: hub-and-spoke with PixarFilmsDim
at the center.
Spokes
BoxOfficeDim
— budget, domestic, international, worldwide, ROIPublicResponseDim
— Rotten Tomatoes, IMDb, Metacritic, CinemaScore-style fieldsAcademyDim
— nominations and winsFilmCast
/ PeopleDim
— names, bios, roles, gender, departments, “known for”GenresDim
— standard genre mappingFilmPictures
/ CastPictures
— posters, logos, backdrops, headshotsFilmVideos
— trailers and clipsDate
— canonical calendar for release and year analysisEach spoke keys back cleanly to the film. One fact was expanded into a studio-grade model.
Key move: M functions that reach outward from each film id to pull related data—cast, crew, box office, public response, awards, images, videos—then normalize and clean.
Cast enrichment (excerpt):
let
Source = #"PixarFilmsDim (3)",
#"Invoked Custom Function" = Table.AddColumn(Source, "castCrewpull", each #"Credits function"([Id])),
#"Expanded castCrewpull" = Table.ExpandTableColumn(
#"Invoked Custom Function",
"castCrewpull",
{"PersonID","Name","CreditType","Job","Character","Department","KnownFor","Gender","ProfileImage","Birthday","PlaceOfBirth","Biography","Popularity"}
),
#"Replaced Value2" =
Table.ReplaceValue(#"Expanded castCrewpull",
null,
"https://cdn0.iconfinder.com/data/icons/web-ui-20/160/no_image-256.png",
Replacer.ReplaceValue,
{"ProfileImage"})
in
#"Replaced Value2"
Semantic clarity comes from a small set of focused DAX patterns.
Formatted cast display
MAX(FilmCast[Name]) & " (" & MAX(FilmCast[Character - Copy]) & ")"
VAR _gender = MAX(FilmCast[Gender])
VAR _knownfor = MAX(FilmCast[KnownFor])
VAR _pronoun =
SWITCH(TRUE(),
_gender = "Male", "His",
_gender = "Female", "Her",
"Their"
)
RETURN "Known for " & _pronoun & " " & _knownfor
Box Office ROIDIVIDE(
SUM(BoxOfficeDim[box_office_worldwide]) - SUM(BoxOfficeDim[budget]),
SUM(BoxOfficeDim[budget])
)
All business logic is centralized in a Model Measures table to keep maintenance tight and avoid duplication.
Mechanics map cleanly to business:
The Pixar skin is cosmetic. The method—hub-and-spoke modeling, function-driven enrichment, and semantic discipline—is general.
A dataset doesn’t have to be big to be valuable. With reverse engineering, enrichment, and disciplined modeling, a flat 100-row table became an interactive studio system.
This is what Power BI can do when you stop thinking in tables and start thinking in experiences. When data is structured like a story, people don’t just read it—they explore it.
-Markus