Misplaced Pages

Power Query

Article snapshot taken from[REDACTED] with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
ETL tool developed by Microsoft
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "Power Query" – news · newspapers · books · scholar · JSTOR (October 2022) (Learn how and when to remove this message)
This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources.
Find sources: "Power Query" – news · newspapers · books · scholar · JSTOR (October 2022) (Learn how and when to remove this message)
(Learn how and when to remove this message)
The Power Query user interface, as shown in the Power Query Online experience.

Power Query is an ETL tool created by Microsoft for data extraction, loading and transformation, and is used to retrieve data from sources, process it, and load them into one or more target systems. Power Query is available in several variations within the Microsoft Power Platform, and is used for business intelligence on fully or partially self-service platforms. It is found in software such as Excel, Power BI, Analysis Services, Dataverse, Power Apps, Azure Data Factory, SSIS, Dynamics 365, and in cloud services such as Microsoft Dataflows, including Power BI Dataflow used with the online Power BI Service or the somewhat more generic version of Microsoft Dataflow used with Power Automate.

ETL is closely related to data modeling, and for transformation, Power Query can be used to develop a logical data model in those cases where the data does not already have one, or where there is a need to further develop the data model.

History

Power Query was first announced in 2011 under the codename "Data Explorer" as part of Azure SQL Labs. In 2013, in order to expand on the self-service business intelligence capabilities of Microsoft Excel, the project was redesigned to be packaged as an add-in Excel and was renamed "Data Explorer Preview for Excel", and was made available for Excel 2010 and Excel 2013. In July 2013 the add-in was removed from preview and renamed to "Power Query". Monthly updates for the add-in were released until 2016, when Power Query was included in Excel natively. In Excel 2016, the function was renamed "Get & Transform" for a short time, but has since been changed back to Power Query.

In April 2017, Power Query was made available in Microsoft Analysis Services. With the launch of the Common Data Service in March 2018, Power Query was included as its main data import tool.

M Formula language

Power Query is built on what was then a new query language called M. It is a mashup language (hence the letter M) designed to create queries that mix together data. It is similar to the F Sharp programming language, and according to Microsoft it is a "mostly pure, higher-order, dynamically typed, partially lazy, functional language." The M language is case-sensitive.

Much of the user interaction with Power Query can be done via graphical user interfaces with wizards, and this can be used for many common or basic tasks. It is also possible to use the advanced editing mode where the developer can write in the M formula language; this gives greater expressive power, more possibilities, and can also be used to change the code generated by the graphical wizards.

Let expression

User queries are typically written with a top level let expression. The let expression contains a list of comma-separated named reference (variables) bindings and an in expression which is what the let expression evaluates to. The in expression can reference the variables and the variables can reference each other. Backwards and forward referencing is allowed, and self-referencing is allowed by prefixing the @ on the variable. Variables are recursively evaluated as needed to evaluate the in expression. No variable is evaluated more than once.

Examples

let
    a = "Hello",
    b = "World",
    result = a & " " & b
in
    result
let
    result = Fib(5),
    Fib = (iteration) =>
      if iteration = 0 or iteration = 1 then 
         1
      else
         let
            a = @Fib(iteration - 1),
            b = @Fib(iteration - 2)
         in
            a + b
in
    result

Assertions and Datatypes

Variables are not typed in Power Query. Instead, an expression can have a type assertion which will evaluate to an error when the expression does not evaluate to a value compatible with the assertion. Assertions can be preceded by nullable to include null in the allowed values.

Datatypes/Assertions
Name Description Datatype Assertion
number Assertion for integer and floating-point numbers No Yes
int Signed 32-bit integer Yes No
long Signed 64-bit integer Yes No
double IEEE 754 float Yes No
decimal 128-bit float. Same as C#'s decimal Yes No
time Time of day Yes Yes
date A calendar date ranging from 1 CE to 9999 CE in the Georgian Calendar Yes Yes
datetime A composite of the date and time datatypes Yes Yes
duration A measurement of elapsed time (can be negative) Yes Yes
logical Represents a Boolean true or false value Yes Yes
text A Unicode string Yes Yes
guid A Globally Unique Identifier (Converts to a text as needed automatically) Yes No
list An ordered list of values Yes Yes
record An ordered map from text to any value Yes Yes
table A 2D matrix where each column has a unique name and type (type not checked on table contents) Yes Yes
function A power query function Yes Yes
type Represents a datatype and may contain assertion information Yes Yes
action An internally used datatype Yes Yes
null The null singleton Yes Yes
any Represents all values No Yes
anynonnull Represents all values except null No Yes
none Represents no values and always fails as an assertion No Yes
error A pseudo value representing an error No No

Comments

Power Query supports the C block (/* ... */) and C line (// ...) comments.

DirectQuery

In Power BI, use of M-code is somewhat limited in DirectQuery, as opposed to Import which has all capabilities. This is due to the requirement that M-code in DirectQuery has to be translated from DAX into SQL and then into the data source's native query language (if it isn't SQL) upon user interaction with the data.

Query Folding

Query Folding is the ability for the Power Query steps to be transpiled into a single query at the data source (for example in Transact SQL). As such, Query Folding works like a traditional ETL process, and enables working on the data before loading. Query Folding is not always supported. Steps like filtering, selecting columns and simple SQL arithmetic are supported. Steps like creating index and appending or merging non foldable sources with foldable sources are not. Folding indicators (such as folding, not folding, might fold, opaque, unknown) might indicate up to which step a query might fold. Non-folding queries will have to be performed on the client-side. The order of queries can determine how many of the steps which get folded.

Connectors

A connector in power query is a library which enables queries to connect to a datasource. End users of Power BI can write custom connectors in the Power Query language. If a user is the owner/maintainer of the datasource technology they can request Microsoft certify their connector and include it in future releases of Power Bi after the review of the code. Connectors that are not certified can still be shared with other people who enable developer mode in Power Bi, or by Power Bi online domain administrators.

See also

References

  1. DougKlopfenstein. "Power Query documentation - Power Query". Retrieved 2022-10-27.
  2. ptyx507x. "What is Power Query? - Power Query". Retrieved 2022-10-27.{{cite web}}: CS1 maint: numeric names: authors list (link)
  3. Dearmer, Abe. "Why ETL Data Modeling is Critical in 2021". Retrieved 2022-10-27.
  4. Raviv, Gil (2019). Collect, combine, and transform data using Power Query in Excel and Power BI. United States: published with the authorization of Microsoft Corporation by Pearson Education, Inc. ISBN 978-1-5093-0795-1. OCLC 1006311144.
  5. Webb, Chris (2013-02-27). "Public Preview of Data Explorer". Chris Webb's BI Blog. Retrieved 2025-01-27.
  6. kexugit (2013-07-06). "'Data Explorer' is now Microsoft Power Query for Excel". learn.microsoft.com. Retrieved 2024-05-15.
  7. Jackson, Joab (2013-07-08). "Microsoft adds business intelligence tools to Office 365". PCWorld. Retrieved 2025-01-27.
  8. "Integrating Power Query technology in Excel 2016". Microsoft 365 Blog. 2015-09-10. Retrieved 2024-05-17.
Category:
Power Query Add topic