Start Here

A curated path for Power BI users making the transition from the UI to writing M directly. Work through these in order — each one builds on the last.

What's Next

Once you're comfortable with the core path, explore these topics in any order.

Custom Functions

Define reusable functions, pass them as arguments, and compose them to eliminate repetition across queries.

Query Folding

M's most important performance concept — when the engine pushes work back to the data source, and how to keep your queries fold-able.

Lazy Evaluation

How M only computes values when they're actually needed, and what this means for side effects and performance.

Date, Time & Duration Types

The five temporal types in M, how to convert between them, and the pitfalls that trip up even experienced M developers.

Identifiers & Scoping

How M names are scoped inside let blocks, the @ self-reference operator, and why recursive functions need special syntax.

Common M Errors

The most frequent error messages beginners encounter — what causes them and how to fix them.

Practical Patterns

Ready-to-use recipes: date dimension tables, recursive list flattening, parameterized queries, and more.