Repository navigation
First public release of PBIP Inspector 🎉
A single HTML file you drop a Power BI Project folder into. It parses everything right there in the browser and shows you what's inside — no upload, no backend, no install.
What you can do with it
- Overview — model size, table kinds, sources at a glance
- Sources — grouped by host (Snowflake, SQL Server, Dataverse, SharePoint, Excel, Web, inline…) with the M behind each
- Tables — master-detail browser, grouped by source, with columns, measures, hierarchies, partition M, extracted SQL, annotations
- Measures — searchable list of every DAX measure
- Relationships — force-directed graph; drag, zoom, hover-highlight
- Pages — every report page with its visuals; type a field or measure name to find every visual that uses it
- Unused — columns and measures with no references anywhere in the model, plus a "structural-only" toggle for items kept alive solely by relationships or sortBy
- Notes — a self-documenting reference tab that describes exactly what the parser handles
A few things it gets right that simpler tools miss
- Scalar M queries — a table whose M returns a single value (e.g.
PrevQuarter = PrevRow{0}[periodname]) referenced elsewhere aseach [Period] = PreviousQuarteris correctly recognized as used. No false unused flags on lookup-by-value tables. - Comment + string awareness — table names sitting inside
// commentsor"string literals"don't false-trigger reference detection. - All three DAX forms — single-line, triple-backtick fenced, and indented multi-line measures all parsed.
- Compressed inline data —
Binary.Decompress(...) |> Json.Document(...)style is decoded and shown as a real table preview. - Tables grouped by source in the sidebar — much easier to navigate than a flat alphabetical list when you have 50+ tables.
Try it
👉 sharathpyata.github.io/pbip-inspector — pick your PBIP folder and start clicking. Your files never leave your machine.
Not in this release (yet)
- The newer PBIR per-file report format (each visual in its own JSON) — only the legacy single
report.jsonis parsed today - The lite version (vanilla-SVG relationships graph, no D3 dependency) — still being brought to parity with the full version
Feedback
Hit a PBIP that broke the parser, or saw a field falsely flagged as unused? Open an issue with the snippet of M or TMDL that confused it — happy to fix.