Mastering Enumerations in Power Query M: A Complete Guide
Power BI
May 15, 2024 6:09 AM

Mastering Enumerations in Power Query M: A Complete Guide

by HubSite 365 about BI Gorilla

Data AnalyticsPower BILearning Selection

Understand Enumerations in Power Query M: Enhance readability, reduce errors, and add flexibility to your code efficiently.

Key insights


  • Enumerations offer a set of predefined options in Power Query M, making coding clearer and reducing errors.
  • Using enumerations enhances code readability and maintainability by clearly defining intended behavior.
  • Power Query treats the names and index numbers of enumerations interchangeably, providing flexibility in their use.
  • Enumerations can specify how functions behave, like sorting orders and quote styles in CSV files.
  • Popular enumerations include Order.Ascending for sorting, QuoteStyle.Csv for CSV files, and Precision.Type for precision in calculations.

In Power Query M, enumerations are sets of named values that represent distinct options or states within the language. They provide a way to define specific choices that guide the behavior of functions or operations.

Using enumerations in your code improves the readability and maintainability of your queries by making it clear what the intended behavior is. Enumerations help reduce errors by ensuring that only valid options are used.

Power Query treats the names and index numbers of enumerations interchangeably, providing flexibility in how you use them. Examples include Order.Ascending for sorting, QuoteStyle.Csv for CSV files, and Day.Monday for date-related functions.

To use enumerations, you can access lists available in Power Query M documentation. These can be referenced in functions that accept them, enhancing code clarity and flexibility.

Some essential enumerations in the M language are Day.Type, GroupKind.Type, JoinKind.Type, MissingField.Type, Occurrence.Type, Order.Type, and RoundingMode.Type. These dictate how functions like sorting, grouping, and joining should behave.

Power Query M Enumerations

Enumerations are widely used in programming to specify predetermined choices for how functions should operate. In Power Query M, enumerations simplify the coding process by providing clear and concise options, such as sorting orders or date-related functions. By using enumerations, developers can write more readable and maintainable code, reducing potential errors caused by invalid inputs.

Power Query further enhances flexibility by allowing interchangeable use of enumeration names and index numbers. This feature means a function can be instructed either through descriptive names or numeric indices, making it versatile. Popular enumerations include Order.Ascending for sorting operations and Precision.Type for defining calculation precision. Overall, enumerations streamline coding in Power Query M, making functions easier to navigate and implement.




Key Points about Enumerations:

  • Predefined Choices: Clearly defined and easy to understand
  • Enhanced Readability: Improves maintainability of queries
  • Reduced Errors: Ensures only valid options are used
  • Flexibility: Names and index numbers can be used interchangeably

**Examples of Enumerations:**

  • Order.Ascending: For sorting in ascending order
  • QuoteStyle.Csv: For specifying quote style in CSV files
  • Day.Monday: For representing Monday in date-related functions

How to Use Enumerations:

1. **Access Enumeration Lists**: Check available enumerations in Power Query M documentation or online resources.


2. **Reference Enumerations in Functions**: Use enumeration values as function arguments. Example:


Table.Sort(myTable, {{"Column1", Order.Ascending}})


3. **Explore Enumeration Details**: Understand their values and usage contexts.



In programming, enumerations are sets of named constants. Think of them as predefined choices guiding function behavior. For example, Order.Ascending spells out that items should be sorted from A to Z, reducing complexity in your code. You can also use index numbers for enumerations.


Consider a list of letters: {"a", "v", "r", "p", "o"}


Sorting it alphabetically using List.Sort with Order.Ascending results in:


List.Sort({ "a", "v", "r", "p", "o" }, Order.Ascending) = { "a", "o", "p", "r", "v" }


This enumeration can also be represented by index 0:


List.Sort({ "a", "v", "r", "p", "o" }, 0) = { "a", "o", "p", "r", "v" }


The flexibility to use names or numbers makes instructions for functions clear whether using descriptive names or numeric indices.

**Broader Application of Enumerations:**

Some enumerations are specific to functions but recognized universally. Consider Precision.Type, which determines the precision of calculations:

  • Value.Add(0.000004, 0.0003, Precision.Double) = 0.000304
  • Value.Add(0.000004, 0.0003, Precision.Decimal) = 0.000304

Using Precision.Double with List.Sort gives identical results to Order.Ascending due to its underlying index number being 0. This flexibility in Power Query means using a name or number that implies one behavior can be processed correctly in different contexts.

**Important Enumerations in M Language:**

  • Day.Type: Defines start day for date-related functions

  • GroupKind.Type: Specifies grouping method in Table.Group

  • JoinKind.Type: Specifies join type (inner, left-anti, full-outer etc.)

  • MissingField.Type: Handles missing values (return error, ignore, use null)

  • Occurrence.Type: Specifies value return type (first, last, all matches)

  • Order.Type: Determines sorting method

  • RoundingMode.Type: Instructs rounding method

For further reading and an overview of all enumerations, refer to

This blog post highlighted the various enumerations available to developers, illuminating how to set parameters for functions using names or index numbers. Power Query uses index numbers to interpret function instructions, even if the enumeration name isn't directly connected to that function.

General Overview About Power Query Enumerations

Enumerations in Power Query M provide a structured way to specify options and states, enhancing code clarity and reducing errors. They offer predefined choices, making code more understandable and maintainable. These enumerations can be used interchangeably with their index numbers, offering flexibility. Key applications include sorting, precision setting, and handling missing values, among others. This interchangeability ensures that functions in Power Query can be instructed accurately, improving overall efficiency and effectiveness in data manipulation and analysis tasks.


Power BI - Mastering Enumerations in Power Query M: A Complete Guide


People also ask

## Questions and Answers about Microsoft 365

"What is the m function in Power Query?"

Answer: In the Power Query M formula language, a function maps a set of input values to a single output value. You define a function by naming its parameters and then providing an expression that computes the result of the function.

"What is the difference between Power Query and Power Query M?"

Answer: Power Query, also referred to as M, is a data transformation and preparation language utilized across Microsoft products such as Power BI, Excel, and SQL Server. It enables you to connect to various data sources like databases, files, and web services, facilitating data cleansing, shaping, and modeling.

"What is the difference between DAX and M query?"

Answer: The key differences between DAX and M are: - Purpose: DAX is intended for data modeling and analysis, whereas M focuses on data transformation and cleaning. - Syntax: DAX expressions are written in a formula bar, while M queries are crafted in the Power Query Editor.

"How do you use M language in Power Query?"

Answer: To create an M query in the advanced editor, you generally follow this process: Start with the let statement to create a series of query formula steps. Each step is defined by a step variable name. You can include spaces in an M variable by using the # character, formatted as #"Step Name".



Enumerations Power Query M Power Query M tutorial Enumerations in Power Query M Power Query M examples Power Query M functions Learn Power Query M Power Query M coding Power Query M scripting