Analytics · Intermediate
Power BI and SQL Reporting
Build trustworthy business reports end to end: write the SQL reporting layer in PostgreSQL 16, then model, measure and design a Power BI report on it and validate every number against the source.
About this course
A report is only useful if people can trust its numbers. This course teaches reporting as two halves of one job. The **SQL half is fully hands-on**: you work in **PostgreSQL 16** against `meridian`, a synthetic sales-and-support star schema for a fictional outdoor-gear retailer, and write the queries and views that a dashboard reads — aggregations and grouping, window functions for running totals, period-over-period and cohorts, reporting views, and the query-performance techniques (indexes, materialized views) that keep a dashboard fast. Every query in these lessons was executed against PostgreSQL 16 and the output you see is the output that was observed. The **Power BI half is taught as concepts and a worked specification**. Power BI Desktop is a free Microsoft application, but it runs only on Windows and the terms for a paid hosted-classroom lab are still being confirmed, so this course does **not** claim to host a Power BI lab. Instead it teaches the ideas precisely — Get Data and Power Query/M, the data model and relationships, DAX measures and time intelligence, visual choice and honest report design, refresh, parameters, publishing and row-level security — with correct DAX, clearly labelled `[SCREENSHOT: ...]` placeholders, and a downloadable `.pbix` specification you build. If you want to follow along hands-on, install free Power BI Desktop on your own Windows machine and connect it to the same SQL source. The final project ties the halves together: you build the SQL reporting layer for a described business (validated views, executed against PostgreSQL) and a documented Power BI report specification (model, DAX measures, visuals), with a validation note that reconciles the report's headline numbers to the SQL source. You finish able to reason about where a number comes from and prove it.
- Content time
- 14 h 20 min
- Lessons
- 10
- Certificate
- Yes
- on completion
Lesson 1 is free. Enroll in a career path to access its full courses.
Lesson 1 is a free preview — read it without an account.

Outline
Lessons
Lesson 1: Reporting, and the reporting stackFree preview
What reporting is (and is not), the layers between a database and a dashboard, and how Power BI reaches a SQL source.
55 minLesson 2: SQL aggregations for dashboards
Turn a star schema into dashboard-ready numbers with GROUP BY, FILTER, HAVING and ROLLUP, and publish the base view every report reads.
1 h 30 minLesson 3: Window functions and time
Running totals, month-over-month and year-over-year change, and cohort reorder rates with SQL window functions — the calculations a trend report lives on.
1 h 35 minLesson 4: Reporting views and performance
Package report logic in views, pre-aggregate with a materialized view, and use EXPLAIN and indexes to keep a dashboard fast.
1 h 25 minLesson 5: Get Data and Power Query
Connect Power BI Desktop to the SQL source, choose Import or DirectQuery, and clean and shape data with Power Query and the M language.
1 h 30 minLesson 6: The data model and star schema
Build a Power BI model as a star of dimensions and facts, with correct relationships, cardinality and cross-filter direction — the same shape you queried in SQL.
1 h 25 minLesson 7: DAX fundamentals
Write DAX measures and calculated columns, understand filter and row context, modify context with CALCULATE, and add time intelligence — with correct DAX throughout.
1 h 50 minLesson 8: Visuals and report design
Choose the right visual for each question, make a report interactive and accessible, and avoid the chart choices that mislead.
1 h 25 minLesson 9: Refresh, parameters, and row-level security
Publish a report, keep it current with scheduled refresh and a gateway, parameterise the connection, and restrict rows per user with row-level security.
1 h 25 minLesson 10: Delivering a trustworthy report
Validate a report's numbers against the SQL source, keep it performant, and govern it so people can rely on it over time.
1 h 20 min
Where it leads