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.
Define reusable functions, pass them as arguments, and compose them to eliminate repetition across queries.
M's most important performance concept — when the engine pushes work back to the data source, and how to keep your queries fold-able.
How M only computes values when they're actually needed, and what this means for side effects and performance.
The five temporal types in M, how to convert between them, and the pitfalls that trip up even experienced M developers.
How M names are scoped inside let blocks, the @ self-reference operator, and why recursive functions need special syntax.
The most frequent error messages beginners encounter — what causes them and how to fix them.
Ready-to-use recipes: date dimension tables, recursive list flattening, parameterized queries, and more.