Power Query M Reference
Power Query M Reference
The Power Query M formula language is optimized for building highly flexible data mashup queries. It's a
functional, case sensitive language similar to F#.
The Power Query M formula language includes the following function categories.
In this section
Accessing data functions
Binary functions
Combiner functions
Comparer functions
Date functions
DateTime functions
DateTimeZone functions
Duration functions
Error handling
Expression functions
Function values
List functions
Lines functions
Logical functions
Number functions
Record functions
Replacer functions
Splitter functions
Table functions
Text functions
Time functions
Type functions
Uri functions
Value functions
Understanding Power Query M functions
11/5/2018 • 2 minutes to read
In the Power Query M formula language, a function is a mapping from a set of input values to a single output
value. A function is written by first naming the function parameters, and then providing an expression to compute
the result of the function. The body of the function follows the goes-to (=>) symbol. Optionally, type information
can be included on parameters and the function return value. A function is defined and invoked in the body of a let
statement. Parameters and/or return value can be implicit or explicit. Implicit parameters and/or return value are of
type any. Type any is similar to an object type in other languages. All types in M derive from type any.
A function is a value just like a number or a text value, and can be included in-line just like any other expression.
The following example shows a function which is the value of an Add variable which is then invoked, or executed,
from several other variables. When a function is invoked, a set of values are specified which are logically
substituted for the required set of input values within the function body expression.
Example – Explicit parameters and return value
let
AddOne = (x as number) as number => x + 1,
//additional expression steps
CalcAddOne = AddOne(5)
in
CalcAddOne
let
Add = (x, y) => x + y,
AddResults =
[
OnePlusOne = Add(1, 1), // equals 2
OnePlusTwo = Add(1, 2) // equals 3
]
in
AddResults
let
FirstGreaterThan5 = (list) =>
let
GreaterThan5 = List.Select(list, (n) => n> 5),
First = List.First(GreaterThan5)
in
First,
Results =
[
Found = FirstGreaterThan5({3,7,9}), // equals 7
NotFound = FirstGreaterThan5({1,3,4}) // equals null
]
in
Results
Functions can be used recursively. In order to recursively reference the function, prefix the identifier with @.
let
fact = (num) => if num = 0 then 1 else num * @fact (num-1)
in
fact(5) // equals 120
Each keyword
The each keyword is used to easily create simple functions. “each ...” is syntactic sugar for a function signature that
takes the parameter “(\) => ...”
Each is useful when combined with the lookup operator, which is applied by default to For example, each
[CustomerID ] is the same as each \[CustomerID ], which is the same as (_) => _[CustomerID ]
Example – Using each in table row filter
Table.SelectRows(
Table.FromRecords({
[CustomerID = 1, Name = "Bob", Phone = "123-4567"],
[CustomerID = 2, Name = "Jim", Phone = "987-6543"] ,
[CustomerID = 3, Name = "Paul", Phone = "543-7890"] ,
[CustomerID = 4, Name = "Ringo", Phone = "232-1550"]
}),
each [CustomerID] = 2
)[Name]
// equals "Jim"
Accessing data functions
2/12/2019 • 7 minutes to read
Accessing data
Functions in this section access data and return table values. Most of these functions return a table value that is
called a navigation table. A navigation table is a two column table. The first column contains the name of an
item and the corresponding second column contains the value of that item. This shape is primarily used by the
Power Query user interface to provide navigation experience over the potentially large hierarchical data returned.
FUNCTION DESCRIPTION
AzureStorage.DataLakeContents Returns the content of the file at the URL from an Azure Data
Lake Storage filesystem.
Cube.AddMeasureColumn Adds a column with the name column to the cube that
contains the results of the measure measureSelector applied in
the row context of each row.
Cube.ReplaceDimensions
DB2.Database Returns a table with data relating to the tables in the specified
DB2 Database.
Folder.Files Returns a table containing a row for each file found at a folder
path, and subfolders. Each row contains properties of the
folder or file and a link to its content.
Hdfs.Contents Returns a table containing a row for each folder and file found
at the folder url, {0}, from a Hadoop file system. Each row
contains properties of the folder or file and a link to its
content.
Hdfs.Files Returns a table containing a row for each file found at the
folder url, {0}, and subfolders from a Hadoop file system. Each
row contains properties of the file and a link to its content.
HdInsight.Files Returns a table containing a row for each folder and file found
at the container URL, and subfolders from an HDInsight
account. Each row contains properties of the file/folder and a
link to its content.
MySQL.Database Returns a table with data relating to the tables in the specified
MySQL Database.
Odbc.DataSource Returns a table of SQL tables and views from the ODBC data
source specified by the connection string connectionString .
OleDb.DataSource Returns a table of SQL tables and views from the OLE DB data
source specified by the connection string.
Oracle.Database Returns a table with data relating to the tables in the specified
Oracle Database.
PostgreSQL.Database Returns a table with data relating to the tables in the specified
PostgreSQL Database.
Salesforce.Data Connects to the Salesforce Objects API and returns the set of
available objects (i.e. Accounts).
Salesforce.Reports Connects to the Salesforce Reports API and returns the set of
available reports.
SapHanaRangeOperator.GreaterThan 'Greater than' range operator for SAP HANA input parameters.
SapHanaRangeOperator.GreaterThanOrEquals 'Greater than or equals' range operator for SAP HANA input
parameters.
SapHanaRangeOperator.LessThan 'Less than' range operator for SAP HANA input parameters.
SapHanaRangeOperator.LessThanOrEquals 'Less than or equals' range operator for SAP HANA input
parameters.
SapHanaRangeOperator.NotEquals 'Not equals' range operator for SAP HANA input parameters.
Soda.Feed Returns the resulting table of a CSV file that can be accessed
using the SODA 2.0 API. The URL must point to a valid SODA-
compliant source that ends in a .csv extension.
Sybase.Database Returns a table with data relating to the tables in the specified
Sybase Database.
Teradata.Database Returns a table with data relating to the tables in the specified
Teradata Database.
WebAction.Request Creates an action that, when executed, will return the results
of performing a method request against url using HTTP as a
binary value.
Web.BrowserContents Returns the HTML for the specified url, as viewed by a web
browser.
Syntax
Access.Database(database as binary, optional options as nullable record) as table
About
Returns a structural representation of an Access database, database . An optional record parameter, options , may
be specified to control the following options:
CreateNavigationProperties : A logical (true/false) that sets whether to generate navigation properties on the
returned values (default is false).
NavigationPropertyNameGenerator : A function that is used for the creation of names for navigation properties.
The record parameter is specified as [option1 = value1, option2 = value2...], for example.
ActiveDirectory.Domains
11/19/2018 • 2 minutes to read
Syntax
ActiveDirectory.Domains(optional forestRootDomainName as nullable text) as table
About
Returns a list of Active Directory domains in the same forest as the specified domain or of the current machine's
domain if none is specified.
AdobeAnalytics.Cubes
11/5/2018 • 2 minutes to read
Syntax
AdobeAnalytics.Cubes(optional options as nullable record) as table
About
Returns a table of multidimensional packages from Adobe Analyics. An optional record parameter, options , may
be specified to control the following options:
HierarchicalNavigation : A logical (true/false) that sets whether to view the tables grouped by their schema
names (default is false).
MaxRetryCount : The number of retries to perform when polling for the result of the query. The default value is
120.
RetryInterval : The duration of time between retry attempts. The default value is 1 second.
AdoDotNet.DataSource
12/12/2018 • 2 minutes to read
Syntax
AdoDotNet.DataSource(providerName as text, connectionString as any, optional options as nullable
record) as table
About
Returns the schema collection for the ADO.NET data source with provider name providerName and connection
string connectionString . connectionString can be text or a record of property value pairs. Property values can
either be text or number. An optional record parameter, options , may be provided to specify additional properties.
The record can contain the following fields:
CommandTimeout : A duration which controls how long the server-side query is allowed to run before it is
canceled. The default value is ten minutes.
SqlCompatibleWindowsAuth : A logical (true/false) that determines whether to produce SQL Server -compatible
connection string options for Windows authentication. The default value is true.
AdoDotNet.Query
11/5/2018 • 2 minutes to read
Syntax
AdoDotNet.Query(providerName as text, connectionString as any, query as text, optional options as
nullable record) as table
About
Returns the result of running query with the connection string connectionString using the ADO.NET provider
providerName . connectionString can be text or a record of property value pairs. Property values can either be text
or number. An optional record parameter, options , may be provided to specify additional properties. The record
can contain the following fields:
CommandTimeout : A duration which controls how long the server-side query is allowed to run before it is
canceled. The default value is ten minutes.
SqlCompatibleWindowsAuth : A logical (true/false) that determines whether to produce SQL Server -compatible
connection string options for Windows authentication. The default value is true.
AnalysisServices.Database
12/12/2018 • 2 minutes to read
Syntax
AnalysisServices.Database(server as text, database as text, optional options as nullable record)
as table
About
Returns a table of multidimensional cubes or tabular models from the Analysis Services database database on
server server . An optional record parameter, options , may be specified to control the following options:
Query : A native MDX query used to retrieve data.
TypedMeasureColumns : A logical value indicating if the types specified in the multidimensional or tabular model
will be used for the types of the added measure columns. When set to false, the type "number" will be used for
all measure columns. The default value for this option is false.
Culture : A culture name specifying the culture for the data. This corresponds to the 'Locale Identifier'
connection string property.
CommandTimeout : A duration which controls how long the server -side query is allowed to run before it is
canceled. The default value is driver-dependent.
ConnectionTimeout : A duration which controls how long to wait before abandoning an attempt to make a
connection to the server. The default value is driver-dependent.
SubQueries : A number (0, 1 or 2 ) that sets the value of the "SubQueries" property in the connection string.
This controls the behavior of calculated members on subselects or subcubes. (The default value is 2).
Implementation
AnalysisServices.Databases
12/12/2018 • 2 minutes to read
Syntax
AnalysisServices.Databases(server as text, optional options as nullable record) as table
About
Returns databases on an Analysis Services instance, server . An optional record parameter, options , may be
provided to specify additional properties. The record can contain the following fields:
TypedMeasureColumns : A logical value indicating if the types specified in the multidimensional or tabular model
will be used for the types of the added measure columns. When set to false, the type "number" will be used for
all measure columns. The default value for this option is false.
Culture : A culture name specifying the culture for the data. This corresponds to the 'Locale Identifier'
connection string property.
CommandTimeout : A duration which controls how long the server -side query is allowed to run before it is
canceled. The default value is driver-dependent.
ConnectionTimeout : A duration which controls how long to wait before abandoning an attempt to make a
connection to the server. The default value is driver-dependent.
SubQueries : A number (0, 1 or 2 ) that sets the value of the "SubQueries" property in the connection string.
This controls the behavior of calculated members on subselects or subcubes. (The default value is 2).
Implementation
AzureStorage.BlobContents
11/5/2018 • 2 minutes to read
Syntax
AzureStorage.BlobContents(url as text, optional options as nullable record) as binary
About
Returns the content of the blob at the URL, url , from an Azure storage vault.
AzureStorage.Blobs
11/5/2018 • 2 minutes to read
Syntax
AzureStorage.Blobs(account as text, optional options as nullable record) as table
About
Returns a navigational table containing a row for each container found at the account URL, account , from an
Azure storage vault. Each row contains a link to the container blobs.
AzureStorage.Tables
12/12/2018 • 2 minutes to read
Syntax
AzureStorage.Tables(account as text) as table
About
Returns a navigational table containing a row for each table found at the account URL, account , from an Azure
storage vault. Each row contains a link to the azure table.
Csv.Document
11/5/2018 • 2 minutes to read
Syntax
Csv.Document(source as any, optional columns as any, optional delimiter as any, optional
extraValues as nullable number, optional encoding as nullable number) as table
About
Returns the contents of the CSV document as a table.
columns can be null, the number of columns, a list of column names, a table type, or an options record. (See
below for more details on the options record.)
delimiter can be a single character, or a list of characters. Default: "," .
Please refer to ExtraValues.Type for the supported values of extraValues .
encoding specifies the text encoding type.
If a record is specified for columns (and delimiter , extraValues , and encoding are null), the following record
fields may be provided:
Delimiter : The column delimiter. Default: "," .
Columns : Can be null, the number of columns, a list of column names, or a table type. If the number of columns
is lower than the number found in the input, the additional columns will be ignored. If the number of columns is
higher than the number found in the input, the additional columns will be null. When not specified, the number
of columns will be determined by what is found in the input.
Encoding : The text encoding of the file. Default: 65001 ( UTF -8 ).
CsvStyle : Specifies how quotes are handled. CsvStyle.QuoteAfterDelimiter (default): Quotes in a field are only
significant immediately following the delimiter. CsvStyle.QuoteAlways : Quotes in a field are always significant,
regardless of where they appear.
QuoteStyle : Specifies how quoted line breaks are handled. QuoteStyle.None (default): All line breaks are treated
as the end of the current row, even when they occur inside a quoted value. QuoteStyle.Csv : Quoted line breaks
are treated as part of the data, not as the end of the current row.
Example 1
Process CSV text with column headers.
ORDERID ITEM
1 Fishing rod
2 1 lb. worms
CsvStyle.QuoteAfterDelimiter
11/5/2018 • 2 minutes to read
Syntax
CsvStyle.QuoteAfterDelimiter
About
Quotes in a field are only significant immediately following the delimiter.
CsvStyle.QuoteAlways
11/5/2018 • 2 minutes to read
Syntax
CsvStyle.QuoteAlways
About
Quotes in a field are always significant regardless of where they appear.
Cube.AddAndExpandDimensionColumn
11/5/2018 • 2 minutes to read
Syntax
Cube.AddAndExpandDimensionColumn(**cube** as table, **dimensionSelector** as any,
**attributeNames** as list, optional **newColumnNames** as any) as table
About
Merges the specified dimension table, dimensionSelector , into the cube’s, cube , filter context and changes the
dimensional granularity by expanding the specified set, attributeNames , of dimension attributes. The dimension
attributes are added to the tabular view with columns named newColumnNames , or attributeNames if not specified.
Cube.AddMeasureColumn
11/5/2018 • 2 minutes to read
Syntax
Cube.AddMeasureColumn(**cube** as table, **column** as text, **measureSelector** as any) as table
About
Adds a column with the name column to the cube that contains the results of the measure measureSelector
applied in the row context of each row. Measure application is affected by changes to dimension granularity and
slicing. Measure values will be adjusted after certain cube operations are performed.
Cube.ApplyParameter
11/5/2018 • 2 minutes to read
Syntax
Cube.ApplyParameter(cube as table, parameter as any, optional arguments as nullable list) as table
About
Returns a cube after applying parameter with arguments to cube.
Cube.AttributeMemberId
11/5/2018 • 2 minutes to read
Syntax
Cube.AttributeMemberId(attribute as any) as any
About
Returns the unique member identifier from a member property value. attribute . Returns null for any other
values.
Cube.AttributeMemberProperty
11/5/2018 • 2 minutes to read
Syntax
Cube.AttributeMemberProperty(attribute as any, propertyName as text) as any
About
Returns the property propertyName of dimension attribute attribute .
Cube.CollapseAndRemoveColumns
11/5/2018 • 2 minutes to read
Syntax
Cube.CollapseAndRemoveColumns(**cube** as table, **columnNames** as list) as table
About
Changes the dimensional granularity of the filter context for the cube by collapsing the attributes mapped to the
specified columns columnNames . The columns are also removed from the tabular view of the cube.
Cube.Dimensions
11/5/2018 • 2 minutes to read
Syntax
Cube.Dimensions(**cube** as table) as table
About
Returns a table containing the set of available dimensions within the cube . Each dimension is a table containing a
set of dimension attributes and each dimension attribute is represented as a column in the dimension table.
Dimensions can be expanded in the cube using Cube.AddAndExpandDimensionColumn.
Cube.DisplayFolders
11/5/2018 • 2 minutes to read
Syntax
Cube.DisplayFolders(**cube** as table) as table
About
Returns a nested tree of tables representing the display folder hierarchy of the objects (e.g. dimensions and
measures) available for use in the cube .
Cube.Measures
11/5/2018 • 2 minutes to read
Syntax
Cube.Measures(**cube** as any) as table
About
Returns a table containing the set of available measures within the cube . Each measure is represented as a
function. Measures can be applied to the cube using Cube.AddMeasureColumn.
Cube.Parameters
11/5/2018 • 2 minutes to read
Syntax
Cube.Parameters(cube as table) as table
About
Returns a table containing the set of parameters that can be applied to cube. Each parameter is a function that can
be invoked to get cube with the parameter and its arguments applied.
Cube.Properties
11/5/2018 • 2 minutes to read
Syntax
Cube.Properties(cube as table) as table
About
Returns a table containing the set of available properties for dimensions that are expanded in the cube.
Cube.PropertyKey
11/5/2018 • 2 minutes to read
Syntax
Cube.PropertyKey(property as any) as any
About
Returns the key of property property .
Cube.ReplaceDimensions
11/5/2018 • 2 minutes to read
Syntax
Cube.ReplaceDimensions(**cube** as table, **dimensions** as table) as table
About
Cube.ReplaceDimensions
Cube.Transform
11/5/2018 • 2 minutes to read
Syntax
Cube.Transform(**cube** as table, **transforms** as list) as table
About
Applies the list cube functions, transforms , on the cube .
DB2.Database
1/16/2019 • 2 minutes to read
Syntax
DB2.Database(server as text, database as text, optional options as nullable record) as table
About
Returns a table of SQL tables and views available in a Db2 database on server server in the database instance
named database . The port may be optionally specified with the server, separated by a colon. An optional record
parameter, options , may be specified to control the following options:
CreateNavigationProperties : A logical (true/false) that sets whether to generate navigation properties on the
returned values (default is true).
NavigationPropertyNameGenerator : A function that is used for the creation of names for navigation properties.
Query : A native SQL query used to retrieve data. If the query produces multiple result sets, only the first will
be returned.
CommandTimeout : A duration which controls how long the server -side query is allowed to run before it is
canceled. The default value is ten minutes.
ConnectionTimeout : A duration which controls how long to wait before abandoning an attempt to make a
connection to the server. The default value is driver-dependent.
HierarchicalNavigation : A logical (true/false) that sets whether to view the tables grouped by their schema
names (default is false).
Implementation : Specifies the internal database provider implementation to use. Valid values are: "IBM" and
"Microsoft".
BinaryCodePage : A number for the CCSID ( Coded Character Set Identifier ) to decode Db2 FOR BIT binary data
into character strings. Applies to Implementation = "Microsoft". Set 0 to disable conversion (default). Set 1 to
convert based on database encoding. Set other CCSID number to convert to application encoding.
PackageCollection : Specifies a string value for package collection (default is "NULLID") to enable use of
shared packages required to process SQL statements. Applies to Implementation = "Microsoft".
The record parameter is specified as [option1 = value1, option2 = value2...] or [Query = "select ..."] for example.
Excel.CurrentWorkbook
11/5/2018 • 2 minutes to read
About
Returns the tables in the current Excel workbook
Syntax
Excel.CurrentWorkbook() as table
Excel.Workbook
11/5/2018 • 2 minutes to read
Syntax
Excel.Workbook(**workbook** as binary, optional **useHeaders** as nullable logical, optional
**delayTypes** as nullable logical) as table
About
Returns a table representing sheets in the given excel workbook.
Arguments
ARGUMENT DESCRIPTION
optional useHeaders Use the first row of the excel sheets as table headers.
Example
Excel.Workbook(File.Contents("localExcelFile.xlsx"))
let
Customers_Sheet = Source{[Item="Customers",Kind="Sheet"]}[Data]
in
Customers_Sheet
1 Bob 123-4567
2 Jim 987-6543
3 Paul 543-7890
4 Ringo 232-1550
Exchange.Contents
11/5/2018 • 2 minutes to read
About
Returns a table of contents from a Microsoft Exchange account.
Syntax
Exchange.Contents() as table
Facebook.Graph
11/5/2018 • 2 minutes to read
About
Returns a table containing content from the Facebook graph .
Syntax
Facebook.Graph(url as text) as any
Arguments
ARGUMENT DESCRIPTION
About
Returns the binary contents of the file located at a path.
Syntax
File.Contents(path as text) as binary
Arguments
ARGUMENT DESCRIPTION
Example
File.Contents("c:\users\myuser\Desktop\file.txt")
Folder.Contents
11/5/2018 • 2 minutes to read
About
Returns a table containing the properties and contents of the files and folders found at path.
Syntax
Folder.Contents(path as text) as table
Arguments
ARGUMENT DESCRIPTION
About
Returns a table containing a row for each file found at a folder path, and subfolders. Each row contains properties
of the folder or file and a link to its content.
Syntax
Folder.Files(path as text) as table
Arguments
ARGUMENT DESCRIPTION
Syntax
GoogleAnalytics.Accounts() as table
About
Returns Google Analytics accounts that are accessible from the current credential.
Hdfs.Contents
11/5/2018 • 2 minutes to read
About
Returns a table containing a row for each folder and file found at the folder url, {0}, from a Hadoop file system.
Each row contains properties of the folder or file and a link to its content.
Syntax
Hdfs.Contents(url as text) as table
Arguments
ARGUMENT DESCRIPTION
About
Returns a table containing a row for each folder and file found at the container URL, and subfolders from an
HDInsight account. Each row contains properties of the file/folder and a link to its content.
Syntax
HdInsight.Files(accountName as text, containerName as text) as table
Arguments
ARGUMENT DESCRIPTION
About
Returns a navigational table containing all containers found in the HDInsight account. Each row has the container
name and table containing its files.
Syntax
HdInsight.Containers(accountName as text) as table
Arguments
ARGUMENT DESCRIPTION
About
Returns a navigational table containing all containers found in the HDInsight account. Each row has the container
name and table containing its files.
Syntax
HdInsight.Contents(accountName as text) as table
Arguments
ARGUMENT DESCRIPTION
About
Returns a table containing a row for each file found at the folder url, {0}, and subfolders from a Hadoop file system.
Each row contains properties of the file and a link to its content.
Syntax
Hdfs.Files(url as text) as table
Arguments
ARGUMENT DESCRIPTION
About
Returns a table containing the results of running the specified CSS selectors against the provided html . An
optional record parameter, options , may be provided to specify additional properties. The record can contain the
following fields:
RowSelector
Syntax
Html.Table(html as any, columnNameSelectorPairs as list, optional options as nullable record) as
table
Example 1
Returns a table from a sample html text value.
NAME TITLE
Jo Manager
Example 2
Extracts all the hrefs from a sample html text value.
LINK
/test.html
Informix.Database
11/5/2018 • 2 minutes to read
Syntax
Informix.Database(**server** as text, **database** as text, optional **options** as nullable
record) as table
About
Returns a table of SQL tables and views available in an Informix database on server server in the database
instance named database . The port may be optionally specified with the server, separated by a colon. An optional
record parameter, options , may be specified to control the following options:
CreateNavigationProperties : A logical (true/false) that sets whether to generate navigation properties on the
returned values (default is true).
NavigationPropertyNameGenerator : A function that is used for the creation of names for navigation properties.
Query : A native SQL query used to retrieve data. If the query produces multiple result sets, only the first will
be returned.
CommandTimeout : A duration which controls how long the server -side query is allowed to run before it is
canceled. The default value is ten minutes.
ConnectionTimeout : A duration which controls how long to wait before abandoning an attempt to make a
connection to the server. The default value is driver-dependent.
HierarchicalNavigation : A logical (true/false) that sets whether to view the tables grouped by their schema
names (default is false).
The record parameter is specified as [option1 = value1, option2 = value2...] or [Query = "select ..."] for
example.
Json.Document
11/5/2018 • 2 minutes to read
About
Returns the contents of a JSON document. The contents may be directly passed to the function as text, or it may be
the binary value returned by a function like File.Contents.
Syntax
Json.Document(jsonText as any, optional encoding as nullable number) as any
Arguments
ARGUMENT DESCRIPTION
Example
Json.Document("{""glossary"": { ""title"": ""Example glossary"" } }")
equals [glossary = [title = "Example glossary"]]
MySQL.Database
11/5/2018 • 2 minutes to read
Syntax
MySQL.Database(**server** as text, **database** as text, optional **options** as nullable record)
as table
About
Returns a table of SQL tables, views, and stored scalar functions available in a MySQL database on server server
in the database instance named database . The port may be optionally specified with the server, separated by a
colon. An optional record parameter, options , may be specified to control the following options:
Encoding : A TextEncoding value that specifies the character set used to encode all queries sent to the server
(default is null).
CreateNavigationProperties : A logical (true/false) that sets whether to generate navigation properties on the
returned values (default is true).
NavigationPropertyNameGenerator : A function that is used for the creation of names for navigation properties.
Query : A native SQL query used to retrieve data. If the query produces multiple result sets, only the first will
be returned.
CommandTimeout : A duration which controls how long the server -side query is allowed to run before it is
canceled. The default value is ten minutes.
ConnectionTimeout : A duration which controls how long to wait before abandoning an attempt to make a
connection to the server. The default value is driver-dependent.
TreatTinyAsBoolean : A logical (true/false) that determines whether to force tinyint columns on the server as
logical values. The default value is true.
OldGuids : A logical (true/false) that sets whether char (36 ) columns (if false) or binary(16 ) columns (if true) will
be treated as GUIDs. The default value is false.
ReturnSingleDatabase : A logical (true/false) that sets whether to return all tables of all databases (if false) or to
return tables and views of the specified database (if true). The default value is false.
HierarchicalNavigation : A logical (true/false) that sets whether to view the tables grouped by their schema
names (default is false).
The record parameter is specified as [option1 = value1, option2 = value2...] or [Query = "select ..."] for
example.
OData.Feed
2/12/2019 • 2 minutes to read
Syntax
OData.Feed(serviceUri as text, optional headers as nullable record, optional options as any) as
any
About
Returns a table of OData feeds offered by an OData service from a uri serviceUri , headers headers . A boolean
value specifying whether to use concurrent connections or an optional record parameter, options , may be
specified to control the following options:
Query : Programmatically add query parameters to the URL without having to worry about escaping.
Headers : Specifying this value as a record will supply additional headers to an HTTP request.
ExcludedFromCacheKey : Specifying this value as a list will exclude these HTTP header keys from being part of the
calculation for caching data.
ApiKeyName : If the target site has a notion of an API key, this parameter can be used to specify the name (not
the value) of the key parameter that must be used in the URL. The actual key value is provided in the credential.
Timeout : Specifying this value as a duration will change the timeout for an HTTP request. The default value is
600 seconds.
EnableBatch : A logical (true/false) that sets whether to allow generation of an OData $batch request if the
MaxUriLength is exceeded (default is false).
MaxUriLength : A number that indicates the max length of an allowed uri sent to an OData service. If exceeded
and EnableBatch is true then the request will be made to an OData $batch endpoint, otherwise it will fail
(default is 2048).
Concurrent : A logical (true/false) when set to true, requests to the service will be made concurrently. When set
to false, requests will be made sequentially. When not specified, the value will be determined by the service’s
AsynchronousRequestsSupported annotation. If the service does not specify whether
AsynchronousRequestsSupported is supported, requests will be made sequentially.
ODataVersion : A number (3 or 4 ) that specifies the OData protocol version to use for this OData service. When
not specified, all supported versions will be requested. The service version will be determined by the OData-
Version header returned by the service.
FunctionOverloads : A logical (true/false) when set to true, function import overloads will be listed in the
navigator as separate entries, when set to false, function import overloads will be listed as one union function in
the navigator. Default value for V3: false. Default value for V4: true.
MoreColumns : A logical (true/false) when set to true, adds a "More Columns" column to each entity feed
containing open types and polymorphic types. This will contain the fields not declared in the base type. When
false, this field is not present. Defaults to false.
IncludeAnnotations : A comma separated list of namespace qualified term names or patterns to include with ""
as a wildcard. By default, none of the annotations are included.
IncludeMetadataAnnotations : A comma separated list of namespace qualified term names or patterns to include
on metadata document requests, with "" as a wildcard. By default, includes the same annotations as
IncludeAnnotations.
OmitValues : Allows the OData service to avoid writing out certain values in responses. If acknowledged, we
will infer those values from the omitted fields. Options include:
ODataOmitValues.Nulls : Allows the OData service to omit null values.
Implementation : Specifies the implementation of the OData connector to use. Valid values are "2.0" or null.
Odbc.DataSource
11/5/2018 • 2 minutes to read
Syntax
Odbc.DataSource(connectionString as any, optional options as nullable record) as table
About
Returns a table of SQL tables and views from the ODBC data source specified by the connection string
connectionString . connectionString can be text or a record of property value pairs. Property values can either be
text or number. An optional record parameter, options , may be provided to specify additional properties. The
record can contain the following fields:
CreateNavigationProperties : A logical (true/false) that sets whether to generate navigation properties on the
returned values (default is true).
HierarchicalNavigation : A logical (true/false) that sets whether to view the tables grouped by their
schema names (default is false).
ConnectionTimeout : A duration which controls how long to wait before abandoning an attempt to make
a connection to the server. The default value is 15 seconds.
CommandTimeout : A duration which controls how long the server -side query is allowed to run before it is
canceled. The default value is ten minutes.
SqlCompatibleWindowsAuth : A logical (true/false) that determines whether to produce SQL Server -
compatible connection string options for Windows authentication. The default value is true.
Odbc.Query
11/5/2018 • 2 minutes to read
Syntax
Odbc.Query(connectionString as any, query as text, optional options as nullable record) as table
About
Returns the result of running query with the connection string connectionString using ODBC. connectionString
can be text or a record of property value pairs. Property values can either be text or number. An optional record
parameter, options , may be provided to specify additional properties. The record can contain the following fields:
ConnectionTimeout : A duration which controls how long to wait before abandoning an attempt to make a
connection to the server. The default value is 15 seconds.
CommandTimeout : A duration which controls how long the server -side query is allowed to run before it is
canceled. The default value is ten minutes.
SqlCompatibleWindowsAuth : A logical (true/false) that determines whether to produce SQL Server -compatible
connection string options for Windows authentication. The default value is true.
OleDb.DataSource
11/5/2018 • 2 minutes to read
Syntax
OleDb.DataSource(connectionString as any, optional options as nullable record) as table
About
Returns a table of SQL tables and views from the OLE DB data source specified by the connection string
connectionString . connectionString can be text or a record of property value pairs. Property values can either be
text or number. An optional record parameter, options , may be provided to specify additional properties. The
record can contain the following fields:
CreateNavigationProperties : A logical (true/false) that sets whether to generate navigation properties on the
returned values (default is true).
NavigationPropertyNameGenerator : A function that is used for the creation of names for navigation properties.
Query : A native SQL query used to retrieve data. If the query produces multiple result sets, only the first will
be returned.
HierarchicalNavigation : A logical (true/false) that sets whether to view the tables grouped by their schema
names (default is true).
ConnectionTimeout : A duration which controls how long to wait before abandoning an attempt to make a
connection to the server. The default value is driver-dependent.
CommandTimeout : A duration which controls how long the server -side query is allowed to run before it is
canceled. The default value is ten minutes.
SqlCompatibleWindowsAuth : A logical (true/false) that determines whether to produce SQL Server -
compatible connection string options for Windows authentication. The default value is true.
The record parameter is specified as [option1 = value1, option2 = value2...] or [Query = "select ..."] for
example.
OleDb.Query
11/5/2018 • 2 minutes to read
Syntax
OleDb.Query(connectionString as any, query as text, optional options as nullable record) as table
About
Returns the result of running query with the connection string connectionString using OLE DB.
connectionString can be text or a record of property value pairs. Property values can either be text or number. An
optional record parameter, options , may be provided to specify additional properties. The record can contain the
following fields:
ConnectionTimeout : A duration which controls how long to wait before abandoning an attempt to make a
connection to the server. The default value is driver-dependent.
CommandTimeout : A duration which controls how long the server -side query is allowed to run before it is
canceled. The default value is ten minutes.
SqlCompatibleWindowsAuth : A logical (true/false) that determines whether to produce SQL Server -compatible
connection string options for Windows authentication. The default value is true.
Oracle.Database
11/5/2018 • 2 minutes to read
Syntax
Oracle.Database(**server** as text, optional **options** as nullable record) as table
About
Returns a table of SQL tables and views from the Oracle database on server server . The port may be optionally
specified with the server, separated by a colon. An optional record parameter, options , may be specified to control
the following options:
CreateNavigationProperties : A logical (true/false) that sets whether to generate navigation properties on the
returned values (default is true).
NavigationPropertyNameGenerator : A function that is used for the creation of names for navigation properties.
Query : A native SQL query used to retrieve data. If the query produces multiple result sets, only the first will
be returned.
CommandTimeout : A duration which controls how long the server -side query is allowed to run before it is
canceled. The default value is ten minutes.
ConnectionTimeout : A duration which controls how long to wait before abandoning an attempt to make a
connection to the server. The default value is driver-dependent.
HierarchicalNavigation : A logical (true/false) that sets whether to view the tables grouped by their schema
names (default is false).
The record parameter is specified as [option1 = value1, option2 = value2...] or [Query = "select ..."] for
example.
Pdf.Tables
2/12/2019 • 2 minutes to read
Syntax
Pdf.Tables(pdf as binary, optional options as nullable record) as table
About
Returns any tables found in pdf . An optional record parameter, options , may be provided to specify additional
properties. The record can contain the following fields:
StartPage : Specifies the first page in the range of pages to examine. Default: 1.
EndPage : Specifies the last page in the range of pages to examine. Default: the last page of the document.
MultiPageTables : Controls whether similar tables on consecutive pages will be automatically combined into a
single table. Default: true.
EnforceBorderLines : Controls whether border lines are always enforced as cell boundaries (when true), or
simply used as one hint among many for determining cell boundaries (when false). Default: false.
Example 1
Returns the tables contained in sample.pdf.
Pdf.Tables(File.Contents("c:\sample.pdf"))
Syntax
PostgreSQL.Database(**server** as text, **database** as text, optional **options** as nullable
record) as table
About
Returns a table of SQL tables and views available in a PostgreSQL database on server server in the database
instance named database . The port may be optionally specified with the server, separated by a colon. An optional
record parameter, options , may be specified to control the following options:
CreateNavigationProperties : A logical (true/false) that sets whether to generate navigation properties on the
returned values (default is true).
NavigationPropertyNameGenerator : A function that is used for the creation of names for navigation properties.
Query : A native SQL query used to retrieve data. If the query produces multiple result sets, only the first will
be returned.
CommandTimeout : A duration which controls how long the server -side query is allowed to run before it is
canceled. The default value is ten minutes.
ConnectionTimeout : A duration which controls how long to wait before abandoning an attempt to make a
connection to the server. The default value is driver-dependent.
HierarchicalNavigation : A logical (true/false) that sets whether to view the tables grouped by their schema
names (default is false).
The record parameter is specified as [option1 = value1, option2 = value2...] or [Query = "select ..."] for
example.
RData.FromBinary
11/5/2018 • 2 minutes to read
Syntax
RData.FromBinary(stream as binary) as any
About
Returns a record of data frames from the RData file.
Salesforce.Data
11/5/2018 • 2 minutes to read
Syntax
Salesforce.Data(optional **loginUrl** as any, optional **options** as nullable record) as table
About
Returns the objects on the Salesforce account provided in the credentials. The account will be connected through
the provided environment loginUrl . If no environment is provided then the account will connect to production
(https://login.salesforce.com). An optional record parameter, options , may be provided to specify additional
properties. The record can contain the following fields:
CreateNavigationProperties : A logical (true/false) that sets whether to generate navigation properties on the
returned values (default is false).
ApiVersion : The Salesforce API version to use for this query. When not specified, API version 29.0 is used.
Salesforce.Reports
11/5/2018 • 2 minutes to read
Syntax
Salesforce.Reports(optional **loginUrl** as nullable text, optional **options** as nullable
record) as table
About
Returns the reports on the Salesforce account provided in the credentials. The account will be connected through
the provided environment loginUrl . If no environment is provided then the account will connect to production
(https://login.salesforce.com). An optional record parameter, options , may be provided to specify additional
properties. The record can contain the following fields: ApiVersion : The Salesforce API version to use for this
query. When not specified, API version 29.0 is used.
SapBusinessObjects.Universes
11/5/2018 • 2 minutes to read
About
Connects to the SAP BusinessObjects BI Universe at the specified URL and returns the set of available universes.
Syntax
SapBusinessObjects.Universes(url as text) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
The function returns a top-level table of two rows. The row with Id = “Universes” contains a nested table of all of
the universes available at the URL. The row with Id = “DisplayFolders” contains a nested tree of tables
representing the display folder hierarchy of the available universes.
The table of universes provides a stable path to access a particular universe by its ID.
The nested tree of display folder tables provides a user-friendly way to organize and navigate to universes and is
not guaranteed to remain stable.
Examples
SapBusinessObjects.Universes("http://sap.example.com:6405/biprws")
SapBusinessWarehouse.Cubes
11/5/2018 • 2 minutes to read
Syntax
SapBusinessWarehouse.Cubes(**server** as text, **systemNumberOrSystemId** as text, **sclientId**s
as text, optional **soptionsOrLogonGroup**s as any, optional **soptions**s as nullable record) as
table
About
Returns a table of InfoCubes and queries grouped by InfoArea from an SAP Business Warehouse instance at
server server with system number systemNumberOrSystemId and Client ID clientId . An optional record
parameter, optionsOrLogonGroup , may be specified to control options.
SapHana.Database
11/5/2018 • 2 minutes to read
Syntax
SapHana.Database(**server** as text, optional **options** as nullable record) as table
About
Returns a table of multidimensional packages from the SAP HANA database server . An optional record
parameter, options , may be specified to control the following options:
Query : A native SQL query used to retrieve data. If the query produces multiple result sets, only the first will
be returned.
Distribution : A SapHanaDistribution that sets the value of the "Distribution" property in the connection
string. Statement routing is the method of evaluating the correct server node of a distributed system before
statement execution. The default value is SapHanaDistribution.All.
SapHanaDistribution.All
11/5/2018 • 2 minutes to read
About
'All' distribution option for SAP HANA.
SapHanaDistribution.Connection
11/5/2018 • 2 minutes to read
About
'Connection' distribution option for SAP HANA.
SapHanaDistribution.Off
11/5/2018 • 2 minutes to read
About
'Off' distribution option for SAP HANA.
SapHanaDistribution.Statement
11/5/2018 • 2 minutes to read
About
'DataStream flattening mode' option for MDX execution in SAP Business Warehouse.
SapHanaRangeOperator.Equals
11/5/2018 • 2 minutes to read
Syntax
SapHanaRangeOperator.Equals
About
'Equals' range operator for SAP HANA input parameters.
SapHanaRangeOperator.GreaterThan
11/5/2018 • 2 minutes to read
Syntax
SapHanaRangeOperator.GreaterThan
About
'Greater than' range operator for SAP HANA input parameters.
SapHanaRangeOperator.GreaterThanOrEquals
11/5/2018 • 2 minutes to read
Syntax
SapHanaRangeOperator.GreaterThanOrEquals
About
'GreaterThanOrEquals' range operator for SAP HANA input parameters.
SapHanaRangeOperator.LessThan
11/5/2018 • 2 minutes to read
Syntax
SapHanaRangeOperator.LessThan
About
'LessThan' range operator for SAP HANA input parameters.
SapHanaRangeOperator.LessThanOrEquals
11/5/2018 • 2 minutes to read
Syntax
SapHanaRangeOperator.LessThanOrEquals
About
'LessThanOrEquals' range operator for SAP HANA input parameters.
SapHanaRangeOperator.NotEquals
11/5/2018 • 2 minutes to read
Syntax
SapHanaRangeOperator.NotEquals
About
'NotEquals' range operator for SAP HANA input parameters.
SharePoint.Contents
11/5/2018 • 2 minutes to read
Syntax
SharePoint.Contents(**url** as text, optional **options **as nullable record) as table
About
Returns a table containing a row for each folder and document found at the specified SharePoint site, url . Each
row contains properties of the folder or file and a link to its content. options may be specified to control the
following options:
ApiVersion : A number (14 or 15) or the text "Auto" that specifies the SharePoint API version to use for this
site. When not specified, API version 14 is used. When Auto is specified, the server version will be automatically
discovered if possible, otherwise version defaults to 14. Non-English SharePoint sites require at least version
15.
SharePoint.Files
11/5/2018 • 2 minutes to read
Syntax
SharePoint.Files(**url** as text, optional **options** as nullable record) as table
About
Returns a table containing a row for each document found at the specified SharePoint site, url , and subfolders.
Each row contains properties of the folder or file and a link to its content. options may be specified to control the
following options:
ApiVersion : A number (14 or 15) or the text "Auto" that specifies the SharePoint API version to use for this
site. When not specified, API version 14 is used. When Auto is specified, the server version will be automatically
discovered if possible, otherwise version defaults to 14. Non-English SharePoint sites require at least version
15.
SharePoint.Tables
11/5/2018 • 2 minutes to read
Syntax
SharePoint.Tables(**url** as text, optional **options** as nullable record) as table
About
Returns a table containing a row for each List item found at the specified SharePoint list, url . Each row contains
properties of the List. options may be specified to control the following options:
ApiVersion : A number (14 or 15) or the text "Auto" that specifies the SharePoint API version to use for this
site. When not specified, API version 14 is used. When Auto is specified, the server version will be automatically
discovered if possible, otherwise version defaults to 14. Non-English SharePoint sites require at least version
15.
Soda.Feed
11/5/2018 • 2 minutes to read
About
Returns the resulting table of a CSV file that can be accessed using the SODA 2.0 API. The URL must point to a
valid SODA-compliant source that ends in a .csv extension.
Syntax
Soda.Feed(url as text) as table
Arguments
ARGUMENT DESCRIPTION
Syntax
Sql.Database(**server** as text, **database** as text, optional **options** as nullable record) as
table
About
Returns a table of SQL tables, views, and stored functions from the SQL Server database database on server
server . The port may be optionally specified with the server, separated by a colon or a comma. An optional record
parameter, options , may be specified to control the following options:
Query : A native SQL query used to retrieve data. If the query produces multiple result sets, only the first
will be returned.
CreateNavigationProperties : A logical (true/false) that sets whether to generate navigation properties on
the returned values default is true).
(
NavigationPropertyNameGenerator : A function that is used for the creation of names for navigation
properties.
MaxDegreeOfParallelism : A number that sets the value of the "maxdop" query clause in the generated SQL
query.
CommandTimeout : A duration which controls how long the server-side query is allowed to run before it is
canceled. The default value is ten minutes.
ConnectionTimeout : A duration which controls how long to wait before abandoning an attempt to make a
connection to the server. The default value is driver-dependent.
HierarchicalNavigation : A logical (true/false) that sets whether to view the tables grouped by their schema
names (default is false).
MultiSubnetFailover : A logical (true/false) that sets the value of the "MultiSubnetFailover" property in the
connection string (default is false).
UnsafeTypeConversions
The record parameter is specified as [option1 = value1, option2 = value2...] or [Query = "select ..."] for example.
Sql.Databases
11/5/2018 • 2 minutes to read
Syntax
Sql.Databases(**server** as text, optional **options** as nullable record) as table
About
Returns a table of databases on the specified SQL server, server . An optional record parameter, options , may be
specified to control the following options:
CreateNavigationProperties : A logical (true/false) that sets whether to generate navigation properties on
the returned values default is true).
(
NavigationPropertyNameGenerator : A function that is used for the creation of names for navigation
properties.
MaxDegreeOfParallelism : A number that sets the value of the "maxdop" query clause in the generated SQL
query.
CommandTimeout : A duration which controls how long the server-side query is allowed to run before it is
canceled. The default value is ten minutes.
ConnectionTimeout : A duration which controls how long to wait before abandoning an attempt to make a
connection to the server. The default value is driver-dependent.
HierarchicalNavigation : A logical (true/false) that sets whether to view the tables grouped by their schema
names (default is false).
MultiSubnetFailover : A logical (true/false) that sets the value of the "MultiSubnetFailover" property in the
connection string (default is false).
UnsafeTypeConversions
The record parameter is specified as [option1 = value1, option2 = value2...] for example.
Does not support setting a SQL query to run on the server. Sql.Database should be used instead to run a SQL
query.
Sybase.Database
11/5/2018 • 2 minutes to read
Syntax
Sybase.Database(**server** as text, **database** as text, optional **options** as nullable record)
as table
About
Returns a table of SQL tables and views available in a Sybase database on server server in the database instance
named database . The port may be optionally specified with the server, separated by a colon. An optional record
parameter, options , may be specified to control the following options:
CreateNavigationProperties : A logical (true/false) that sets whether to generate navigation properties on the
returned values (default is true).
NavigationPropertyNameGenerator : A function that is used for the creation of names for navigation properties.
Query : A native SQL query used to retrieve data. If the query produces multiple result sets, only the first will
be returned.
CommandTimeout : A duration which controls how long the server -side query is allowed to run before it is
canceled. The default value is ten minutes.
ConnectionTimeout : A duration which controls how long to wait before abandoning an attempt to make a
connection to the server. The default value is driver-dependent.
HierarchicalNavigation : A logical (true/false) that sets whether to view the tables grouped by their schema
names (default is false).
The record parameter is specified as [option1 = value1, option2 = value2...] or [Query = "select ..."] for
example.
Teradata.Database
11/5/2018 • 2 minutes to read
Syntax
Teradata.Database(**server** as text, optional **options** as nullable record) as table
About
Returns a table of SQL tables and views from the Teradata database on server server . The port may be optionally
specified with the server, separated by a colon. An optional record parameter, options , may be specified to control
the following options:
CreateNavigationProperties : A logical (true/false) that sets whether to generate navigation properties on
the returned values (default is true).
NavigationPropertyNameGenerator : A function that is used for the creation of names for navigation
properties.
Query : A native SQL query used to retrieve data. If the query produces multiple result sets, only the first
will be returned.
CommandTimeout : A duration which controls how long the server-side query is allowed to run before it is
canceled. The default value is ten minutes.
ConnectionTimeout : A duration which controls how long to wait before abandoning an attempt to make a
connection to the server. The default value is driver-dependent.
HierarchicalNavigation : A logical (true/false) that sets whether to view the tables grouped by their schema
names (default is false).
The record parameter is specified as [option1 = value1, option2 = value2...] or [Query = "select ..."] for example.
WebAction.Request
11/5/2018 • 2 minutes to read
Syntax
WebAction.Request(method as text, url as text, optional options as nullable record) as action
About
Creates an action that, when executed, will return the results of performing a method request against url using
HTTP as a binary value. An optional record parameter, options , may be provided to specify additional properties.
The record can contain the following fields:
Query : Programmatically add query parameters to the URL without having to worry about escaping.
ApiKeyName : If the target site has a notion of an API key, this parameter can be used to specify the name (not
the value) of the key parameter that must be used in the URL. The actual key value is provided in the credential.
Content : Specifying this value changes the web request from a GET to a POST, using the value of the Content
field as the content of the POST.
Headers : Specifying this value as a record will supply additional headers to an HTTP request.
Timeout : Specifying this value as a duration will change the timeout for an HTTP request. The default value is
100 seconds.
IsRetry : Specifying this logical value as true will ignore any existing response in the cache when fetching data.
ManualStatusHandling : Specifying this value as a list will prevent any builtin handling for HTTP requests whose
response has one of these status codes.
RelativePath : Specifying this value as text appends it to the base URL before making the request.
Web.BrowserContents
11/13/2018 • 2 minutes to read
About
Returns the HTML for the specified url , as viewed by a web browser. An optional record parameter, options ,
may be provided to specify additional properties. The record can contain the following fields:
WaitFor : Specifies a condition to wait for before downloading the HTML, in addition to waiting for the page to
load (which is always done). Can be a record containing Timeout and/or Selector fields. If only a Timeout is
specified, the function will wait the amount of time specified before downloading the HTML. If both a Selector
and Timeout are specified, and the Timeout elapses before the Selector exists on the page, an error will be
thrown. If a Selector is specified with no Timeout, a default Timeout of 30 seconds is applied.
Syntax
Web.BrowserContents(url as text, optional options as nullable record) as text
Example 1
Returns the HTML for https://microsoft.com.
Web.BrowserContents("https://microsoft.com")
Example 2
Returns the HTML for https://microsoft.com after waiting for a CSS selector to exist.
Example 3
Returns the HTML for https://microsoft.com after waiting ten seconds.
Example 4
Returns the HTML for https://microsoft.com after waiting up to ten seconds for a CSS selector to exist.
Web.BrowserContents("https://microsoft.com", [WaitFor = [Selector = "div.ready", Timeout =
#duration(0,0,0,10)]])
About
Returns the contents downloaded from a web url as a binary value.
Syntax
Web.Contents(url as text, optional options as nullable record) as binary
Arguments
ARGUMENT DESCRIPTION
options Field
FIELD DESCRIPTION
ApiKeyName Specify the name of the API key parameter for the target site.
The actual key is provided in the credentials dialog.
Content The content of the POST web request (specifying this values
changes the web request from a GET to a POST).
Timeout Specifying this value as a duration will change the timeout for
an HTTP request. The default value is 100 seconds.
ExcludedFromCacheKey Specifying this value as a list will exclude these HTTP header
keys from being part of the calculation for caching data.
IsRetry Specifying this logical value as true will ignore any existing
response in the cache when fetching data.
ManualStatusHandling Specifying this value as a list will prevent any builtin handling
for HTTP requests whose response has one of these status
codes.
RelativePath Specifying this value as text appends it to the base URL before
making the request.
Example
Web.Contents("www.microsoft.com") equals The binary contents from the URL www.microsoft.com when accessed via
HTTP
Web.Page
11/5/2018 • 2 minutes to read
About
Returns the contents of an HTML webpage as a table.
Syntax
Web.Page(html as text) as table
Arguments
ARGUMENT DESCRIPTION
About
Specifies the DELETE method for HTTP.
WebMethod.Get
11/5/2018 • 2 minutes to read
About
Specifies the GET method for HTTP.
WebMethod.Head
11/5/2018 • 2 minutes to read
About
Specifies the HEAD method for HTTP.
WebMethod.Patch
11/5/2018 • 2 minutes to read
About
Specifies the PATCH method for HTTP.
WebMethod.Post
11/5/2018 • 2 minutes to read
About
Specifies the POST method for HTTP.
WebMethod.Put
11/5/2018 • 2 minutes to read
About
Specifies the PUT method for HTTP.
Xml.Document
11/5/2018 • 2 minutes to read
About
Returns the contents of an XML document as a hierarchical table (list of records).
Syntax
Xml.Document(contents as any, optional options as nullable record, optional encoding as nullable
number) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
The output of the function has a tabular shape. Each row in the table corresponds to a node at the current level
of depth. Descending into the XML tree is done through accessing the “Value” property of a given row.
The precise shape of the output table is as follows:
Value.Type(Xml.Document("<a></a>")) =
type {[
Name = text,
Namespace = text,
Value = any,
Attributes = {[
Name = text,
Namespace = text,
Value = text
]}
]}
Example
Xml.Document("<a></a>")
equals { [
Name = "a",
Namespace = "",
Value = {},
Attributes = {}
] }
Xml.Tables
11/5/2018 • 2 minutes to read
About
Returns the contents of an XML document as a nested collection of flattened tables.
Syntax
Xml.Tables(contents as any, optional options as nullable record, optional encoding as nullable
number) as table
Arguments
ARGUMENT DESCRIPTION
options Settings
SETTING DESCRIPTION
Example
Xml.Tables("<books>
<book>
<name>Book1</name>
</book>
<book>
<name>Book2</name>
</book>
</books>")
equals
(Table.FromRecords({ [
Name = "book",
Table = (Table.FromRecords({ [
name = "Book1"
], [
name = "Book2"
)
Cube.PropertyKey
11/5/2018 • 2 minutes to read
Syntax
Cube.PropertyKey(property as any) as any
About
Returns the key of property property .
Binary functions
11/5/2018 • 3 minutes to read
Binary Formats
Reading numbers
FUNCTION DESCRIPTION
BinaryFormat.7BitEncodedSignedInteger A binary format that reads a 64-bit signed integer that was
encoded using a 7-bit variable-length encoding.
BinaryFormat.7BitEncodedUnsignedInteger A binary format that reads a 64-bit unsigned integer that was
encoded using a 7-bit variable-length encoding.
BinaryFormat.Choice Returns a binary format that chooses the next binary format
based on a value that has already been read.
BinaryFormat.Length Returns a binary format that limits the amount of data that
can be read. Both BinaryFormat.List and BinaryFormat.Binary
can be used to read until end of the data.
BinaryFormat.Length can be used to limit the number of bytes
that are read.
BinaryFormat.Null A binary format that reads zero bytes and returns null.
BinaryFormat.Record Returns a binary format that reads a record. Each field in the
record can have a different binary format.
BinaryFormat.Text Returns a binary format that reads a text value. The optional
encoding value specifies the encoding of the text.
BinaryFormat.Transform Returns a binary format that will transform the values read by
another binary format.
Binary
FUNCTION DESCRIPTION
Binary.Buffer Buffers the binary value in memory. The result of this call is a
stable binary value, which means it will have a deterministic
length and order of bytes.
BinaryOccurrence.Optional The item is expected to appear zero or one time in the input.
Occurrence.Optional The item is expected to appear zero or one time in the input.
Syntax
Binary.Buffer(binary as nullable binary) as nullable binary
About
Buffers the binary value in memory. The result of this call is a stable binary value, which means it will have a
deterministic length and order of bytes.
Example 1
Create a stable version of the binary value.
Binary.Buffer(Binary.FromList({0..10}))
#binary({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10})
Binary.Combine
12/12/2018 • 2 minutes to read
Syntax
Binary.Combine(binaries as list) as binary
About
Combines a list of binaries into a single binary.
Binary.Compress
12/12/2018 • 2 minutes to read
Syntax
Binary.Compress(binary as nullable binary, compressionType as number) as nullable binary
About
Compresses a binary value using the given compression type. The result of this call is a compressed copy of the
input. Compression types include:
Compression.GZip
Compression.Deflate
Example 1
Compress the binary value.
Syntax
Binary.Decompress(binary as nullable binary, compressionType as number) as nullable binary
About
Decompresses a binary value using the given compression type. The result of this call is a decompressed copy of
the input. Compression types include:
Compression.GZip
Compression.Deflate
Example 1
Decompress the binary value.
Binary.Decompress(#binary({115, 103, 200, 7, 194, 20, 134, 36, 134, 74, 134, 84, 6, 0}), Compression.Deflate)
Syntax
Binary.From(value as any, optional encoding as nullable number) as nullable binary
About
Returns a binary value from the given value . If the given value is null , Binary.From returns null . If the
given value is binary , value is returned. Values of the following types can be converted to a binary value:
text :A binary value from the text representation. See Binary.FromText for details.
If value is of any other type, an error is returned.
Example 1
Get the binary value of "1011" .
Binary.From("1011")
Binary.FromText("1011", BinaryEncoding.Base64)
Binary.FromList
12/12/2018 • 2 minutes to read
Syntax
Binary.FromList(list as list) as binary
About
Converts a list of numbers into a binary value.
Binary.FromText
12/12/2018 • 2 minutes to read
Syntax
Binary.FromText(text as nullable text, optional encoding as nullable number) as nullable binary
About
Returns the result of converting text value text to a binary (list of number ). encoding may be specified to indicate
the encoding used in the text value. The following BinaryEncoding values may be used for encoding .
BinaryEncoding.Base64 : Base 64 encoding
BinaryEncoding.Hex : Hex encoding
Example 1
Decode "1011" into binary.
Binary.FromText("1011")
Binary.FromText("1011", BinaryEncoding.Base64)
Example 2
Decode "1011" into binary with Hex encoding.
Binary.FromText("1011", BinaryEncoding.Hex)
Binary.FromText("EBE=", BinaryEncoding.Base64)
Binary.InferContentType
11/5/2018 • 2 minutes to read
Syntax
Binary.InferContentType(source as binary) as record
About
Returns a record with field Content.Type that contains the inferred MIME -type. If the inferred content type is text/*,
and an encoding code page is detected, then additionally returns field Content.Encoding that contains the encoding
of the stream. If the inferred content type is text/csv, and the format is delimited, additionally returns field
Csv.PotentialDelimiter containing a table for analysis of potential delimiters. If the inferred content type is text/csv,
and the format is fixed-width, additionally returns field Csv.PotentialPositions containing a list for analysis of
potential fixed width column positions.
Binary.Length
11/5/2018 • 2 minutes to read
About
Returns the length of binary values.
Syntax
Binary.Length(binary as binary) as number
Arguments
ARGUMENT DESCRIPTION
About
Converts a binary value into a list of numbers
Syntax
Binary.ToList(binary as binary) as list
Arguments
ARGUMENT DESCRIPTION
About
Encodes binary data into a text form.
Syntax
Binary.ToText(binary as binary, encoding as number) as text
Arguments
ARGUMENT DESCRIPTION
Binary encoding
BinaryEncoding.Base64 = 0;
BinaryEncoding.Hex = 1;
BinaryEncoding.Base64
11/5/2018 • 2 minutes to read
Syntax
BinaryEncoding.Base64
About
Constant to use as the encoding type when base-64 encoding is required.
BinaryEncoding.Hex
11/5/2018 • 2 minutes to read
Syntax
BinaryEncoding.Hex
About
Constant to use as the encoding type when hexadecimal encoding is required.
BinaryFormat.7BitEncodedSignedInteger
11/5/2018 • 2 minutes to read
About
A binary format that reads a 64-bit signed integer that was encoded using a 7-bit variable-length encoding.
Syntax
BinaryFormat.7BitEncodedSignedInteger(binary as binary) as any
Arguments
ARGUMENT DESCRIPTION
About
A binary format that reads a 64-bit unsigned integer that was encoded using a 7-bit variable-length encoding.
Syntax
BinaryFormat.7BitEncodedUnsignedInteger(binary as binary) as any
Arguments
ARGUMENT DESCRIPTION
About
Returns a binary format that reads a binary value.
Syntax
BinaryFormat.Binary(optional length as nullable number) as function
Arguments
ARGUMENT DESCRIPTION
Remarks
If a length is specified, the binary value will contain that many bytes.
If length is not specified, the binary value will contain the remaining bytes.
BinaryFormat.Byte
11/5/2018 • 2 minutes to read
About
A binary format that reads an 8-bit unsigned integer.
Syntax
BinaryFormat.Byte(binary as binary) as any
Arguments
ARGUMENT DESCRIPTION
About
Returns a binary format with the specified byte order.
Syntax
BinaryFormat.ByteOrder(binaryFormat as function, byteOrder as number) as function
Arguments
ARGUMENT DESCRIPTION
binaryFormat The binary format that will be used to read the value.
byteOrder The most signficant byte appears first in Big Endian byte order.
The least significant byte appears first in Little Endian byte
order.
ByteOrder.LittleEndian = 0
ByteOrder.BigEndian = 1
Example
let
binaryData = #binary({0x01, 0x00}),
littleEndianFormat = BinaryFormat.ByteOrder(
BinaryFormat.UnsignedInteger16, ByteOrder.LittleEndian)
in
littleEndianFormat(binaryData)
equals 1
BinaryFormat.Choice
11/5/2018 • 2 minutes to read
About
Returns a binary format that chooses the next binary format based on a value that has already been read.
Syntax
BinaryFormat.Choice(binaryFormat as function, choice as function, optional type as nullable type)
as function
Arguments
ARGUMENT DESCRIPTION
binaryFormat The binary format that will be used to read the value.
optional type Tthe type of binary format that will be returned by the choice
function. Either type any, type list, or type binary may be
specified.
Remarks
If type list or type binary is used, then the system may be able to return a streaming binary or list value
instead of a buffered one, which may reduce the amount of memory necessary to read the format.
The binary format value produced by this function is processed in five stages:
The specified binaryFormat is used to read a value.
The value is passed to the choice function.
The choice function inspects the value and returns a second binary format.
The second binary format is used to read a second value.
The second value is returned.
To preserve the first value read, a record binary format can be used to echo the value as a field.
Examples
Read a list of bytes where number of elements is determined by the first byte.
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length))
in
listFormat(binaryData)
equals {3, 4}
Read a list of bytes where the number of elements is determined by the first byte, and preserve the first byte read.
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.Record([
length = length,
list = BinaryFormat.List(BinaryFormat.Byte, length)
]))
in
listFormat(binaryData)
equals [ length = 2, list = {3, 4} ]
Read a list of bytes where number of elements is determined by the first byte using a streaming list.
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length),
type list)
in
listFormat(binaryData)
equals {3, 4}
BinaryFormat.Decimal
11/5/2018 • 2 minutes to read
About
A binary format that reads a .NET 16-byte decimal value.
Syntax
BinaryFormat.Decimal(binary as binary) as any
Arguments
ARGUMENT DESCRIPTION
About
A binary format that reads an 8-byte IEEE double-precision floating point value.
Syntax
BinaryFormat.Double(binary as binary) as any
Arguments
ARGUMENT DESCRIPTION
About
Returns a binary format that reads a group of items. Each item value is preceded by a unique key value. The result
is a list of item values.
Syntax
BinaryFormat.Group(binaryFormat as function, group as list, optional extra as nullable function,
optional lastKey as any) as function
Arguments
ARGUMENT DESCRIPTION
Optional extra Specifies a function that will return a binary format value for
the value following any key that was unexpected. If the extra
parameter is not specified, then an error will be raised if there
are unexpected key values.
Optional lastKey Specifies the key that signals the end of the group. If not
specified, the group ends when the input ends.
Occurrence values
Occurrence values are used with BinaryFormat.Group to specify how many times an item in a group is expected
to appear.
Occurrence.Optional = 0
Occurrence.Required = 1
Remarks
The group parameter specifies a list of item definitions. Each item definition is a list, containing 3-5 values, as
follows:
Key value. A value of a key that corresponds to an item. This must be unique within a set of items.
Item format. A binary format corresponding to a value of an item. This allows each item to have a different
format.
Item occurrence. The occurrence value for how many times an item is expected to appear in a group.
Required items that are not present cause an error. Required or optional duplicate items are handled like
unexpected key values.
Default item value (optional). If a default item value appears in an item definition list and is not null, then
it will be used instead of the default. The default for repeating or optional items is null, and the default for
repeating values is an empty list { }.
Item value transform (optional). If an item value transform function is present in an item definition list
and is not null, then it will be called to transform an item value before it is returned. The transform function
is only called if the item appears in the input (it will never be called with the default value).
Examples
The following assumes a key value that is a single byte, with 4 expected items in the group, all of which have a byte
of data following the key. The items appear in the input as follows:
Key 1 is required, and does appear with value 11.
Key 2 repeats, and appears twice with value 22, and results in a value of { 22, 22 }.
Key 3 is optional, and does not appear, and results in a value of null.
Key 4 repeats, but does not appear, and results in a value of { }.
Key 5 is not part of the group, but appears once with value 55. The extra function is called with the key value
5, and returns the format corresponding to that value (BinaryFormat.Byte). The value 55 is read and
discarded.
let
b = #binary(
{
1, 11,
2, 22,
2, 22,
5, 55,
1, 11
}),
f = BinaryFormat.Group(
BinaryFormat.Byte,
{
{ 1, BinaryFormat.Byte, Occurrence.Required },
{ 2, BinaryFormat.Byte, Occurrence.Repeating },
{ 3, BinaryFormat.Byte, Occurrence.Optional },
{ 4, BinaryFormat.Byte, Occurrence.Repeating }
},
(extra) => BinaryFormat.Byte)
in
f(b)
// { 11, { 22, 22 }, null, { } }
The following example illustrates the item value transform and default item value. The repeating item with key 1
sums the list of values read using List.Sum. The optional item with key 2 has a default value of 123 instead of null.
let
b = #binary(
{
1, 101,
1, 102
}),
f = BinaryFormat.Group(
BinaryFormat.Byte,
{
{ 1, BinaryFormat.Byte, Occurrence.Repeating,
0, (list) => List.Sum(list) },
{ 2, BinaryFormat.Byte, Occurrence.Optional, 123 }
})
in
f(b)
// { 203, 123 }
BinaryFormat.Length
11/5/2018 • 2 minutes to read
About
Returns a binary format that limits the amount of data that can be read. Both BinaryFormat.List and
BinaryFormat.Binary can be used to read until end of the data. BinaryFormat.Length can be used to limit the
number of bytes that are read.
Syntax
BinaryFormat.Length(binaryFormat as function, length as number) as function
Arguments
ARGUMENT DESCRIPTION
Example
Limit the number of bytes read to 2 when reading a list of bytes.
let
binaryData = #binary({1, 2, 3}),
listFormat = BinaryFormat.Length(
BinaryFormat.List(BinaryFormat.Byte), 2)
in
listFormat(binaryData)
equals {1, 2}
BinaryFormat.List
11/5/2018 • 2 minutes to read
About
Returns a binary format that reads a sequence of items and returns a list.
Syntax
BinaryFormat.List(binaryFormat as function, optional countOrCondition as any) as function
Arguments
ARGUMENT DESCRIPTION
Remarks
There are three ways to determine the number of items read:
If the countOrCondition is not specified, then the binary format will read until there are no more items.
If the countOrCondition is a number, then the binary format will read that many items.
If the countOrCondition is a function, then that function will be invoked for each item read. The function
returns true to continue, and false to stop reading items. The final item is included in the list.
Examples
// Read bytes until the end of the data.letbinaryData = #binary({1, 2, 3}),listFormat =
BinaryFormat.List(BinaryFormat.Byte)inlistFormat(binaryData) equals {1, 2, 3}
// Read bytes until the byte value is greater than or equal to two.
let
binaryData = #binary({1, 2, 3}),
listFormat = BinaryFormat.List(BinaryFormat.Byte, (x) => x < 2)
in
listFormat(binaryData)
equals {1, 2}
BinaryFormat.Null
11/5/2018 • 2 minutes to read
About
A binary format that reads zero bytes and returns null.
Syntax
BinaryFormat.Null(binary as binary) as any
BinaryFormat.Record
11/5/2018 • 2 minutes to read
About
Returns a binary format that reads a record. Each field in the record can have a different binary format.
Syntax
BinaryFormat.Record(record as record) as function
Arguments
ARGUMENT DESCRIPTION
Remarks
If a field contains a value that is not a binary format value, then no data is read for that field, and the field value
is echoed to the result.
Example
// Read a record containing one 16-bit integer and one 32-bit integer.
let
binaryData = #binary({
0x00, 0x01,
0x00, 0x00, 0x00, 0x02}),
recordFormat = BinaryFormat.Record([
A = BinaryFormat.UnsignedInteger16,
B = BinaryFormat.UnsignedInteger32
])
in
recordFormat(binaryData)
equals [A = 1, B = 2]
BinaryFormat.SignedInteger16
11/5/2018 • 2 minutes to read
About
A binary format that reads a 16-bit signed integer.
Syntax
BinaryFormat.SignedInteger16(binary as binary) as any
Arguments
ARGUMENT DESCRIPTION
About
A binary format that reads a 32-bit signed integer.
Syntax
BinaryFormat.SignedInteger32(binary as binary) as any
Arguments
ARGUMENT DESCRIPTION
About
A binary format that reads a 64-bit signed integer.
Syntax
BinaryFormat.SignedInteger64(binary as binary) as any
Arguments
ARGUMENT DESCRIPTION
About
A binary format that reads a 4-byte IEEE single-precision floating point value.
Syntax
BinaryFormat.Single(binary as binary) as any
Arguments
ARGUMENT DESCRIPTION
About
Returns a binary format that reads a text value. The optional encoding value specifies the encoding of the text.
Syntax
BinaryFormat.Text(length as number, optional encoding as nullable number) as function
Arguments
ARGUMENT DESCRIPTION
Remarks
If the encoding is not specified, then the encoding is determined from the Unicode byte order marks.
If no byte order marks are present, then TextEncoding.Utf8 is used.
Example
// Decode two bytes as ASCII text.
let
binaryData = #binary({65, 66, 67}),
textFormat = BinaryFormat.Text(2, TextEncoding.Ascii)
in
textFormat(binaryData)
equals "AB"
BinaryFormat.Transform
11/5/2018 • 2 minutes to read
About
Returns a binary format that will transform the values read by another binary format.
Syntax
BinaryFormat.Transform(binaryFormat as function, transform as function) as function
Arguments
ARGUMENT DESCRIPTION
binaryFormat The binary format that will be used to read the value.
transform Invoked with the value read, and returns the transformed
value.
Example
// Read a byte and add one to it.
let
binaryData = #binary({1}),
transformFormat = BinaryFormat.Transform(
BinaryFormat.Byte,
(x) => x + 1)
in
transformFormat(binaryData)
equals 2
BinaryFormat.UnsignedInteger16
11/5/2018 • 2 minutes to read
About
A binary format that reads a 16-bit unsigned integer.
Syntax
BinaryFormat.UnsignedInteger16(binary as binary) as any
Arguments
ARGUMENT DESCRIPTION
About
A binary format that reads a 32-bit unsigned integer.
Syntax
BinaryFormat.UnsignedInteger32(binary as binary) as any
Arguments
ARGUMENT DESCRIPTION
About
A binary format that reads a 64-bit unsigned integer.
Syntax
BinaryFormat.UnsignedInteger64(binary as binary) as any
Arguments
ARGUMENT DESCRIPTION
Syntax
BinaryOccurrence.Optional
About
The item is expected to appear zero or one time in the input.
BinaryOccurrence.Repeating
11/5/2018 • 2 minutes to read
Syntax
BinaryOccurrence.Repeating
About
The item is expected to appear zero or more times in the input.
BinaryOccurrence.Required
11/5/2018 • 2 minutes to read
About
The item is expected to appear once in the input.
ByteOrder.BigEndian
11/5/2018 • 2 minutes to read
Syntax
ByteOrder.BigEndian
About
A possible value for the byteOrder parameter in BinaryFormat.ByteOrder . The most signficant byte appears first in
Big Endian byte order.
ByteOrder.LittleEndian
11/5/2018 • 2 minutes to read
Syntax
ByteOrder.LittleEndian
About
A possible value for the byteOrder parameter in BinaryFormat.ByteOrder . The least signficant byte appears first in
Little Endian byte order.
Compression.Deflate
11/5/2018 • 2 minutes to read
Syntax
Compression.Deflate
About
The compressed data is in the Deflate format.
Compression.GZip
11/5/2018 • 2 minutes to read
Syntax
Compression.GZip
About
The compressed data is in the GZip format.
Occurrence.Optional
11/5/2018 • 2 minutes to read
About
The item is expected to appear zero or one time in the input.
Occurrence.Repeating
11/5/2018 • 2 minutes to read
About
The item is expected to appear zero or more times in the input.
Occurrence.Required
11/5/2018 • 2 minutes to read
About
The item is expected to appear once in the input.
#binary
11/5/2018 • 2 minutes to read
Syntax
#binary(value as any) as any
About
Creates a binary value from a list of numbers or a base 64 encoded text value.
Example 1
Create a binary value from a list of numbers.
Text.ToBinary("012")
Example 2
Create a binary value from a base 64 encoded text value.
#binary("1011")
Binary.FromText("1011", BinaryEncoding.Base64)
Combiner functions
11/5/2018 • 2 minutes to read
Combiner functions are used by other library functions that merge values, such as Table.ToList and
Table.CombineColumns. The function is applied to each row in the table to produce a single value for each row.
Combiner
FUNCTION DESCRIPTION
Combiner.CombineTextByLengths Returns a function that merges a list of text into a single text.
Combiner.CombineTextByPositions Returns a function that merges a list of text into a single text.
Combiner.CombineTextByRanges Returns a function that merges a list of text into a single text.
Combiner.CombineTextByDelimiter
11/5/2018 • 2 minutes to read
About
Returns a function that combines a list of text into a single text using the specified delimiter.
Syntax
Combiner.CombineTextByDelimiter(delimiters as text, optional quoteStyle as nullable number) as
function
Arguments
ARGUMENT DESCRIPTION
optional quoteStyle Determines whether there is quoting within the value that
should be used to preserve line breaks and for which
delimiters are not significant.
quoteStyle Settings
SETTING DESCRIPTION
QuoteStyle.Csv (default) Values containing quotes, line feeds, or the specified delimiter
are escaped to conform to the escaped production of CSV.
Combiner.CombineTextByEachDelimiter
11/5/2018 • 2 minutes to read
About
Returns a function that combines a list of text into a single text using each specified delimiter in sequence.
Syntax
Combiner.CombineTextByEachDelimiter(delimiters as list, optional quoteStyle as number) as function
Arguments
ARGUMENT DESCRIPTION
optional quoteStyle Determines whether there is quoting within the value that
should be used to preserve line breaks and for which
delimiters are not significant.
Remarks
Combiner.CombineTextByEachDelimiter is similar to CombineTextByDelimiter except that each delimiter is
used in turn.
An error is thrown by the resulting function if the cardinality of the line passed to it exceeds the cardinality
of the delimiters.
Combiner.CombineTextByLengths
11/5/2018 • 2 minutes to read
About
Returns a function that merges a list of text into a single text.
Syntax
Combiner.CombineTextByLengths(lengths as list, optional template as nullable text) as function
Arguments
ARGUMENT DESCRIPTION
Remarks
Combiner.CombineTextByLengths is similar to CombineTextByRanges, except that the lengths are used to
determine the locations of the text.
As in Splitter.SplitTextByLengths, each length must be non-negative.
As in SplitTextByLengths, CombineTextByLengths works by delegating to CombineTextByRanges.
Combiner.CombineTextByPositions
11/5/2018 • 2 minutes to read
About
Returns a function that merges a list of text into a single text.
Syntax
Combiner.CombineTextByPositions(positions as list, optional template as nullable text) as function
Arguments
ARGUMENT DESCRIPTION
Remarks
This function behaves similar to CombineTextByRanges, except that the positions are used to determine the
locations of the text. As in Splitter.SplitTextByRanges, each position must be non-negative and larger than the
previous position. As in SplitTextByPositions, CombineTextByPositions works by delegating to
CombineTextByRanges.
Combiner.CombineTextByRanges
11/5/2018 • 2 minutes to read
About
Returns a function that merges a list of text into a single text.
Syntax
Combiner.CombineTextByRanges(ranges as list, optional template as nullable text) as function
Arguments
ARGUMENT DESCRIPTION
Remarks
Each position identifies a tuple of position and length for a line where the text value should be placed. If the
length of a text value for a given tuple exceeds the length specified by that tuple, then the value is truncated
to fit. There is no checking for overlap of tuple ranges. If there are fewer text items than ranges, empty text
will be used. If there are fewer ranges than text items, then they will not be emitted.
The template specifies the default characters over which the individual items are placed. If not specified
empty text is used.
Comparer functions
11/5/2018 • 2 minutes to read
Comparer
FUNCTION DESCRIPTION
Comparer.Equals Returns a logical value based on the equality check over the
two given values.
About
Returns a logical value based on the equality check over the two given values.
Syntax
Comparer.Equals(comparer as function, x as any, y as any) as logical
Arguments
ARGUMENT DESCRIPTION
Example
let
comparer1 = Comparer.FromCulture("en-us", false),
comparer2 = Comparer.FromCulture("en-us", true)
in
[
Test1 = Comparer.Equals(comparer1,"a","A"), equals false
Test2 = Comparer.Equals(comparer2,"a","A") equals true
]
Comparer.FromCulture
11/5/2018 • 2 minutes to read
About
Returns a comparer function given the culture and a logical value for case sensitivity for the comparison. The
default value for ignoreCase is false. The value for culture are well known text representations of locales used in
the .NET framework.
Syntax
Comparer.FromCulture(culture as text, optional ignoreCase as nullable logical) as function
Arguments
ARGUMENT DESCRIPTION
Example
let
comparer1 = Comparer.FromCulture("en-us", false),
comparer2 = Comparer.FromCulture("en-us", true)
in
[
Test1 = comparer1("a","A"), equals -1
Test2 = comparer2("a","A") equals 0
]
Comparer.Ordinal
11/5/2018 • 2 minutes to read
About
Returns a comparer function which uses Ordinal rules to compare values.
Syntax
Comparer.Ordinal(x as any, y as any) as number
Arguments
ARGUMENT DESCRIPTION
Examples
Comparer.Equals(Comparer.Ordinal, "a","A")equals false
Comparer.OrdinalIgnoreCase
11/5/2018 • 2 minutes to read
Syntax
Comparer.OrdinalIgnoreCase(**x** as any, **y** as any) as number
About
Returns a case-insensitive comparer function which uses Ordinal rules to compare the provided values x and y .
Example
Using case-insensitive Ordinal rules, compare "Abc" with "abc". Note "Abc" is less than "abc" using
Comparer.Ordinal .
Comparer.OrdinalIgnoreCase("Abc", "abc")
0
Culture.Current
11/5/2018 • 2 minutes to read
About
Returns the current culture of the system.
Example
Culture.Current default equals “en-US”
Date functions
11/5/2018 • 5 minutes to read
Date
FUNCTION DESCRIPTION
Date.DayOfYear Returns a number that represents the day of the year from a
DateTime value.
Date.FromText Returns a Date value from a set of date formats and culture
value.
Date.QuarterOfYear Returns a number between 1 and 4 for the quarter of the year
from a DateTime value.
Date.WeekOfMonth Returns a number for the count of week in the current month.
Date.WeekOfYear Returns a number for the count of week in the current year.
About
Returns a Date/DateTime/DateTimeZone value with the day portion incremented by the number of days provided.
It also handles incrementing the month and year potions of the value as appropriate.
Syntax
Date.AddDays(dateTime, days as number)
Arguments
ARGUMENT DESCRIPTION
Examples
Date.AddDays(DateTime.FromText("2011-02-19"), 5) equals 2011-02-24
About
Returns a DateTime value with the month portion incremented by n months.
Syntax
Date.AddMonths(dateTime as datetime, numberOfMonths as number) as nullable datetime
Arguments
ARGUMENT DESCRIPTION
Remarks
It also handles incrementing the year portion of the value as appropriate.
Examples
Date.AddMonths(DateTime.FromText("2011-02-19"), 5) equals 2011-07-19
About
Returns a Date/DateTime/DateTimeZone value incremented by the number of quarters provided. Each quarter is
defined as a duration of three months. It also handles incrementing the year potion of the value as appropriate.
Syntax
Date.AddQuarters(dateTime, quarters as number)
Arguments
ARGUMENT DESCRIPTION
Examples
Date.AddQuarters(DateTime.FromText("2011-02-19"), 1) equals 2011-05-19
About
Returns a Date/DateTime/DateTimeZone value incremented by the number of weeks provided. Each week is
defined as a duration of seven days. It also handles incrementing the month and year potions of the value as
appropriate.
Syntax
Date.AddWeeks(dateTime, weeks as number)
Arguments
ARGUMENT DESCRIPTION
Examples
Date.AddWeeks(DateTime.FromText("2011-02-19"), 1) equals 2011-02-26
About
Returns a DateTime value with the year portion incremented by n years.
Syntax
Date.AddYears(dateTime as datetime, years as number) as datetime
Arguments
ARGUMENT DESCRIPTION
Example
Date.AddYears(DateTime.FromText("2011-02-19"), 10) equals 2021-02-19
Date.Day
11/5/2018 • 2 minutes to read
About
Returns the day for a DateTime value.
Syntax
Date.Day(dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Date.Day(DateTime.FromText("2011-02-19")) equals 19
Date.DayOfWeek
11/5/2018 • 2 minutes to read
Syntax
Date.DayOfWeek(**dateTime** as any, optional **firstDayOfWeek** as nullable number) as nullable
number
About
Returns a number between 0 and 6 representing the day of the week in the provided datetime value dateTime .
This function takes an optional Day value, firstDayOfWeek , to set the first day of the week for this relative
calculation. The default value firstDay is Day.Sunday. Valid values are: Day.Sunday, Day.Monday, Day.Tuesday,
Day.Wednesday, Day.Thursday, Day.Friday, and Day.Saturday.
dateTime :A date , datetime , or datetimezone value from which the day of the week is determined.
firstDayOfWeek :A Day type representing the first day of the week for this calculation.
Example 1
Get which the day of the week February 21st, 2011 falls on, with (default) Sunday being the first day of the week.
Date.DayOfWeek(#date(2011, 02, 21))
Example 2
Get which day of the week February 21st, 2011 falls on, with Monday being the first day of the week.
0
Date.DayOfWeekName
11/5/2018 • 2 minutes to read
Syntax
Date.DayOfWeekName(**date** as any, optional **culture** as nullable text)
About
Returns the day of the week name for the provided date and, optionally, a culture culture .
Example
Get the day of the week name.
"Saturday"
Date.DayOfYear
11/5/2018 • 2 minutes to read
About
Returns a number that represents the day of the year from a DateTime value.
Syntax
Date.DayOfYear(dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
Date.DayOfYear(DateTime.FromText("2011-03-01")) equals 60
Date.DayOfYear(DateTime.FromText("2012-03-01")) equals 61
Date.DaysInMonth
11/5/2018 • 2 minutes to read
About
Returns the number of days in the month from a DateTime value.
Syntax
Date.DaysInMonth(dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Date.DaysInMonth(DateTime.FromText("2012-03-01")) equals 31
Date.EndOfDay
11/5/2018 • 2 minutes to read
About
Returns a DateTime value for the end of the day.
Syntax
Date.EndOfDay(dateTime as nullable datetime) as nullable datetime
Arguments
ARGUMENT DESCRIPTION
Remarks
The date and time portions are reset to their initial values for the day.
The timezone information is persisted.
Example
dateTime = DateTimeZone.FromText("2011-02-21T12:30:00-08:00");
Date.EndOfDay(dateTime) equals 2011-02-21T23:59:590-08:00
Parameter values
The following day values can be used DateTime functions.
Day
DAY VALUE
Day.Sunday 0
Day.Monday 1
Day.Tuesday 2
Day.Wednesday 3
Day.Thursday 4
Day.Friday 5
DAY VALUE
Day.Saturday 6
Date.EndOfMonth
11/5/2018 • 2 minutes to read
About
Returns a DateTime value for the end of the month.
Syntax
Date.EndOfMonth(dateTime as nullable datetime) as nullable datetime
## Arguments
|Argument|Description|
|------------|---------------|
|dateTime|The DateTime to check against.|
## Remarks
- The date and time portions are reset to their initial values for the month.
## Example
```powerquery-m
dateTime = DateTimeZone.FromText("2011-02-21T12:30:00-08:00");
Date.EndOfMonth(dateTime) equals 2011-02-28T23:59:59-08:00
Date.EndOfQuarter
11/5/2018 • 2 minutes to read
About
Returns a Date/DateTime/DateTimeZone value representing the end of the quarter. The date and time portions are
reset to their terminating values for the quarter. The timezone information is persisted.
Syntax
Date.EndOfQuarter(dateTime)
Arguments
ARGUMENT DESCRIPTION
dateTime The DateTime whose date and time portions are to be reset to
their terminating values for the quarter.
Date.EndOfWeek
1/16/2019 • 2 minutes to read
About
Returns a date, datetime, or datetimezone value for the end of the week.
Syntax
Date.EndOfWeek(dateTime as any, optional firstDayOfWeek as nullable number) as any
Arguments
ARGUMENT DESCRIPTION
optional firstDayOfWeek A number value as an enum value to set the last day of the
week. The default value for firstDayOfWeek is Day.Sunday.
Remarks
The date and time portions are reset to their initial values for the week.
The timezone information is persisted.
Example
let dateTime = DateTimeZone.FromText("2011-02-24T12:30:00-08:00") in
Date.EndOfWeek(dateTime, Day.Sunday) equals 2011-02-26T23:59:59.9999999-08:00
Date.EndOfYear
11/5/2018 • 2 minutes to read
About
Returns a DateTime value for the end of the year.
Syntax
Date.EndOfYear(dateTime as nullable datetime) as nullable datetime
Arguments
ARGUMENT DESCRIPTION
Remarks
The date and time portions are reset to their initial values for the year.
The timezone information is persisted.
Example
dateTime = DateTimeZone.FromText("2011-02-21T12:30:00-08:00");
Date.EndOfYear(dateTime) equals 2011-12-31T23:59:59-08:00
Date.From
11/5/2018 • 2 minutes to read
About
Returns a date value from a value.
Syntax
Date.From(value as any, optional culture as nullable text) as nullable date
Arguments
ARGUMENT DESCRIPTION
TYPE DESCRIPTION
text Returns a Date value from a text value. For more details, see
Date.FromText.
datetimezone The Date component of the local date and time equivalent of
a value.
Remarks
If a value is null, Date.From returns null.
If a value is date, the same value is returned.
Examples
Date.From(43910) equals #date(2020,3,20)
About
Returns a Date value from a set of date formats and culture value, following ISO 8601 format standard.
Syntax
Date.FromText(date as nullable text, optional culture as nullable text) as nullable date
Arguments
ARGUMENT DESCRIPTION
Supported formats
yyyy-MM -dd
YYYYMMDD
M/d/yyyy
Terms
Y = years
M = months
D = days
Remarks
If the culture is not specified, the current user culture is used.
Example
Date.FromText("2010-02-19") equals Date,yyyy-MM-dd
Date.IsInCurrentDay
11/5/2018 • 2 minutes to read
Syntax
Date.IsInCurrentDay(**dateTime** as any) as nullable logical
About
Indicates whether the given datetime value dateTime occurs during the current day, as determined by the current
date and time on the system.
dateTime :A date , datetime , or datetimezone value to be evaluated.
Example
Determine if the current system time is in the current day.
Date.IsInCurrentDay(DateTime.FixedLocalNow())
true
Date.IsInCurrentMonth
11/5/2018 • 2 minutes to read
About
Returns a logical value indicating whether the given Date/DateTime/DateTimeZone occurred during the current
month, as determined by the current date and time on the system.
Syntax
Date.IsInCurrentMonth(dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
About
Returns a logical value indicating whether the given Date/DateTime/DateTimeZone occurred during the current
quarter, as determined by the current date and time on the system.
Syntax
Date.IsInCurrentQuarter(dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
About
Returns a logical value indicating whether the given Date/DateTime/DateTimeZone occurred during the current
week, as determined by the current date and time on the system.
Syntax
Date.IsInCurrentWeek(dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
About
Returns a logical value indicating whether the given Date/DateTime/DateTimeZone occurred during the current
year, as determined by the current date and time on the system.
Syntax
Date.IsInCurrentYear(dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
Syntax
Date.IsInNextDay(**dateTime** as any) as nullable logical
About
Indicates whether the given datetime value dateTime occurs during the next day, as determined by the current
date and time on the system.
dateTime :A date , datetime , or datetimezone value to be evaluated.
Example
Determine if the day after the current system time is in the next day.
```powerquery-mDate.IsInNextDay(Date.AddDays(DateTime.FixedLocalNow (), 1))
`true`
Date.IsInNextMonth
11/5/2018 • 2 minutes to read
About
Returns a logical value indicating whether the given Date/DateTime/DateTimeZone occurred during the next
month, as determined by the next date and time on the system.
Syntax
Date.IsInNextMonth(dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
dateTime Check whether this DateTime occurred during the next month.
Date.IsInNextNDays
11/5/2018 • 2 minutes to read
Syntax
Date.IsInNextNDays(**dateTime** as any, **days** as number) as nullable logical
About
Indicates whether the given datetime value dateTime occurs during the next number of days, as determined by the
current date and time on the system.
dateTime : A date , datetime , or datetimezone value to be evaluated.
days : The number of days.
Example
Determine if the day after the current system time is in the next two days.
Date.IsInNextNDays(Date.AddDays(DateTime.FixedLocalNow(), 1), 2)
true
Date.IsInNextNMonths
11/5/2018 • 2 minutes to read
Syntax
Date.IsInNextNMonths(**dateTime** as any, **months** as number) as nullable logical
About
Indicates whether the given datetime value dateTime occurs during the next number of months, as determined by
the current date and time on the system.
dateTime : A date , datetime , or datetimezone value to be evaluated.
months : The number of months.
Example
Determine if the month after the current system time is in the next two months.
Date.IsInNextNMonths(Date.AddMonths(DateTime.FixedLocalNow(), 1), 2)
true
Date.IsInNextNQuarters
11/5/2018 • 2 minutes to read
Syntax
Date.IsInNextNQuarters(**dateTime** as any, **quarters** as number) as nullable logical
About
Indicates whether the given datetime value dateTime occurs during the next number of quarters, as determined by
the current date and time on the system.
dateTime : A date , datetime , or datetimezone value to be evaluated.
quarters : The number of quarters.
Example
Determine if the quarter after the current system time is in the next two quarters.
Date.IsInNextNQuarters(Date.AddQuarters(DateTime.FixedLocalNow(), 1), 2)
true
Date.IsInNextNWeeks
11/5/2018 • 2 minutes to read
Syntax
Date.IsInNextNWeeks(**dateTime** as any, **weeks** as number) as nullable logical
About
Indicates whether the given datetime value dateTime occurs during the next number of weeks, as determined by
the current date and time on the system.
dateTime : A date , datetime , or datetimezone value to be evaluated.
weeks : The number of weeks.
Example
Determine if the week after the current system time is in the next two weeks.
Date.IsInNextNWeeks(Date.AddDays(DateTime.FixedLocalNow(), 7), 2)
true
Date.IsInNextNYears
11/5/2018 • 2 minutes to read
## About
Indicates whether the given datetime value `dateTime` occurs during the next number of years, as determined by
the current date and time on the system.
* `dateTime`: A `date`, `datetime`, or `datetimezone` value to be evaluated.
* `years`: The number of years.
## Example
Determine if the year after the current system time is in the next two years.
```powerquery-m
Date.IsInNextNYears(Date.AddYears(DateTime.FixedLocalNow(), 1), 2)
true
Date.IsInNextQuarter
11/5/2018 • 2 minutes to read
About
Returns a logical value indicating whether the given Date/DateTime/DateTimeZone occurred during the next
quarter, as determined by the next date and time on the system.
Syntax
Date.IsInNextQuarter(dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
About
Returns a logical value indicating whether the given Date/DateTime/DateTimeZone occurred during the next
week, as determined by the next date and time on the system.
Syntax
Date.IsInNextWeek(dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
dateTime Check whether this DateTime occurred during the next week.
Date.IsInNextYear
11/5/2018 • 2 minutes to read
About
Returns a logical value indicating whether the given Date/DateTime/DateTimeZone occurred during the next year,
as determined by the next date and time on the system.
Syntax
Date.IsInNextYear(dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
dateTime Check whether this DateTime occurred during the next year.
Date.IsInPreviousDay
11/5/2018 • 2 minutes to read
Syntax
Date.IsInPreviousDay(**dateTime** as any) as nullable logical
About
Indicates whether the given datetime value dateTime occurs during the previous day, as determined by the current
date and time on the system.
dateTime :A date , datetime , or datetimezone value to be evaluated.
Example
Determine if the day before the current system time is in the previous day.
Date.IsInPreviousDay(Date.AddDays(DateTime.FixedLocalNow(), -1))
true
Date.IsInPreviousMonth
11/5/2018 • 2 minutes to read
About
Returns a logical value indicating whether the given Date/DateTime/DateTimeZone occurred during the previous
month, as determined by the current date and time on the system.
Syntax
Date.IsInPreviousMonth(dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
Syntax
Date.IsInPreviousNDays(**dateTime** as any, **days** as number) as nullable logical
About
Indicates whether the given datetime value dateTime occurs during the previous number of days, as determined
by the current date and time on the system.
dateTime : A date , datetime , or datetimezone value to be evaluated.
days : The number of days.
Example 1
Determine if the day before the current system time is in the previous two days.
Date.IsInPreviousNDays(Date.AddDays(DateTime.FixedLocalNow(), -1), 2)
true
Date.IsInPreviousNMonths
11/5/2018 • 2 minutes to read
Syntax
Date.IsInPreviousNMonths(**dateTime** as any, **months** as number) as nullable logical
About
Indicates whether the given datetime value dateTime occurs during the previous number of months, as
determined by the current date and time on the system.
dateTime : A date , datetime , or datetimezone value to be evaluated.
months : The number of months.
Example 1
Determine if the month before the current system time is in the previous two months.
Date.IsInPreviousNMonths(Date.AddMonths(DateTime.FixedLocalNow(), -1), 2)
true
Date.IsInPreviousNQuarters
11/5/2018 • 2 minutes to read
Syntax
Date.IsInPreviousNQuarters(**dateTime** as any, **quarters** as number) as nullable logical
About
Indicates whether the given datetime value dateTime occurs during the previous number of quarters, as
determined by the current date and time on the system.
dateTime : A date , datetime , or datetimezone value to be evaluated.
quarters : The number of quarters.
Example 1
Determine if the quarter before the current system time is in the previous two quarters.
Date.IsInPreviousNQuarters(Date.AddQuarters(DateTime.FixedLocalNow(), -1), 2)
true
Date.IsInPreviousNWeeks
11/5/2018 • 2 minutes to read
Syntax
Date.IsInPreviousNWeeks(**dateTime** as any, **weeks** as number) as nullable logical
About
Indicates whether the given datetime value dateTime occurs during the previous number of weeks, as determined
by the current date and time on the system.
dateTime : A date , datetime , or datetimezone value to be evaluated.
weeks : The number of weeks.
Example
Determine if the week before the current system time is in the previous two weeks.
Date.IsInPreviousNWeeks(Date.AddDays(DateTime.FixedLocalNow(), -7), 2)
true
Date.IsInPreviousNYears
11/5/2018 • 2 minutes to read
Syntax
Date.IsInPreviousNYears(**dateTime** as any, **years** as number) as nullable logical
About
Indicates whether the given datetime value dateTime occurs during the previous number of years, as determined
by the current date and time on the system.
dateTime : A date , datetime , or datetimezone value to be evaluated.
years : The number of years.
Example
Determine if the year before the current system time is in the previous two years.
Date.IsInPreviousNYears(Date.AddYears(DateTime.FixedLocalNow(), -1), 2)
true
Date.IsInPreviousQuarter
11/5/2018 • 2 minutes to read
About
Returns a logical value indicating whether the given Date/DateTime/DateTimeZone occurred during the previous
quarter, as determined by the current date and time on the system.
Syntax
Date.IsInPreviousQuarter(dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
About
Returns a logical value indicating whether the given Date/DateTime/DateTimeZone occurred during the previous
week, as determined by the current date and time on the system.
Syntax
Date.IsInPreviousWeek(dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
About
Returns a logical value indicating whether the given Date/DateTime/DateTimeZone occurred during the previous
year, as determined by the current date and time on the system.
Syntax
Date.IsInPreviousYear(dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
About
Returns a logical value indicating whether the given Date/DateTime/DateTimeZone occurred in the period starting
January 1st of the current year and ending on the current day, as determined by the current date and time on the
system.
Syntax
Date. IsInYearToDate(dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
About
Returns a logical value indicating whether the year portion of a DateTime value is a leap year.
Syntax
Date.IsLeapYear(dateTime as nullable datetime) as nullable logical
Arguments
ARGUMENT DESCRIPTION
Examples
Date.IsLeapYear(DateTime.FromText("2011-01-01")) equals false
About
Returns the month from a DateTime value.
Syntax
Date.Month(dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Date.Month(DateTime.FromText("2011-02-19")) equals 2
Date.MonthName
11/5/2018 • 2 minutes to read
Syntax
Date.MonthName(**date** as any, optional **culture** as nullable text)
About
Returns the name of the month component for the provided date and, optionally, a culture culture .
Example
Get the month name.
"December"
Date.QuarterOfYear
11/5/2018 • 2 minutes to read
About
Returns a number between 1 and 4 for the quarter of the year from a DateTime value.
Syntax
Date.QuarterOfYear(dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
Date.QuarterOfYear(DateTime.FromText("2011-03-21")) equals 1
Date.QuarterOfYear(DateTime.FromText("2011-11-21")) equals 4
Date.StartOfDay
11/5/2018 • 2 minutes to read
About
Returns a DateTime value for the start of the day.
Syntax
Date.StartOfDay(dateTime as nullable datetime) as nullable datetime
Arguments
ARGUMENT DESCRIPTION
Remarks
The date and time portions are reset to their initial values for the day.
The timezone information is persisted.
Example
dateTime = DateTimeZone.FromText("2011-02-21T12:30:00-08:00");
Date.StartOfDay(dateTime) equals 2011-02-21T00:00:00-08:00
Date.StartOfMonth
11/5/2018 • 2 minutes to read
About
Returns a DateTime value representing the start of the month.
Syntax
Date.StartOfMonth(dateTime as nullable datetime) as nullable datetime
Arguments
ARGUMENT DESCRIPTION
Remarks
The date and time portions are reset to their initial values for the month.
The timezone information is persisted.
Example
dateTime = DateTimeZone.FromText("2011-02-21T12:30:00-08:00");
Date.StartOfMonth(dateTime) equals 2011-02-01T00:00:00-08:00
Date.StartOfWeek
11/5/2018 • 2 minutes to read
About
Returns a DateTime value representing the start of the week.
Syntax
Date.StartOfWeek(dateTime as nullable datetime, optional firstDay as nullable number) as nullable
datetime
Arguments
ARGUMENT DESCRIPTION
optional firstDay An optional argument to set the first day of the week.
Enum Values
Day.Sunday = 0;
Day.Monday = 1;
Day.Tuesday = 2;
Day.Wednesday = 3;
Day.Thursday = 4;
Day.Friday = 5;
Day.Saturday = 6;
Remarks
The date and time portions are reset to their initial values for the week.
The timezone information is persisted.
Example
dateTime = DateTimeZone.FromText("2011-02-24T12:30:00-08:00");
Date.StartOfWeek(dateTime, Day.Monday) equals 2011-02-21T00:00:00-08:00
Date.StartOfQuarter
11/5/2018 • 2 minutes to read
About
Returns a Date/DateTime/DateTimeZone value representing the start of the quarter. The date and time portions
are reset to their initial values for the quarter. The timezone information is persisted.
Syntax
Date.StartOfQuarter(dateTime)
Arguments
ARGUMENT DESCRIPTION
dateTime The DateTime whose date and time portions are to be reset to
their initial values for the quarter.
Date.StartOfYear
11/5/2018 • 2 minutes to read
About
Returns a DateTime value representing the start of the year.
Syntax
Date.StartOfYear(dateTime as nullable datetime) as nullable datetime
Arguments
ARGUMENT DESCRIPTION
Remarks
The date and time portions are reset to their initial values for the year.
The timezone information is persisted.
Example
dateTime=DateTimeZone.FromText("2011-02-21T12:30:00-08:00")
Date.StartOfYear(dateTime) equals 2011-01-01T00:00:00-08:00
Date.ToRecord
11/5/2018 • 2 minutes to read
About
Returns a record containing parts of a Date value.
Syntax
Date.ToRecord(date as date) as record
Arguments
ARGUMENT DESCRIPTION
Example
Date.ToRecord(#date(2013, 1, 1) equals [Year=2013,Month=1,Day=1]
Date.ToText
11/5/2018 • 2 minutes to read
Syntax
Date.ToText(**date** as nullable date, optional **format** as nullable text, optional **culture**
as nullable text) as nullable text
About
Returns a textual representation of date , the Date value, date . This function takes in an optional format
parameter format . For a complete list of supported formats, please refer to the Library specification document.
Example 1
Get a textual representation of #date(2010, 12, 31).
"12/31/2010"
Example 2
Get a textual representation of #date(2010, 12, 31) with format option.
"2010/12/31"
Date.WeekOfMonth
11/5/2018 • 2 minutes to read
About
Returns a number for the count of week in the current month.
Syntax
Date.WeekOfMonth(dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Date.WeekOfMonth(DateTime.FromText("2011-08-30")) equals 5
Date.WeekOfYear
11/13/2018 • 2 minutes to read
Syntax
Date.WeekOfYear(dateTime as any, optional firstDayOfWeek as nullable number) as nullable number
About
Returns a number from 1 to 54 indicating which week of the year the date, dateTime , falls in.
dateTime :A datetime value for which the week-of-the-year is determined.
firstDayOfWeek : An optional Day.Type value that indicates which day is considered the start of a new week
(for example, Day.Sunday . If unspecified, a culture-dependent default is used.
Example 1
Determine which week of the year March 27th, 2011 falls in ( #date(2011, 03, 27) ).
14
Example 2
Determine which week of the year March 27th, 2011 falls in ( #date(2011, 03, 27) ), using Monday as the start of a
new week.
13
Date.Year
11/5/2018 • 2 minutes to read
About
Returns the year from a DateTime value.
Syntax
Date.Year(dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Date.Year(DateTime.FromText("2011-02-19")) equals 2011
Day.Friday
11/5/2018 • 2 minutes to read
About
Returns 6, the number representing Friday.
Day.Monday
11/5/2018 • 2 minutes to read
About
Returns 2, the number representing Monday.
Day.Saturday
11/5/2018 • 2 minutes to read
About
Returns 7, the number representing Saturday.
Day.Sunday
11/5/2018 • 2 minutes to read
About
Returns 1, the number representing Sunday.
Day.Thursday
11/5/2018 • 2 minutes to read
About
Returns 5, the number representing Thursday.
Day.Tuesday
11/5/2018 • 2 minutes to read
About
Returns 3, the number representing Tuesday.
Day.Wednesday
11/5/2018 • 2 minutes to read
About
Returns 4, the number representing Wednesday.
#date
11/5/2018 • 2 minutes to read
Syntax
#date(year as number, month as number, day as number) as date
About
Creates a date value from year year , month month , and day day . Raises an error if these are not true:
1 ≤ year ≤ 9999
1 ≤ month ≤ 12
1 ≤ day ≤ 31
DateTime functions
11/5/2018 • 2 minutes to read
DateTime
FUNCTION DESCRIPTION
DateTime.FixedLocalNow Returns a DateTime value set to the current date and time on
the system.
DateTime.IsInCurrentHour Indicates whether the given datetime value occurs during the
current hour, as determined by the current date and time on
the system.
DateTime.IsInCurrentMinute Indicates whether the given datetime value occurs during the
current minute, as determined by the current date and time
on the system.
DateTime.IsInCurrentSecond Indicates whether the given datetime value occurs during the
current second, as determined by the current date and time
on the system.
DateTime.IsInNextHour Indicates whether the given datetime value occurs during the
next hour, as determined by the current date and time on the
system.
DateTime.IsInNextMinute Indicates whether the given datetime value occurs during the
next minute, as determined by the current date and time on
the system.
DateTime.IsInNextNHours Indicates whether the given datetime value occurs during the
next number of hours, as determined by the current date and
time on the system.
DateTime.IsInNextNMinutes Indicates whether the given datetime value occurs during the
next number of minutes, as determined by the current date
and time on the system.
FUNCTION DESCRIPTION
DateTime.IsInNextNSeconds Indicates whether the given datetime value occurs during the
next number of seconds, as determined by the current date
and time on the system.
DateTime.IsInNextSecond Indicates whether the given datetime value occurs during the
next second, as determined by the current date and time on
the system.
DateTime.IsInPreviousHour Indicates whether the given datetime value occurs during the
previous hour, as determined by the current date and time on
the system.
DateTime.IsInPreviousMinute Indicates whether the given datetime value occurs during the
previous minute, as determined by the current date and time
on the system.
DateTime.IsInPreviousNHours Indicates whether the given datetime value occurs during the
previous number of hours, as determined by the current date
and time on the system.
DateTime.IsInPreviousNMinutes Indicates whether the given datetime value occurs during the
previous number of minutes, as determined by the current
date and time on the system.
DateTime.IsInPreviousNSeconds Indicates whether the given datetime value occurs during the
previous number of seconds, as determined by the current
date and time on the system.
DateTime.IsInPreviousSecond Indicates whether the given datetime value occurs during the
previous second, as determined by the current date and time
on the system.
DateTime.LocalNow Returns a datetime value set to the current date and time on
the system.
About
Adds the timezonehours as an offset to the input datetime value and returns a new datetimezone value.
Syntax
DateTime.AddZone(dateTime as nullable datetime, timezoneHours as number, optional timezoneMinutes
as nullable number) as nullable datetimezone
Arguments
ARGUMENT DESCRIPTION
Example
DateTime.AddZone(#datetime(2010, 5, 4, 6, 5, 5), 8) equals #datetimezone(2010, 5, 4, 6, 5, 5, 8, 0)
DateTime.Date
11/5/2018 • 2 minutes to read
About
Returns a date part from a DateTime value
Syntax
DateTime.Date(dateTime as datetime) as nullable datetime
Arguments
ARGUMENT DESCRIPTION
Example
DateTime.Date(#datetime(2010, 5, 4, 6, 5, 4)) equals #date(2010, 5, 4)
DateTime.FixedLocalNow
11/5/2018 • 2 minutes to read
About
Returns a DateTime value set to the current date and time on the system. This value is fixed and will not change
with successive calls, unlike DateTime.LocalNow, which may return different values over the course of execution of
an expression.
Syntax
DateTime.FixedLocalNow() as datetime
DateTime.From
11/5/2018 • 2 minutes to read
About
Returns a datetime value from a value.
Syntax
DateTime.From(value as any, optional culture as nullable text) as nullable datetime
Arguments
ARGUMENT DESCRIPTION
Type to convert
TYPE DESCRIPTION
text Returns a datetime value from a text value. For more details,
see DateTime.FromText.
Remarks
If a value is null, DateTime.From returns null.
If a value is datetime, the same value is returned.
Examples
DateTime.From(#time(06, 45, 12)) equals #datetime(1899, 12, 30, 06, 45, 12)
About
Returns a DateTime value from the supplied number.
Syntax
DateTime.FromFileTime(fileTime as nullable number) as nullable datetime
Arguments
ARGUMENT DESCRIPTION
fileTime The fileTime is a Windows file time value that represents the
number of 100-nanoseconds intervals that have elapsed since
12:00 midnight, January 1, 1601 A.D. (C.E.) Coordinated
Universal Time (UTC).
Example
DateTime.FromFileTime(12987640252984224) equals #datetime(2012, 7, 24, 14, 50, 52.9842245)
DateTime.FromText
11/5/2018 • 2 minutes to read
About
Returns a DateTime value from a set of date formats and culture value.
Syntax
DateTime.FromText(dateTime as nullable text, optional culture as nullable text) as nullable date
Arguments
ARGUMENT DESCRIPTION
DateTime formats
YYYY -MM -DDThh:mm
YYYYMMDDThh:mm
YYYY -MM -DDThh:mm:ss
YYYYMMDDThh:mm:ss
YYYY -MM -DDThh:mm:ss.nnnnnnn
YYYYMMDDThh:mm:ss.nnnnnnn
Terms
Y = years
M = months
D = days
h = hours
m = minutes
s = seconds
n = fractional seconds
Example
DateTime.FromText("2010-12-31T01:30:00") equals YYYY-MM-DDThh:mm:ss
DateTime.IsInCurrentHour
11/5/2018 • 2 minutes to read
Syntax
DateTime.IsInCurrentHour(dateTime as any) as nullable logical
About
Indicates whether the given datetime value occurs during the current hour, as determined by the current date and
time on the system.
VALUE
Example 1
Determine if the current system time is in the current hour.
DateTime.IsInCurrentHour(DateTime.LocalNow())
Equals: true
DateTime.IsInCurrentMinute
11/5/2018 • 2 minutes to read
Syntax
DateTime.IsInCurrentMinute(dateTime as any) as nullable logical
About
Indicates whether the given datetime value occurs during the current minute, as determined by the current date
and time on the system.
VALUE
Example 1
Determine if the current system time is in the current minute.
DateTime.IsInCurrentMinute(DateTime.LocalNow())
Equals: true
DateTime.IsInCurrentSecond
11/5/2018 • 2 minutes to read
Syntax
DateTime.IsInCurrentSecond(dateTime as any) as nullable logical
About
Indicates whether the given datetime value occurs during the current second, as determined by the current date
and time on the system.
VALUE
Example 1
Determine if the current system time is in the current second.
DateTime.IsInCurrentSecond(DateTime.FixedLocalNow())
Equals: true
DateTime.IsInNextHour
11/5/2018 • 2 minutes to read
Syntax
DateTime.IsInNextHour(dateTime as any) as nullable logical
About
Indicates whether the given datetime value occurs during the next hour, as determined by the current date and
time on the system.
VALUE
Example 1
Determine if the hour after the current system time is in the next hour.
DateTime.IsInNextHour(DateTime.LocalNow() + #duration(0,1,0,0))
Equals: true
DateTime.IsInNextMinute
11/5/2018 • 2 minutes to read
Syntax
DateTime.IsInNextMinute(dateTime as any) as nullable logical
About
Indicates whether the given datetime value occurs during the next minute, as determined by the current date and
time on the system.
VALUE
Example 1
Determine if the minute after the current system time is in the next minute.
DateTime.IsInNextMinute(DateTime.LocalNow() + #duration(0,0,1,0))
Equals: true
DateTime.IsInNextNHours
11/5/2018 • 2 minutes to read
Syntax
DateTime.IsInNextNHours(dateTime as any, hours as number) as nullable logical
About
Indicates whether the given datetime value occurs during the next number of hours, as determined by the current
date and time on the system.
VALUE
Example 1
Determine if the hour after the current system time is in the next two hours.
DateTime.IsInNextNHours(DateTime.LocalNow() + #duration(0,2,0,0), 2)
Equals: true
DateTime.IsInNextNMinutes
11/5/2018 • 2 minutes to read
Syntax
DateTime.IsInNextNMinutes(dateTime as any, minutes as number) as nullable logical
About
Indicates whether the given datetime value occurs during the next number of minutes, as determined by the
current date and time on the system.
VALUE
Example 1
Determine if the hour after the current system time is in the next two hours.
DateTime.IsInNextNHours(DateTime.LocalNow() + #duration(0,2,0,0), 2)
Equals: true
DateTime.IsInNextNSeconds
11/5/2018 • 2 minutes to read
Syntax
DateTime.IsInNextNSeconds(dateTime as any, seconds as number) as nullable logical
About
Indicates whether the given datetime value occurs during the next number of seconds, as determined by the
current date and time on the system.
VALUE
Example 1
Determine if the second after the current system time is in the next two seconds.
DateTime.IsInNextNSeconds(DateTime.FixedLocalNow() + #duration(0,0,0,2), 2)
Equals: true
DateTime.IsInNextSecond
11/5/2018 • 2 minutes to read
Syntax
DateTime.IsInNextSecond(dateTime as any) as nullable logical
About
Indicates whether the given datetime value occurs during the next second, as determined by the current date and
time on the system.
VALUE
Example 1
Determine if the second after the current system time is in the next second.
DateTime.IsInNextSecond(DateTime.FixedLocalNow() + #duration(0,0,0,1))
Equals: true
DateTime.IsInPreviousHour
11/5/2018 • 2 minutes to read
Syntax
DateTime.IsInPreviousHour(dateTime as any) as nullable logical
About
Indicates whether the given datetime value occurs during the previous hour, as determined by the current date and
time on the system.
VALUE
Example 1
Determine if the hour before the current system time is in the previous hour.
DateTime.IsInPreviousHour(DateTime.LocalNow() - #duration(0,1,0,0))
Equals: true
DateTime.IsInPreviousMinute
11/5/2018 • 2 minutes to read
Syntax
DateTime.IsInPreviousMinute(dateTime as any) as nullable logical
About
Indicates whether the given datetime value occurs during the previous minute, as determined by the current date
and time on the system.
VALUE
Example 1
Determine if the minute before the current system time is in the previous minute.
DateTime.IsInPreviousMinute(DateTime.LocalNow() - #duration(0,0,1,0))
Equals: true
DateTime.IsInPreviousNHours
11/5/2018 • 2 minutes to read
Syntax
DateTime.IsInPreviousNHours(dateTime as any, hours as number) as nullable logical
About
Indicates whether the given datetime value occurs during the previous number of hours, as determined by the
current date and time on the system.
VALUE
Example 1
Determine if the hour before the current system time is in the previous two hours.
DateTime.IsInPreviousNHours(DateTime.LocalNow() - #duration(0,2,0,0), 2)
Equals: true
DateTime.IsInPreviousNMinutes
11/5/2018 • 2 minutes to read
Syntax
DateTime.IsInPreviousNMinutes(dateTime as any, minutes as number) as nullable logical
About
Indicates whether the given datetime value occurs during the previous number of minutes, as determined by the
current date and time on the system.
VALUE
Example 1
Determine if the minute before the current system time is in the previous two minutes.
DateTime.IsInPreviousNMinutes(DateTime.LocalNow() - #duration(0,0,2,0), 2)
Equals: true
DateTime.IsInPreviousNSeconds
11/5/2018 • 2 minutes to read
Syntax
DateTime.IsInPreviousNSeconds(dateTime as any, seconds as number) as nullable logical
About
Indicates whether the given datetime value occurs during the previous number of seconds, as determined by the
current date and time on the system.
VALUE
Example 1
Determine if the second before the current system time is in the previous two seconds.
DateTime.IsInPreviousNSeconds(DateTime.FixedLocalNow() - #duration(0,0,0,2), 2)
Equals: true
DateTime.IsInPreviousSecond
11/5/2018 • 2 minutes to read
Syntax
DateTime.IsInPreviousSecond(dateTime as any) as nullable logical
About
Indicates whether the given datetime value occurs during the previous second, as determined by the current date
and time on the system.
VALUE
Example 1
Determine if the second before the current system time is in the previous second.
DateTime.IsInPreviousSecond(DateTime.FixedLocalNow() - #duration(0,0,0,1))
Equals: true
DateTime.LocalNow
11/5/2018 • 2 minutes to read
About
Returns a datetime value set to the current date and time on the system.
Syntax
DateTime.LocalNow() as datetime
Remarks
The returned value does not contain timezone information.
Example
DateTime.LocalNow()equals 2013-03-08T14:22:42
DateTime.Time
11/5/2018 • 2 minutes to read
About
Returns a time part from a DateTime value.
Syntax
DateTime.Time(dateTime as datetime) as nullable time
Arguments
ARGUMENT DESCRIPTION
Example
DateTime.Time(#datetime(2010, 5, 4, 6, 5, 4)) equals #time(6, 5, 4)
DateTime.ToRecord
11/5/2018 • 2 minutes to read
About
Returns a record containing parts of a DateTime value.
Syntax
DateTime.ToRecord(dateTime as datetime) as record
Arguments
ARGUMENT DESCRIPTION
Example
DateTime.ToRecord(#datetime(2013,1,3,12,4,5)) equals
[
Year = 2013, Month = 1, Day = 3,
Hour = 12, Minute = 4, Second = 5
]
DateTime.ToText
11/5/2018 • 2 minutes to read
Syntax
DateTime.ToText(**dateTime** as nullable datetime, optional **format** as nullable text, optional
**culture** as nullable text) as nullable text
About
Returns a textual representation of dateTime , the datetime value, dateTime . This function takes in an optional
format parameter format . For a complete list of supported formats, please refer to the Library specification
document.
Example 1
Get a textual representation of #datetime(2011, 12, 31, 11, 56, 2).
Example 2
Get a textual representation of #datetime(2011, 12, 31, 11, 56, 2) with format option.
"2010/12/31T11:56:02"
#datetime
11/5/2018 • 2 minutes to read
Syntax
#datetime(year as number, month as number, day as number, hour as number, minute as number, second
as number) as any
About
Creates a datetime value from whole numbers year year , month month , day day , hour hour , minute minute ,
and (fractional) second second . Raises an error if these are not true:
1 ≤ year ≤ 9999
1 ≤ month ≤ 12
1 ≤ day ≤ 31
0 ≤ hour ≤ 23
0 ≤ minute ≤ 59
0 ≤ second ≤ 59
DateTimeZone functions
11/5/2018 • 2 minutes to read
DateTimeZone
FUNCTION DESCRIPTION
DateTimeZone.FixedUtcNow Returns the current date and time in UTC (the GMT timezone).
DateTimeZone.LocalNow Returns a DateTime value set to the current system date and
time.
DateTimeZone.UtcNow Returns a DateTime value set to the current system date and
time in the Utc timezone.
About
Returns a DateTimeZone value set to the current date, time, and timezone offset on the system. This value is fixed
and will not change with successive calls, unlike DateTime.LocalNow, which may return different values over the
course of execution of an expression.
Syntax
DateTimeZone.FixedLocalNow() as datetimezone
DateTimeZone.FixedUtcNow
11/5/2018 • 2 minutes to read
About
Returns the current date and time in UTC (the GMT timezone). This value is fixed and will not change with
successive calls.
Syntax
DateTimeZone.FixedUtcNow() as datetimezone
DateTimeZone.From
11/5/2018 • 2 minutes to read
About
Returns a datetimezone value from a value.
Syntax
DateTimeZone.From(value as any, optional culture as nullable text) as nullable datetimezone
Arguments
ARGUMENT DESCRIPTION
Type to convert
TYPE DESCRIPTION
Remarks
If a value is null, DateTimeZone.From returns null.
If a value is datetimezone , the same value is returned.
Example
DateTimeZone.From("2020-10-30T01:30:00-08:00") equals #datetimezone(2020, 10, 30, 01, 30, 00, -8, 00)
DateTimeZone.FromFileTime
11/5/2018 • 2 minutes to read
About
Returns a DateTimeZone from a number value.
Syntax
DateTimeZone.FromFileTime(fileTime as nullable number) as nullable datetimezone
Arguments
ARGUMENT DESCRIPTION
fileTime The fileTime is a Windows file time value that represents the
number of 100-nanoseconds intervals that have elapsed since
12:00 midnight, January 1, 1601 A.D. (C.E.) Coordinated
Universal Time (UTC).
Example
DateTimeZone.FromFileTime(12987640252984224) equals #datetimezone(2012, 7, 24, 14, 50, 52.9842245, -7, 0)
DateTimeZone.FromText
11/5/2018 • 2 minutes to read
About
Returns a DateTimeZone value from a set of date formats and culture value.
Syntax
DateTimeZone.FromText(dateTimeZone as nullable text, optional culture as nullable text) as
nullable datetimezone
Arguments
ARGUMENT DESCRIPTION
dateTimeZone
DateTimeZone formats
YYYY -MM -DDThh:mmhh:mm
YYYYMMDDThh:mmhh:mm
YYYY -MM -DDThh:mm:sshh:mm
YYYYMMDDThh:mm:sshh:mm
YYYY -MM -DDThh:mm:ss.nnnnnnnhh:mm
YYYYMMDDThh:mm:ss.nnnnnnnhh:mm
YYYY -MM -DDThh:mm-hh:mm
YYYYMMDDThh:mm-hh:mm
YYYY -MM -DDThh:mm:ss-hh:mm
YYYYMMDDThh:mm:ss-hh:mm
YYYY -MM -DDThh:mm:ss.nnnnnnn-hh:mm
YYYYMMDDThh:mm:ss.nnnnnnn-hh:mm
YYYY -MM -DDThh:mmZ
YYYYMMDDThh:mmZ
YYYY -MM -DDThh:mm:ssZ
YYYYMMDDThh:mm:ssZ
YYYY -MM -DDThh:mm:ss.nnnnnnnZ
YYYYMMDDThh:mm:ss.nnnnnnnZ
Terms
Y = years
M = months
D = days
h = hours
m = minutes
s = seconds
n = fractional seconds
TZD = time zone designator
Examples
DateTime.FromText("2010-12-31T01:30:00") equals YYYY-MM-DDThh:mm:ss
About
Returns a DateTime value set to the current system date and time.
Syntax
DateTimeZone.LocalNow() as datetimezone
Remarks
The return value contains timezone information representing the local timezone.
Example
DateTimeZone.LocalNow() equals 2011-02-20T22:19:38-08:00
DateTimeZone.RemoveZone
11/5/2018 • 2 minutes to read
About
Returns a datetime value with the zone information removed from the input datetimezone value.
Syntax
DateTimeZone.RemoveZone(dateTimeZone as datetimezone) as nullable datetime
Arguments
ARGUMENT DESCRIPTION
Example
DateTimeZone.RemoveZone(#datetimezone(2010, 5, 4, 14, 5, 5, 8, 0)) equals #datetime(2010, 5, 4, 14, 5, 5)
DateTimeZone.SwitchZone
11/5/2018 • 2 minutes to read
About
Changes the timezone information for the input DateTimeZone.
Syntax
DateTimeZone(dateTimeZone as datetimezone, timezoneHours as number, optional timezoneMinutes as
nullablenumber ) as nullable datetimezone
Arguments
ARGUMENT DESCRIPTION
Remarks
If the input value does not have a timezone component, DateTimeZone.SwitchZone throws Expression.Error.
Examples
DateTimeZone.SwitchZone(#datetimezone(2010, 5, 4, 6, 5, 5, 0, 0), 8) equals #datetimezone(2010, 5, 4, 14, 5,
5, 8, 0)
DateTimeZone.SwitchZone(#datetimezone(2010, 12, 31, 11, 56, 02, 7, 30), 0, -30) equals #datetimezone(2010, 12,
31, 3, 56, 2, 0, -30)
DateTimeZone.ToLocal
11/5/2018 • 2 minutes to read
About
Returns a DateTime value from the local time zone.
Syntax
DateTimeZone.ToLocal(dateTime as datetimezone) as nullable datetimezone
Arguments
ARGUMENT DESCRIPTION
Example
//assuming local as PST
dateTime = DateTimeZone.FromText("2011-02-20T22:19:27+03:00")
localTime=DateTimeZone.ToLocal(dateTime) equals 2011-02-20T11:19:27-08:00
DateTimeZone.ToRecord
11/5/2018 • 2 minutes to read
About
Returns a record containing parts of a DateTime value.
Syntax
DateTimeZone.ToRecord(dateTimeZone as datetimezone) as record
Arguments
ARGUMENT DESCRIPTION
Remarks
If a portion of the DateTime value is not specified with date, time or timezone, the corresponding part in the
output record is not present.
Example
DateTime.ToRecord(DateTime.FromText("2011-02-02T11:56:02-08:00")) equals
Year = 2011, Month = 2, Day = 2,
Hour = 11, Minute = 56, Second = 2,
Hours = -8, Minutes = 0
]
DateTime.ToParts(DateTime.From("11:56:02-05"))
[
Time = [Hour = 11, Minute = 56, Second = 2],
Timezone = [Hours = -5]
]
DateTimeZone.ToText
11/5/2018 • 2 minutes to read
Syntax
DateTimeZone.ToText(**dateTimeZone** as nullable datetimezone, optional **format** as nullable
text, optional **culture** as nullable text) as nullable text
About
Returns a textual representation of dateTimeZone , the datetimezone value, dateTimeZone . This function takes in an
optional format parameter format . For a complete list of supported formats, please refer to the Library
specification document.
Example 1
Get a textual representation of #datetimezone(2011, 12, 31, 11, 56, 2, 8, 0).
Example 2
Get a textual representation of #datetimezone(2010, 12, 31, 11, 56, 2, 10, 12) with format option.
"2010/12/31T11:56:02+10:12"
DateTimeZone.ToUtc
11/5/2018 • 2 minutes to read
About
Returns a DateTime value to the Utc time zone.
Syntax
DateTimeZone.ToUtc(dateTime as datetimezone) as nullable datetimezone
Arguments
ARGUMENT DESCRIPTION
Example
dateTime = DateTimeZone.FromText("2011-02-20T22:19:27+03:00")
About
Returns a DateTime value set to the current system date and time in the Utc timezone.
Syntax
DateTimeZone.UtcNow() as datetimezone
Remarks
The return value contains timezone information for the Utc timezone (00:00).
Example
DateTimeZone.UtcNow() equals 2011-02-21T06:25:51+00:00
DateTimeZone.ZoneHours
11/5/2018 • 2 minutes to read
About
Returns a time zone hour value from a DateTime value.
Syntax
DateTimeZone.ZoneHours(dateTime as datetimezone) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
DateTimeZone.ZoneHours(DateTime.FromText("12:56:20-08:00")) equals -8
DateTimeZone.ZoneMinutes
11/5/2018 • 2 minutes to read
Syntax
DateTimeZone.ZoneHours(**dateTimeZone** as nullable datetimezone) as nullable number
About
Changes the timezone of the value.
#datetimezone
11/5/2018 • 2 minutes to read
Syntax
#datetimezone(year as number, month as number, day as number, hour as number, minute as number,
second as number, offsetHours as number, offsetMinutes as number) as any
About
Creates a datetimezone value from whole numbers year year , month month , day day , hour hour , minute
minute , (fractional) second second , (fractional) offset-hours offsetHours , and offset-minutes offsetMinutes .
Raises an error if these are not true:
1 ≤ year ≤ 9999
1 ≤ month ≤ 12
1 ≤ day ≤ 31
0 ≤ hour ≤ 23
0 ≤ minute ≤ 59
0 ≤ second ≤ 59
-14 ≤ offset-hours + offset-minutes / 60 ≤ 14
Duration functions
11/5/2018 • 2 minutes to read
Duration
FUNCTION DESCRIPTION
About
Returns the day component of a Duration value.
Syntax
Duration.Days(duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns a duration value from a value.
Syntax
Duration.From(value as any) as nullable duration
Arguments
ARGUMENT DESCRIPTION
Remarks
If a value is null, Duration.From returns null.
If a value is duration, the same value is returned.
Example
Duration.From(2.525) equals #duration(2,12,36,0)
Duration.FromText
11/5/2018 • 2 minutes to read
About
Returns a Duration value from a text value.
Syntax
Duration.FromText(duration as nullable text) as nullable duration
Arguments
ARGUMENT DESCRIPTION
Duration settings
FORMAT
[-]hh:mm[:ss]
[-]ddd.hh:mm[:ss]
[-] The text value is prepended with an optional negative sign [-]
to indicate a negative duration value.
[d] The [d] part represents the day portion of the duration value.
[m] The [m] part represents the minute portion of the duration
value.
[s] The [s] part represents the second portion of the duration
value.
Examples
Duration.FromText("15:35") equals 15 hours, 35 minutes
Duration.FromText("2.15:00") equals 2 days, 15 hours
Duration.Hours
11/5/2018 • 2 minutes to read
About
Returns an hour component of a Duration value.
Syntax
Duration.Hours(duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns a minute component of a Duration value.
Syntax
Duration.Minutes(duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns a second component of a Duration value.
Syntax
Duration.Seconds(duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
duration1 = Duration.FromText("2.05:55:20")
duration2 = Duration.FromText("15:50")
Duration.Days(duration1) equals 2
Duration.Hours(duration1) equals 5
Duration.Minutes(duration1) equals 55
Duration.Seconds(duration1) equals 20
Duration.Seconds(duration2) equals 0
Duration.ToRecord
11/5/2018 • 2 minutes to read
About
Returns a record with parts of a Duration value.
Syntax
Duration.ToRecords(duration as duration) as record
Arguments
ARGUMENT DESCRIPTION
Example
Duration.ToRecord(#duration(2, 5, 55, 20)) equals [Days=2, Hours=5, Minutes=55, Seconds=20]
Duration.TotalDays
11/5/2018 • 2 minutes to read
About
Returns the total magnitude of days from a Duration value.
Syntax
Duration.TotalDays(duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns the total magnitude of hours from a Duration value.
Syntax
Duration.TotalHours(duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns the total magnitude of minutes from a Duration value.
Syntax
Duration.TotalMinutes(duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns the total magnitude of seconds from a duration value.
Syntax
Duration.TotalSeconds(duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
let
duration = #duration(2,22,120,20)
in
[
totaldays= Duration.TotalDays(duration) equals 3.0002
totalhours= Duration.TotalHours(duration) equals 72.005
totalminutes= Duration.TotalMinutes(duration) equals 4320.33
totalseconds=Duration.TotalSeconds(duration) equals 259220
]
Duration.ToText
1/16/2019 • 2 minutes to read
Syntax
Duration.ToText(duration as nullable duration, optional format as nullable text) as nullable text
About
Returns a textual representation in the form "day.hour:mins:sec" of the given duration value, duration . A text value
that specifies the format can be provided as an optional second parameter, format .
duration : A duration from which the textual representation is calculated.
format : [Optional] A text value that specifies the format.
Example 1
Convert #duration(2, 5, 55, 20) into a text value.
"2.05:55:20"
#duration
11/5/2018 • 2 minutes to read
Syntax
#duration(days as number, hours as number, minutes as number, seconds as number) as duration
About
Creates a duration value from numbers days days , hours hours , minutes minutes , and seconds seconds .
Error handling
11/5/2018 • 2 minutes to read
Error
FUNCTION DESCRIPTION
Syntax
Diagnostics.ActivityId() as nullable text
About
Returns an opaque identifier for the currently-running evaluation.
Diagnostics.Trace
1/16/2019 • 2 minutes to read
Syntax
Diagnostics.Trace(traceLevel as number, message as anynonnull, value as any, optional delayed as
nullable logical) as any
About
Writes a trace message , if tracing is enabled, and returns value . An optional parameter delayed specifies whether
to delay the evaluation of value until the message is traced. traceLevel can take one of the following values:
TraceLevel.Critical
TraceLevel.Error
TraceLevel.Warning
TraceLevel.Information
TraceLevel.Verbose
Example 1
Trace the message before invoking Text.From function and return the result.
"123"
Error.Record
11/5/2018 • 2 minutes to read
About
Returns a record containing fields “Reason”, “Message”, and “Detail” set to the provided values. The record can be
used to raise or throw an error.
Syntax
Error.Record(reason as text, message as text, detail as any) as record
Arguments
ARGUMENT DESCRIPTION
Example
error Error.Record("InvalidCondition","An error has occured", null)
equals error with Reason: “InvalidCondition” and Message “An error has occurred”
TraceLevel.Critical
11/5/2018 • 2 minutes to read
About
Returns 1, the value for Critical trace level.
TraceLevel.Error
11/5/2018 • 2 minutes to read
About
Returns 2, the value for Error trace level.
TraceLevel.Information
11/5/2018 • 2 minutes to read
About
Returns 4, the value for Information trace level.
TraceLevel.Verbose
11/5/2018 • 2 minutes to read
About
Returns 5, the value for Verbose trace level.
TraceLevel.Warning
11/5/2018 • 2 minutes to read
About
Returns 3, the value for Warning trace level.
Expression functions
11/5/2018 • 2 minutes to read
Expression
FUNCTION DESCRIPTION
About
Returns a constant text literal from a value.
Syntax
Expression.Constant(value as any) as text
Arguments
ARGUMENT DESCRIPTION
Examples
Expression.Constant(1) equals "1"
About
Evaluates a Text expression and returns the evaluated value.
Syntax
Expression.Evaluate(expression as text, optional environment as [...]) as any
Arguments
ARGUMENT DESCRIPTION
Examples
Expression.Evaluate("1 + 1")
equals 2
Expression.Evaluate("1 +")
equals Error
Expression.Evaluate(
"section Section1; shared X = 1;"
)
About
Returns a text value that can be used as an identifier from a text value.
Syntax
Expression.Identifier(name as text) as text
Arguments
ARGUMENT DESCRIPTION
Examples
Expression.Identifier("foo")
equals "foo"
Expression.Identifier("10 lbs")
Expression.Identifier("try")
equals "#""try"""
Expression.Identifier("")
equals "#"""""
Expression.Identifier(null)
equals Error
equals 1
Function values
11/5/2018 • 2 minutes to read
Function
FUNCTION DESCRIPTION
Function.Invoke Invokes the given function using the specified and returns the
result.
Syntax
Function.From(functionType as type, function as function) as function
About
Takes a unary function function and creates a new function with the type functionType that constructs a list out
of its arguments and passes it to function .
Example 1
Converts List.Sum into a two-argument function whose arguments are added together.
Example 2
Converts a function taking a list into a two-argument function.
Function.From(type function (a as text, b as text) as text, (list) => list{0} & list{1})("2", "1")
"21"
Function.Invoke
11/5/2018 • 2 minutes to read
About
Invokes the given function using the specified Arguments and returns the result.
Syntax
Function.Invoke(function as function, args as list) as any
Arguments
ARGUMENT DESCRIPTION
Example
Function.Invoke(Record.FieldNames, {[A=1,B=2]}) equals {"A", "B"}
Function.InvokeAfter
11/5/2018 • 2 minutes to read
Syntax
Function.InvokeAfter(function as function, delay as duration) as any
About
Returns the result of invoking function after duration delay has passed.
Function.IsDataSource
11/5/2018 • 2 minutes to read
Syntax
Function.IsDataSource(function as function) as logical
About
Returns whether or not function is considered a data source.
Function.ScalarVector
11/5/2018 • 2 minutes to read
Syntax
Function.ScalarVector(scalarFunctionType as type, vectorFunction as function) as function
About
Returns a scalar function of type scalarFunctionType that invokes vectorFunction with a single row of arguments
and returns its single output. Additionally, when the scalar function is repeatedly applied for each row of a table of
inputs, such as in Table.AddColumn, instead vectorFunction will be applied once for all inputs.
vectorFunction will be passed a table whose columns match in name and position the parameters of
scalarFunctionType . Each row of this table contains the arguments for one call to the scalar function, with the
columns corresponding to the parameters of scalarFunctionType .
vectorFunction must return a list of the same length as the input table, whose item at each position must be the
same result as evaluating the scalar function on the input row of the same position.
The input table is expected to be streamed in, so vectorFunction is expected to stream its output as input comes in,
only working with one chunk of input at a time. In particular, vectorFunction must not enumerate its input table
more than once.
Lines functions
11/5/2018 • 2 minutes to read
Lines
FUNCTION DESCRIPTION
Lines.ToBinary Converts a list of text into a binary value using the specified
encoding and lineSeparator.The specified lineSeparator is
appended to each line. If not specified then the carriage return
and line feed characters are used.
Syntax
Lines.FromBinary(**binary** as binary, optional **quoteStyle** as nullable number, optional
**includeLineSeparators** as nullable logical, optional **encoding** as nullable number) as list
About
Converts a binary value to a list of text values split at lines breaks. If a quote style is specified, then line breaks may
appear within quotes. If includeLineSeparators is true, then the line break characters are included in the text.
Lines.FromText
11/5/2018 • 2 minutes to read
About
Converts a text value to a list of text values split at lines breaks.
Syntax
Lines.FromText(text as text, optional quoteStyle as nullable number, optional
includeLineSeparators as nullable logical) as list
Arguments
ARGUMENT DESCRIPTION
About
Converts a list of text into a binary value using the specified encoding and lineSeparator.The specified
lineSeparator is appended to each line. If not specified then the carriage return and line feed characters are used.
Syntax
Lines.ToBinary(lines as list, optional lineSeparator as nullable text, optional encoding as
nullable number, optional includeByteOrderMark as nullable logical)as binary
Arguments
ARGUMENT DESCRIPTION
optional lineSeparator Determines whether the line break characters are included in
the line. This is useful when the actual line break is significant
and needs to be preserved. If not specified, then it defaults to
false.If includeLineSeparators is true, then the line break
characters are included in the text.
Binary encoding
BinaryEncoding.Base64 = 0;
BinaryEncoding.Hex = 1;
Lines.ToText
11/5/2018 • 2 minutes to read
About
Converts a list of text into a single text. The specified lineSeparator is appended to each line. If not specified then
the carriage return and line feed characters are used.
Syntax
Lines.ToText (lines as list, optional lineSeparator as nullable text) as text
Arguments
ARGUMENT DESCRIPTION
optional lineSeparator Determines whether the line break characters are included in
the line. This is useful when the actual line break is significant
and needs to be preserved. If not specified, then it defaults to
false.If includeLineSeparators is true, then the line break
characters are included in the text.
Examples
Lines.FromText("A,""B#(cr)C""#(cr)#(lf)1,2", true, null)
{
"A,""B#(cr)",
"C""#(cr)#(lf)",
"1,2"
}
Lines.FromText("A,""B#(cr)C""#(cr)#(lf)1,2")
{
"A,""B",
"C""",
"1,2"
}
The Power Query Formula Language (informally known as "M") is a powerful mashup query language
optimized for building queries that mashup data. It is a functional, case sensitive language similar to F#, which can
be used with Power Query in Excel and Power BI Desktop . To learn more, see the Power Query Formula Language
(informally known as "M").
Information
FUNCTION DESCRIPTION
Selection
FUNCTION DESCRIPTION
List.Alternate Returns a list with the items alternated from the original list
based on a count, optional repeatInterval, and an optional
offset.
List.Buffer Buffers the list in memory. The result of this call is a stable list,
which means it will have a determinimic count, and order of
items.
List.First Returns the first value of the list or the specified default if
empty. Returns the first item in the list, or the optional default
value, if the list is empty. If the list is empty and a default value
is not specified, the function returns.
List.FirstN Returns the first set of items in the list by specifying how
many items to return or a qualifying condition provided by
countOrCondition.
List.InsertRange Inserts items from values at the given index in the input list.
List.Last Returns the last set of items in the list by specifying how many
items to return or a qualifying condition provided by
countOrCondition.
List.LastN Returns the last set of items in a list by specifying how many
items to return or a qualifying condition.
List.Skip Skips the first item of the list. Given an empty list, it returns an
empty list. This function takes an optional parameter
countOrCondition to support skipping multiple values.
Transformation functions
FUNCTION DESCRIPTION
List.Accumulate Accumulates a result from the list. Starting from the initial
value seed this function applies the accumulator function and
returns the final result.
List.RemoveRange Returns a list that removes count items starting at offset. The
default count is 1.
List.RemoveItems Removes items from list1 that are present in list2, and returns
a new list.
List.Repeat Returns a list that repeats the contents of an input list count
times.
List.ReplaceValue Searches a list of values for the value and replaces each
occurrence with the replacement value.
List.Split Splits the specified list into a list of lists using the specified
page size.
List.Transform Performs the function on each item in the list and returns the
new list.
List.TransformMany Returns a list whose elements are projected from the input list.
Membership functions
Since all values can be tested for equality, these functions can operate over heterogeneous lists.
FUNCTION DESCRIPTION
List.PositionOf Finds the first occurrence of a value in a list and returns its
position.
List.PositionOfAny Finds the first occurrence of any value in values and returns its
position.
Set operations
FUNCTION DESCRIPTION
List.Intersect Returns a list from a list of lists and intersects common items
in individual lists. Duplicate values are supported.
List.Union Returns a list from a list of lists and unions the items in the
individual lists. The returned list contains all items in any input
lists. Duplicate values are matched as part of the Union.
Ordering
Ordering functions perform comparisons. All values that are compared must be comparable with each other. This
means they must all come from the same datatype (or include null, which always compares smallest). Otherwise,
an Expression.Error is thrown.
Comparable data types
Number
Duration
DateTime
Text
Logical
Null
FUNCTION DESCRIPTION
List.MaxN Returns the maximum values in the list. After the rows are
sorted, optional parameters may be specified to further filter
the result
Averages
These functions operate over homogeneous lists of Numbers, DateTimes, and Durations.
FUNCTION DESCRIPTION
List.Modes Returns all items that appear with the same maximum
frequency.
Addition
These functions work over homogeneous lists of Numbers or Durations.
FUNCTION DESCRIPTION
Numerics
These functions only work over numbers.
FUNCTION DESCRIPTION
Generators
These functions generate list of values.
FUNCTION DESCRIPTION
List.Dates Returns a list of date values from size count, starting at start
and adds an increment to every value.
Parameter values
Occurrence specification
Occurrence.First = 0;
Occurrence.Last = 1;
Occurrence.All = 2;
Sort order
Order.Ascending = 0;
Order.Descending = 1;
Equation criteria
Equation criteria for list values can be specified as either a
A function value that is either
A key selector that determines the value in the list to apply the equality criteria, or
A comparer function that is used to specify the kind of comparison to apply. Built in comparer
functions can be specified, see section for Comparer functions.
A list value which has
Exactly two items
The first element is the key selector as specified above
The second element is a comparer as specified above.
For more information and examples, see List.Distinct.
Comparison criteria
Comparison criterion can be provided as either of the following values:
A number value to specify a sort order. For more inforarmtion, see sort order in Parameter values.
To compute a key to be used for sorting, a function of 1 argument can be used.
To both select a key and control order, comparison criterion can be a list containing the key and order.
To completely control the comparison, a function of 2 arguments can be used that returns -1, 0, or 1 given
the relationship between the left and right inputs. Value.Compare is a method that can be used to delegate
this logic.
For more information and examples, see List.Sort.
Replacement operations
Replacement operations are specified by a list value, each item of this list must be
A list value of exactly two items
Fist item is the old value in the list, to be replaced
Second item is the new which should replace all occurrences of the old value in the list
List.Accumulate
11/5/2018 • 2 minutes to read
About
Accumulates a result from the list. Starting from the initial value seed this function applies the accumulator
function and returns the final result.
Syntax
List.Accumulate(list as list, seed as any, accumulator as function)as any
Arguments
ARGUMENT DESCRIPTION
Example
// This accumulates the sum of the numbers in the list provided.
List.Accumulate({1, 2, 3, 4, 5}, 0, (state, current) => state + current) equals 15
List.AllTrue
11/5/2018 • 2 minutes to read
About
Returns true if all expressions in a list are true
Syntax
List.AllTrue(list as list) as logical
Arguments
ARGUMENT DESCRIPTION
Example
List.AllTrue({true, 2=2}) equals true
List.Alternate
11/5/2018 • 2 minutes to read
About
Returns a list with the items alternated from the original list based on a count, optional repeatInterval, and an
optional offset.
Syntax
List.Alternate(list as list, count as number, optional repeatInterval as nullable number,
optional offset as nullable number) as list
Arguments
ARGUMENT DESCRIPTION
Remarks
If the repeatInterval and offset are not provided then List.Alternate is equivalent to List.Skip.
Example
List.Alternate({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 2, 2, 0) equals {3, 4, 7, 8}
List.AnyTrue
11/5/2018 • 2 minutes to read
About
Returns true if any expression in a list in true
Syntax
List.AnyTrue(list as list) as logical
Arguments
ARGUMENT DESCRIPTION
Example
List.AnyTrue({2=0, false, 1 < 0 }) equals false
List.Average
11/5/2018 • 2 minutes to read
About
Returns an average value from a list in the datatype of the values in the list.
Syntax
List.Average(list as list) as any
Arguments
ARGUMENT DESCRIPTION
Remarks
If the list is empty, an Expression.Error is thrown.
Examples
List.Average({1, 2, 3}) equals 2
About
Buffers the list in memory. The result of this call is a stable list, which means it will have a determinimic count, and
order of items.
Syntax
List.Buffer(list as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
List.Buffer(Sql:Database("localhost","northwind")[Customers]) equals stable copy of table Customers
List.Combine
11/5/2018 • 2 minutes to read
About
Merges a list of lists into single list.
Syntax
List.Combine(list as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
List.Combine({ {1, 2, 3, 4}, {5, 6, 7}, {8, 9} }) equals {1, 2, 3, 4, 5, 6, 7, 8, 9}
List.Contains
11/5/2018 • 2 minutes to read
About
Returns true if a value is found in a list.
Syntax
List.Contains(list as list, value as any, optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
List.Contains({1, 2, 3}, 2) equals true
About
Returns true if all items in values are found in a list.
Syntax
List.ContainsAll(list as list, values as list,optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
List.ContainsAll({1, 2, 3}, {2, 3}) equals true
About
Returns true if any item in values is found in a list.
Syntax
List.ContainsAny(list as list, values as list,optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
List.ContainsAny({1, 2, 3}, {2, 4}) equals true
About
Returns the number of items in a list.
Syntax
List.Count(list as list) as number
Arguments
ARGUMENT DESCRIPTION
Examples
List.Count({1,2,3}) equals 3
List.Count({}) equals 0
List.Covariance
11/5/2018 • 2 minutes to read
About
Returns the covariance from two lists as a number.
Syntax
List.Covariance(list1 as list, list2 as list) as number
Arguments
ARGUMENT DESCRIPTION
Syntax
List.Dates(**start** as date, **count** as number, **step** as duration) as list
About
Returns a list of date values of size count , starting at start . The given increment, step , is a duration value
that is added to every value.
Example 1
Create a list of 5 values starting from New Year's Eve (#date(2011, 12, 31)) incrementing by 1 day(#duration(1, 0,
0, 0)).
12/31/2011 12:00:00 AM
1/1/2012 12:00:00 AM
1/2/2012 12:00:00 AM
1/3/2012 12:00:00 AM
1/4/2012 12:00:00 AM
List.DateTimes
11/5/2018 • 2 minutes to read
Syntax
List.DateTimes(start as datetime, count as number, step as duration) as list
About
Returns a list of datetime values of size count , starting at start . The given increment, step , is a duration value
that is added to every value.
Example
Create a list of 10 values starting from 5 minutes before New Year's Day (#datetime(2011, 12, 31, 23, 55, 0))
incrementing by 1 minute (#duration(0, 0, 1, 0)).
12/31/2011 11:55:00 PM
12/31/2011 11:56:00 PM
12/31/2011 11:57:00 PM
12/31/2011 11:58:00 PM
12/31/2011 11:59:00 PM
1/1/2012 12:00:00 AM
1/1/2012 12:01:00 AM
1/1/2012 12:02:00 AM
1/1/2012 12:03:00 AM
1/1/2012 12:04:00 AM
List.DateTimeZones
11/5/2018 • 2 minutes to read
About
Returns a list of of datetimezone values from size count, starting at start and adds an increment to every value.
Syntax
List.DateTimeZones(start as datetimezone, count as number, increment as duration) as { datetime }
Arguments
ARGUMENT DESCRIPTION
Example
List.DateTimeZones(#datetimezone(2011, 12, 31, 23, 55, 0, -8, 0), 10, #duration(0, 0, 1, 0))
equals
#datetimezone(2012, 1, 1, 0, 4, 0, -8, 0)
}
List.Difference
11/5/2018 • 2 minutes to read
About
Returns the items in list 1 that do not appear in list 2. Duplicate values are supported.
Syntax
List.Difference(list1 as list, list2 as list,optional equationCriteria as any) as list
Arguments
ARGUMENT DESCRIPTION
Examples
List.Difference({1..10}, {2..3,5..7}) equals {1,4,8,9,10}
About
Filters a list down by removing duplicates. An optional equation criteria value can be specified to control equality
comparison. The first value from each equality group is chosen.
For more information about equationCriteria, see Parameter Values.
Syntax
List.Distinct(list as list, optional equationCriteria as any, criteria as any) as list
Arguments
ARGUMENT DESCRIPTION
Examples
List.Distinct({1, 2, 3, 2, 3}) equals {1, 2, 3}
List.Distint({[a="a",b=2],[a="b",b=3],[a="A",b=4]},
{ each [a] , Comparer.FromCulture("en", true) } )
equals { [ a = "a", b = 2 ],
// [a = "b", b = 3 ] }
List.Durations
11/5/2018 • 2 minutes to read
Syntax
List.Durations(**start** as duration, **count** as number, **step** as duration) as list
About
Returns a list of count duration values, starting at start and incremented by the given duration step .
Example
Create a list of 5 values starting 1 hour and incrementing by an hour.
01:00:00
02:00:00
03:00:00
04:00:00
05:00:00
List.FindText
11/5/2018 • 2 minutes to read
About
Searches a list of values, including record fields, for a text value.
Syntax
List.FindText(list as list, text as text) as list
Arguments
ARGUMENT DESCRIPTION
Example
List.FindText(
[field1 = 1, field2 = 2 ]
}, "test")
equals
List.FindText(
[ Field1 = 1, Field2 = 2 ]
}, "hello")
equals
}
List.First
11/5/2018 • 2 minutes to read
About
Returns the first value of the list or the specified default if empty. Returns the first item in the list, or the optional
default value, if the list is empty. If the list is empty and a default value is not specified, the function returns.
Syntax
List.First(list as list, optional defaultValue as any) as any
Arguments
ARGUMENT DESCRIPTION
Examples
List.First({1, 2, 3}) equals 1
About
Returns the first set of items in the list by specifying how many items to return or a qualifying condition provided
by countOrCondition.
Syntax
List.FirstN(list as list, countOrCondition as any) as any
Arguments
ARGUMENT DESCRIPTION
Remarks
If a number is specified, up to that many items are returned.
If a condition is specified as a function, all items are returned that initially meet the condition.
Once an item fails the condition, no further items are considered.
Examples
List.FirstN({3, 4, 5, -1, 7, 8, 2}, 2) equals {3, 4}
Syntax
List.Generate(initial as function, condition as function, next as function, optional selector as
nullable function) as list
About
Generates a list of values given four functions that generate the initial value initial , test against a condition
condition , and if successful select the result and generate the next value next . An optional parameter, selector ,
may also be specified.
Example 1
Create a list that starts at 10, remains greater than 0 and decrements by 1.
10
Example 2
Generate a list of records containing x and y, where x is a value and y is a list. x should remain less than 10 and
represent the number of items in the list y. After the list is generated, return only the x values.
List.Generate(()=> [ x = 1 , y = {}] , each [x] < 10 , each [x = List.Count([y]), y = [y] & {x}] , each [x])
1
9
List.InsertRange
11/5/2018 • 2 minutes to read
About
Inserts items from values at the given index in the input list.
Syntax
List.InsertRange(list as list, offset as number, values as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
List.InsertRange({"A", "B", "D"}, 2, {"C"}) equals {"A", "B", "C", "D"}
List.Intersect
11/5/2018 • 2 minutes to read
About
Returns a list from a list of lists and intersects common items in individual lists. Duplicate values are supported.
Syntax
List.Intersect(list as list /* { List } */,optional equationCriteria as any) as list
Arguments
ARGUMENT DESCRIPTION
Remarks
If nothing is common in all lists, an empty list is returned.
Examples
List.Intersect({ {1..5}, {2..6}, {3..7} }) equals {3..5}
About
Returns whether a list is distinct.
Syntax
List.IsDistinct(list as list, optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
List.IsDistinct({1, 2, 3, 2, 3}) equals false
About
Returns whether a list is empty.
Syntax
List.IsEmpty(list as list) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
List.IsEmpty({}) equals true
About
Returns the last set of items in the list by specifying how many items to return or a qualifying condition provided
by countOrCondition.
Syntax
List.Last(list as list, optional defaultValue as any) as any
Arguments
ARGUMENT DESCRIPTION
Remarks
If a number is specified, up to that many items are returned.
If a condition is specified, all items are returned that initially meet the condition. Once an item fails the
condition, no further items are considered.
Examples
List.Last({1, 2, 3}) equals 3
List.LastN
11/5/2018 • 2 minutes to read
About
Returns the last set of items in a list by specifying how many items to return or a qualifying condition.
Syntax
List.LastN(list as list, optional countOrCondition as any) as any
Arguments
ARGUMENT DESCRIPTION
Remarks
If a number is specified, up to that many items are returned.
If a condition is specified, all items are returned that initially meet the condition.
Once an item fails the condition, no further items are considered
Example
List.LastN({3, 4, 5, -1, 7, 8, 2},1) equals { 2 }
List.MatchesAll
11/5/2018 • 2 minutes to read
About
Returns true if all items in a list meet a condition.
Syntax
List.MatchesAll(list as list, condition as Function) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
List.MatchesAll({2, 4, 6}, each Number.Mod(_,2) = 0) equals true
About
Returns true if any item in a list meets a condition.
Syntax
List.MatchesAny(list as list, condition as Function) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
List.MatchesAny({2, 4, 6}, each Number.Mod(_, 2) = 0) equals true
About
Returns the maximum item in a list, or the optional default value if the list is empty.
Syntax
List.Max(list as list, optional default as any, optional comparisonCriteria as any, optional
includeNulls as nullable logical) as any
Arguments
ARGUMENT DESCRIPTION
optional includeNulls The Logical value whether or not to include null values in the
return list.
Example
List.Max({1, 4, 7, 3, -2, 5}, 1) equals 7
List.MaxN
11/5/2018 • 2 minutes to read
About
Returns the maximum values in the list. After the rows are sorted, optional parameters may be specified to further
filter the result
Syntax
List.MaxN(list as list, countOrCondition as any, optional comparisonCriteria as any, optional
includeNulls as nullable logical) as list
Arguments
ARGUMENT DESCRIPTION
optional includeNulls The Logical value whether or not to include null values in the
return list.
Example
List.MaxN({3, 4, 5, -1, 7, 8, 2}, 5) equals {8, 7, 5, 4, 3}
List.Median
11/5/2018 • 2 minutes to read
Syntax
List.Median(**list** as list, optional **comparisonCriteria** as any) as any
About
Returns the median item of the list list . This function returns null if the list contains no non- null values. If
there is an even number of items, the function chooses the smaller of the two median items unless the list is
comprised entirely of datetimes, durations, numbers or times, in which case it returns the average of the two items.
Example 1
Find the median of the list {5, 3, 1, 7, 9} .
powerquery-mList.Median({5, 3, 1, 7, 9})
5
List.Min
11/5/2018 • 2 minutes to read
About
Returns the minimum item in a list, or the optional default value if the list is empty.
Syntax
List.Min(list as list, optional default as any, optional comparisonCriteria as any, optional
includeNulls as nullable logical) as any
Arguments
ARGUMENT DESCRIPTION
optional comparisonCriteria Specifies how to compare values in the list. If this argument is
null, the default comparer is used.
optional includeNulls The Logical value whether or not to include null values in the
return list.
Example
List.Min({1, 4, 7, 3, -2, 5}) equals -2
List.MinN
11/5/2018 • 2 minutes to read
About
Returns the minimum values in a list.
Syntax
List.MinN(list as list, countOrCondition as any, optional comparisonCriteria as any, optional
includeNulls as nullable logical) as list
Arguments
ARGUMENT DESCRIPTION
optional includeNulls The Logical value whether or not to include null values in the
return list.
Example
List.MinN({3, 4, 5, -1, 7, 8, 2}, 5) equals {-1, 2, 3, 4, 5}
List.Mode
11/5/2018 • 2 minutes to read
About
Returns an item that appears most commonly in a list.
Syntax
List.Mode(list as list, optional equationCriteria as any)as any
Arguments
ARGUMENT DESCRIPTION
optional equationCriteria Controls the sort order. For more information about equality
comparisons, see Parameter Values.
Remarks
If more than 1 item appears with the same maximum frequency, the last item in the first appearance order is
chosen.
If the list is empty, an Expression.Error is thrown.
Example
List.Mode({"A", 1, 4, 5, 2, "B", 3, 5, 5, 4, 4}) equals 5
List.Modes
11/5/2018 • 2 minutes to read
About
Returns all items that appear with the same maximum frequency.
Syntax
List.Modes(list as list, optional equationCriteria as any)as list
Arguments
ARGUMENT DESCRIPTION
optional equationCriteria Controls the sort order. For more information about equality
comparisons, see Parameter Values.
Remarks
If the list is empty, an Expression.Error is thrown.
Example
List.Modes({"A", 1, 4, 5, 2, "B", 3, 5, 5, "A", 4, 4, "A"}) equals {"A", 4, 5}
List.NonNullCount
11/5/2018 • 2 minutes to read
About
Returns the number of items in a list excluding null values
Syntax
List.NonNullCount(list as list) as number
Arguments
ARGUMENT DESCRIPTION
Example
List.NonNullCount({1, null}) equals 1
List.Numbers
11/5/2018 • 2 minutes to read
About
Returns a list of numbers from size count starting at initial, and adds an increment. The increment defaults to 1.
Syntax
List.Numbers(start as number, count as number, optional increment as nullable number) as { Number
}
Arguments
ARGUMENT DESCRIPTION
Examples
List.Numbers(1, 5) equals {1, 2, 3, 4, 5}
About
Finds the first occurrence of a value in a list and returns its position.
Syntax
List.PositionOf(list as list, value as any, optional occurrence as nullable number,optional
equationCriteria as any) as any
Arguments
ARGUMENT DESCRIPTION
Occurrence settings
SETTING DESCRIPTION
Remarks
If the value is not found in the list, -1 is returned
Examples
List.PositionOf({"A", "B", "C", "D"}, "C") equals 2
About
Finds the first occurrence of any value in values and returns its position.
Syntax
List.PositionOfAny(list as list, values as list, optional occurrence as nullable number, optional
equationCriteria as any) as any
Arguments
ARGUMENT DESCRIPTION
Occurrence settings
SETTING DESCRIPTION
Remarks
If the value is not found in the list, -1 is returned
Examples
List.PositionOfAny({"A", "B", "C", "D"}, {"B", "C"}) equals 1
About
Returns a list of positions for an input list.
Syntax
List.Positions(list as list) as list
Arguments
ARGUMENT DESCRIPTION
Remarks
When using List.Transform to modify a list, the list of positions can be used to give the transform access to the
positions.
Example
List.Positions({4, 5, 6}) equals {0, 1, 2}
List.Product
11/5/2018 • 2 minutes to read
About
Returns the product from a list of numbers.
Syntax
List.Product(list as list) as number
Arguments
ARGUMENT DESCRIPTION
Remarks
If the list is empty, an Expression.Error is thrown.
Examples
List.Product({2, 3, 4}) equals 24
About
Returns a list of random numbers between 0 and 1, given the number of values to generate and an optional seed
value.
count : The number of random values to generate.
seed : [Optional] A numeric value used to seed the random number generator. If omitted a unique list of
random numbers is generated each time you call the function. If you specify the seed value with a number
every call to the function generates the same list of random numbers.
Syntax
List.Random(count as number, optional seed as nullable number) as { Number }
Arguments
ARGUMENT DESCRIPTION
Example
List.Random(10) equals { 0.44298228502412434, 0.11142372065755712, 0.81061893087374925, 0.69705957299892773,
0.84984056970562816, 0.45717397865707704, 0.27344677656583805, 0.51387371612427468, 0.14493200795023331,
0.89694489161341684 }
List.Range
11/5/2018 • 2 minutes to read
About
Returns a count items starting at an offset.
Syntax
List.Range(list as list, offset as number, optional count as number) as list
Arguments
ARGUMENT DESCRIPTION
Example
List.Range({1..10}, 3, 5) equals {4, 5, 6, 7, 8}
List.RemoveFirstN
11/5/2018 • 2 minutes to read
About
Returns a list with the specified number of elements removed from the list starting at the first element. The
number of elements removed depends on the optional countOrCondition parameter.
Syntax
List.RemoveFirstN( table as table, optional countOrCondition as any) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
If countOrCondidtion is omitted only the first element is removed
If countOrCondidtion is a number, that many elements (starting from the top) will be removed)
If countOrCondidtion is a condition, the elements that meet the condition will be removed until an element
does not meet the condition
Examples
List.RemoveFirstN
{1, 2, 3, 4, 5},
equals {4, 5}
List.RemoveFirstN
{5, 4, 2, 6, 1},
each _ > 3
equals { 2, 6, 1}
List.RemoveItems
11/5/2018 • 2 minutes to read
About
Removes items from list1 that are present in list2, and returns a new list.
Syntax
List.RemoveItems(list1 as list, list2 as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
List.RemoveItems({1, 2, 3, 3}, {3}) equals { 1, 2}
List.RemoveLastN
11/5/2018 • 2 minutes to read
About
Returns a list with the specified number of elements removed from the list starting at the last element. The number
of elements removed depends on the optional countOrCondition parameter.
Syntax
List.RemoveRange(list as list, offset as number, optional count as nullable number) as list
Arguments
ARGUMENT DESCRIPTION
Remarks
If countOrCondidtion is omitted only the first element is removed
If countOrCondidtion is a number, that many elements (starting from the top) will be removed)
If countOrCondidtion is a condition, the elements that meet the condition will be removed until an element
does not meet the condition
Examples
List.RemoveLastN
{1, 2, 3, 4, 5},
equals {1, 2}
List.RemoveLastN
{5, 4, 2, 6, 4},
each _ > 3
equals {5, 4, 2}
List.RemoveMatchingItems
11/5/2018 • 2 minutes to read
About
Removes all occurrences of the given values in the list.
Syntax
List.RemoveMatchingItems(list as list, values as list, optional equationCriteria as any) as list
Arguments
ARGUMENT DESCRIPTION
Example
List.RemoveMatchingItems ({"A", "B", "C", "B", "A"}, {"A", "C"}) equals {"B", "B"}
List.RemoveNulls
11/5/2018 • 2 minutes to read
About
Removes null values from a list.
Syntax
List.RemoveNulls(list as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
List.RemoveNulls({1, null, 2}) equals {1, 2}
List.RemoveRange
11/5/2018 • 2 minutes to read
About
Returns a list that removes count items starting at offset. The default count is 1.
Syntax
List.RemoveRange(list as list, offset as number, optional count as nullable number) as list
Arguments
ARGUMENT DESCRIPTION
Examples
List.RemoveRange({"A", "B", "C", "D"}, 2) equals {"A", "B", "D"}
About
Returns a list that repeats the contents of an input list count times.
Syntax
List.Repeat(list as list, count as number) as list
Arguments
ARGUMENT DESCRIPTION
Example
List.Repeat({1, 2, 3}, 3) equals {1, 2, 3, 1, 2, 3, 1, 2, 3}
List.ReplaceMatchingItems
11/5/2018 • 2 minutes to read
About
Replaces occurrences of existing values in the list with new values using the provided equationCriteria. Old and
new values are provided by the replacements parameters. An optional equation criteria value can be specified to
control equality comparisons. For details of replacement operations and equation criteria, see Parameter Values.
Syntax
List.ReplaceMatchingItems(list as list, replacements as any ,optional equationCriteria as any) as
list
Arguments
ARGUMENT DESCRIPTION
Examples
List.ReplaceMatchingItems ({1, 2, 3, 4, 5}, {{2, -2}}) equals { 1, -2, 3, 4, 5}
List.ReplaceMatchingItems ({1, 2, 3, 4, 5}, {{2, -2}, {3, -3}}) equals { 1, -2, -3, 4, 5}
List.ReplaceRange
11/5/2018 • 2 minutes to read
About
Returns a list that replaces count values in a list with a replaceWith list starting at an index.
Syntax
List.ReplaceRange(list as list, index as number, count as number, replaceWith as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
List.ReplaceRange({1, 2, 7, 8, 9, 5}, 2, 3, {3, 4}) equals {1, 2, 3, 4, 5}
List.ReplaceValue
11/5/2018 • 2 minutes to read
About
Searches a list of values for the value and replaces each occurrence with the replacement value.
Syntax
List.ReplaceValue(list as list, oldValue as any, newValue as any, replacer as function) as list
Arguments
ARGUMENT DESCRIPTION
Example
List.ReplaceValue({"a", "B", "a", "a"}, "a", "A", Replacer.ReplaceText) equals {"A", "B", "A", "A"}
List.Reverse
11/5/2018 • 2 minutes to read
About
Returns a list that reverses the items in a list.
Syntax
List.Reverse(list as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
List.Reverse({1, 2, 3, 4, 5}) equals {5, 4, 3, 2, 1}
List.Select
11/5/2018 • 2 minutes to read
About
Selects the items that match a condition.
Syntax
List.Select(list as list, condition as function) as list
Arguments
ARGUMENT DESCRIPTION
Example
List.Select({1, 3, 5}, each _ > 2) equals {3 ,5}
List.Single
11/5/2018 • 2 minutes to read
About
Returns the single item of the list or throws an Expression.Error if the list has more than one item.
Syntax
List.Single(list as list) as any
Arguments
ARGUMENT DESCRIPTION
Examples
List.Single({1}) equals 1
About
Returns a single item from a list.
Syntax
List.SingleOrDefault(list as list, optional default as any) as any
Arguments
ARGUMENT DESCRIPTION
Remarks
If list is empty, a default value is returned instead.
If default is not specified, the default value of null is assumed.
If list has more than one item, an error is returned.
Examples
List.SingleOrDefault({1}) equals 1
List.SingleOrDefault({}, 0) equals 0
List.Skip
11/5/2018 • 2 minutes to read
About
Skips the first item of the list. Given an empty list, it returns an empty list. This function takes an optional
parameter countOrCondition to support skipping multiple values.
Syntax
List.Skip(list as list, optional countOrCondition as any) as list
Arguments
ARGUMENT DESCRIPTION
Remarks
If a number is specified, up to that many items are skipped.
If a condition is specified, all items that meet the condition are skipped. Once an item fails the condition, no
further items are considered.
If this parameter is null, the default behavior is observed.
Examples
List.Skip({3, 4, 5, -1, 7, 8, 2}) equals {4, 5, -1, 7, 8, 2}
List.Skip({}) equals {}
About
Returns a sorted list using comparison criterion.
Syntax
List.Sort(list as list, optional comparisonCriteria as any ) as list
Arguments
ARGUMENT DESCRIPTION
optional comparisonCriteria Controls the sort order. For more information about equality
comparisons, see Parameter Values.
Remarks
To control the order, comparison criterion can be an Order enum value.
To compute a key to be used for sorting, a function with one argument can be used.
To both select a key and control order, comparison criterion can be a list containing the key and order.
To completely control the comparison, a function with two Arguments can be used that returns -1, 0, or 1
given the relationship between the left and right inputs. Value.Compare is a method that can be used to
delegate this logic.
Examples
List.Sort({2, 1}) equals {1, 2}
About
Returns the standard deviation from a list of values. List.StandardDeviation performs a sample based estimate. The
result is a number for numbers, and a duration for DateTimes and Durations.
Syntax
List.StandardDeviation(list as list) as any
Arguments
ARGUMENT DESCRIPTION
Remarks
If the list is empty, an Expression.Error is thrown.
Example
List.StandardDeviation({1..5}) equals 1.5811388300841898
List.Sum
11/5/2018 • 2 minutes to read
About
Returns the sum from a list.
Syntax
List.Sum(list as list) as any
Arguments
ARGUMENT DESCRIPTION
Remarks
If the list is empty, an Expression.Error is thrown.
Examples
List.Sum({1, 2, 3}) equals 6
Syntax
List.Times(**start** as time, **count** as number, **step** as duration) as list
About
Returns a list of time values of size count , starting at start . The given increment, step , is a duration value
that is added to every value.
Example 1
Create a list of 4 values starting from noon (#time(12, 0, 0)) incrementing by one hour (#duration(0, 1, 0, 0)).
12:00:00
13:00:00
14:00:00
15:00:00
List.Transform
11/5/2018 • 2 minutes to read
About
Performs the function on each item in the list and returns the new list.
Syntax
List.Transform(list as list, transform as function) as list
Arguments
ARGUMENT DESCRIPTION
Example
List.Transform({1, 2}, each _ + 1) equals { 2, 3 }
List.TransformMany
11/5/2018 • 2 minutes to read
About
Returns a list whose elements are projected from the input list.
Syntax
List.TransformMany(list as list, collectionTransform as Function, resultTransform as Function) as
list
Arguments
ARGUMENT DESCRIPTION
resultTransform The resultTransform projects the shape of the result and has
the signature (x as any, y as any) => … where x is the element
in list and y is the element obtained by applying the
collectionTransform to that element.
Example
List.TransformMany({1, 2}, (value) => {value + 1}, (oldValue, newValue) => oldValue * newValue) equals { 2, 6
}
List.Union
11/5/2018 • 2 minutes to read
About
Returns a list from a list of lists and unions the items in the individual lists. The returned list contains all items in
any input lists. Duplicate values are matched as part of the Union.
Syntax
List.Union(list as list,optional equationCriteria as any) as list
Arguments
ARGUMENT DESCRIPTION
Examples
List.Union({ {1..5}, {2..6}, {3..7} }) equals {1..7}
Syntax
List.Zip(lists as list) as list
About
Takes a list of lists, lists , and returns a list of lists combining items at the same position.
Example 1
Zips the two simple lists {1, 2} and {3, 4}.
[List]
[List]
Example 2
Zips the two simple lists of different lengths {1, 2} and {3}.
[List]
[List]
Logical functions
11/5/2018 • 2 minutes to read
Logical
FUNCTION DESCRIPTION
Syntax
Logical.From(value as any) as nullable logical
About
Returns a logical value from the given value . If the given value is null , Logical.From returns null . If the
given value is logical , value is returned.
Values of the following types can be converted to a logical value:
text :A logical value from the text value, either "true" or "false" . See Logical.FromText for details.
number : false if value equals 0 , true otherwise.
If value is of any other type, an error is returned.
Example 1
Convert 2 to a logical value.
Logical.From(2)
true
Logical.FromText
11/5/2018 • 2 minutes to read
About
Returns a logical value of true or false from a text value.
Syntax
Logical.FromText(text as nullable text) as nullable logical
Arguments
ARGUMENT DESCRIPTION
Examples
Logical.FromText("true") equals true
About
Returns a text value from a logical value.
Syntax
Logical.ToText(logical as nullable logical) as nullable text
Arguments
ARGUMENT DESCRIPTION
Example
Logical.ToText(true) equals "true"
Number functions
11/5/2018 • 3 minutes to read
Number
Constants
FUNCTION DESCRIPTION
Information
FUNCTION DESCRIPTION
Byte.From Returns a 8-bit integer number value from the given value.
Int8.From Returns a signed 8-bit integer number value from the given
value.
Int16.From Returns a 16-bit integer number value from the given value.
FUNCTION DESCRIPTION
Int32.From Returns a 32-bit integer number value from the given value.
Int64.From Returns a 64-bit integer number value from the given value.
Rounding
FUNCTION DESCRIPTION
Operations
FUNCTION DESCRIPTION
Number.IntegerDivide Divides two numbers and returns the whole part of the
resulting number.
Random
FUNCTION DESCRIPTION
Trigonometry
FUNCTION DESCRIPTION
Bytes
FUNCTION DESCRIPTION
RoundingMode.AwayFromZero RoundingMode.AwayFromZero
RoundingMode.Down RoundingMode.Down
RoundingMode.ToEven RoundingMode.ToEven
RoundingMode.TowardZero RoundingMode.TowardZero
RoundingMode.Up RoundingMode.Up
Byte.From
11/5/2018 • 2 minutes to read
About
Returns a 8-bit integer number value from the given value.
Syntax
Byte.From(value as any, optional culture as nullable text, optional roundingMode as nullable
number) as nullable number
Arguments
ARGUMENT DESCRIPTION
optional roundingMode Specifies rounding direction when there is a tie between the
possible numbers to round to.
Remarks
If the given value is null, Byte.From returns null. If the given value is number within the range of 8-bit integer
without a fractional part, value is returned. If it has fractional part, then the number is rounded with the rounding
mode specified. The default rounding mode is RoundingMode.ToEven. If the given value is of any other type, see
Number.FromText for converting it to number value, then the previous statement about converting number value
to 8-bit integer number value applies. See Number.Round for the available rounding modes.
Examples
Byte.From("4") equals 4
About
Returns a currency value from the given value.
Syntax
Currency.From(value as any, optional culture as nullable text, optional roundingMode as nullable
number) as nullable number
Arguments
ARGUMENT DESCRIPTION
optional roundingMode Specifies rounding direction when there is a tie between the
possible numbers to round to.
Remarks
If a value is null, Currency.From returns null. If a value is a number within range of currency, the fractional part of
the value is rounded to 4 decimal digits and returned. The valid range for currency is -922,337,203,685,477.5808
to 922,337,203,685,477.5807. If value is of any other type or out of the range, an error is returned. See
Number.FromText for converting it to a number value, then convert from a number to a 64-bit integer. See
Number.Round for the available rounding modes, the default is RoundingMode.ToEven.
Examples
Currency.From("1.23455") equals 1.2346
About
Returns a decimal number value from the given value.
Syntax
Decimal.From(value as any, optional culture as nullable text) as nullable number
Arguments
ARGUMENT DESCRIPTION
Remarks
Returns a Decimal number value from the given value. If the given value is null, Decimal.From returns null. If the
given value is number within the range of Decimal, value is returned, otherwise an error is returned. If the given
value is of any other type, see Number.FromText for converting it to number value, then the previous statement
about converting number value to Decimal number value applies.
Examples
Decimal.From("4.5") equals 4.5
Double.From
11/5/2018 • 2 minutes to read
About
Returns a Double number value from the given value.
Syntax
Double.From(value as any, optional culture as nullable text) as nullable number
Arguments
ARGUMENT DESCRIPTION
Remarks
If the given value is null, Double.From returns null. If the given value is number within the range of Double, value
is returned, otherwise an error is returned. If the given value is of any other type, see Number.FromText for
converting it to number value, then the previous statement about converting number value to Double number
value applies.
Examples
Double.From("4.5") equals 4.5
Int8.From
11/5/2018 • 2 minutes to read
About
Returns a signed 8-bit integer number value from the given value.
Syntax
Int8.From(value as any, optional culture as nullable text, optional roundingMode as nullable
number) as nullable number
Arguments
ARGUMENT DESCRIPTION
optional roundingMode Specifies rounding direction when there is a tie between the
possible numbers to round to.
Remarks
Returns a signed 8-bit integer number value from the given value. If the given value is null, Int8.From returns null.
If the given value is number within the range of signed 8-bit integer without a fractional part, value is returned. If it
has fractional part, then the number is rounded with the rounding mode specified. The default rounding mode is
RoundingMode.ToEven. If the given value is of any other type, see Number.FromText for converting it to number
value, then the previous statement about converting number value to signed 8-bit integer number value applies.
See Number.Round for the available rounding modes.
Examples
Int8.From("4") equals 4
About
Returns a 16-bit integer number value from the given value
Syntax
Int16.From(value as any, optional culture as nullable text, optional roundingMode as nullable
number) as nullable number
Arguments
ARGUMENT DESCRIPTION
optional roundingMode Specifies rounding direction when there is a tie between the
possible numbers to round to.
Remarks
If the given value is null, Int16.From returns null. If the given value is number within the range of 16-bit integer
without a fractional part, value is returned. If it has fractional part, then the number is rounded with the rounding
mode specified. The default rounding mode is RoundingMode.ToEven. If the given value is of any other type, see
Number.FromText for converting it to number value, then the previous statement about converting number value
to 16-bit integer number value applies. See Number.Round for the available rounding modes.
Examples
Int16.From("4") equals 4
About
Returns a 32-bit integer number value from the given value
Syntax
Int32.From(value as any, optional culture as nullable text, optional roundingMode as nullable
number) as nullable number
Arguments
ARGUMENT DESCRIPTION
optional roundingMode Specifies rounding direction when there is a tie between the
possible numbers to round to.
Remarks
If the given value is null, Int32.From returns null. If the given value is number within the range of 32-bit integer
without a fractional part, value is returned. If it has fractional part, then the number is rounded with the rounding
mode specified. The default rounding mode is RoundingMode.ToEven. If the given value is of any other type, see
Number.FromText for converting it to number value, then the previous statement about converting number value
to 32-bit integer number value applies. See Number.Round for the available rounding modes.
Examples
Int32.From("4") equals 4
About
Returns a 64-bit integer number value from the given value
Syntax
Int64.From(value as any, optional culture as nullable text, optional roundingMode as nullable
number) as nullable number
Arguments
ARGUMENT DESCRIPTION
optional roundingMode Specifies rounding direction when there is a tie between the
possible numbers to round to.
Remarks
If the given value is null, Int64.From returns null. If the given value is number within the range of 64-bit integer
without a fractional part, value is returned. If it has fractional part, then the number is rounded with the rounding
mode specified. The default rounding mode is RoundingMode.ToEven. If the given value is of any other type, see
Number.FromText for converting it to number value, then the previous statement about converting number value
to 64-bit integer number value applies. See Number.Round for the available rounding modes.
Examples
Int64.From("4") equals 4
About
Returns the absolute value of a number.
Syntax
Number.Abs(number as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Number.Abs(-1) equals 1
Number.Acos
11/5/2018 • 2 minutes to read
About
Returns the arccosine of a number.
Syntax
Number.Acos(angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns the arcsine of a number.
Syntax
Number.Asin(angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns the arctangent of a number.
Syntax
Number.Atan(angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns the arctangent of the division of the two numbers, y and x . The divison will be constructed as y /x.
Syntax
Number.Atan2(y as nullable number, x as nullable number) as nullable number
Number.BitwiseAnd
2/5/2019 • 2 minutes to read
About
Returns the result of performing a bitwise And operation between number1 and number2 .
Syntax
Number.BitwiseAnd(number1 as nullable number, number2 as nullable number) as nullable number
Number.BitwiseNot
2/5/2019 • 2 minutes to read
About
Returns the result of performing a bitwise Not operation on number .
Syntax
Number.BitwiseNot(number as any) as any
Number.BitwiseOr
2/5/2019 • 2 minutes to read
About
Returns the result of performing a bitwise Or between number1 and number2 .
Syntax
Number.BitwiseOr(number1 as nullable number, number2 as nullable number) as nullable number
Number.BitwiseShiftLeft
2/5/2019 • 2 minutes to read
About
Returns the result of performing a bitwise shift to the left on number1 , by the specified number of bits number2 .
Syntax
Number.BitwiseShiftLeft(number1 as nullable number, number2 as nullable number) as nullable number
Number.BitwiseShiftRight
2/5/2019 • 2 minutes to read
About
Returns the result of performing a bitwise shift to the right on number1 , by the specified number of bits number2 .
Syntax
Number.BitwiseShiftRight(number1 as nullable number, number2 as nullable number) as nullable
number
Number.BitwiseXor
2/5/2019 • 2 minutes to read
About
Returns the result of performing a bitwise XOR (Exclusive-OR ) between number1 and number2 .
Syntax
Number.BitwiseXor(number1 as nullable number, number2 as nullable number) as nullable number
Number.Combinations
11/5/2018 • 2 minutes to read
About
Returns the number of combinations of a given number of items for the optional combination size.
Syntax
Number.Combinations (setSize as nullable number, combinationSize as nullable number) as nullable
number
Arguments
ARGUMENT DESCRIPTION
Example
Number.Combinations(5, 3) equals 10
Number.Cos
11/5/2018 • 2 minutes to read
About
Returns the cosine of a number.
Syntax
Number.Cos (angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Number.Cos(0) equals 1
Number.Cosh
11/5/2018 • 2 minutes to read
About
Returns the hyperbolic cosine of a number.
Syntax
Number.Cosh(angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns 2.7182818284590451, the value of e up to 16 decimal digits.
Number.Epsilon
11/5/2018 • 2 minutes to read
About
Returns the smallest possible number.
Number.Exp
11/5/2018 • 2 minutes to read
About
Returns a number representing e raised to a power.
Syntax
Number.Exp(number as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
Number.Exp(0) equals 1
About
Returns the factorial of a number.
Syntax
Number.Factorial(number as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Number.Factorial(3) equals 6
Number.From
11/5/2018 • 2 minutes to read
Syntax
Number.From(value as any, optional culture as nullable text) as nullable number
About
Returns a number value from the given value . If the given value is null , Number.From returns null . If the
given value is number , value is returned. Values of the following types can be converted to a number value:
text : A number value from textual representation. Common text formats are handled ("15", "3,423.10", "5.0E -
10"). See Number.FromText for details.
logical : 1 for true , 0 for false .
datetime : A double-precision floating-point number that contains an OLE Automation date equivalent.
datetimezone : A double-precision floating-point number that contains an OLE Automation date equivalent of
the local date and time of value .
date : A double-precision floating-point number that contains an OLE Automation date equivalent.
time : Expressed in fractional days.
duration : Expressed in whole and fractional days.
Example 1
Get the number value of "4" .
powerquery-mNumber.From("4")
Example 2
Get the number value of #datetime(2020, 3, 20, 6, 0, 0) .
43910.25
Example 3
Get the number value of "12.3%" .
Number.From("12.3%")
0.123
Number.FromText
11/5/2018 • 2 minutes to read
About
Returns a number value from a text value.
Syntax
Number.FromText(text as nullable text, optional culture as nullable text) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
Number.FromText("1") equals 1
About
Divides two numbers and returns the whole part of the resulting number.
Syntax
Number.IntegerDivide (number1 as nullable number, number2 as nullable number, optional precision
as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Number.IntegerDivide(9.2, 3.1) equals 2
Number.IsEven
11/5/2018 • 2 minutes to read
About
Returns true if a value is an even number.
Syntax
Number.IsEven(value as number) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
Number.IsEven(3) equals false
About
Returns true if a value is Number.NaN.
Syntax
Number.IsNaN(value as number) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
Number.IsNaN(1) equals false
About
Returns true if a value is an odd number.
Syntax
Number.IsOdd(value as number) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
Number.IsOdd(3) equals true
About
Returns the natural logarithm of a number.
Syntax
Number.Ln(number as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Number.Ln(1) equals 0
Number.Log
11/5/2018 • 2 minutes to read
Syntax
Number.Log(**number** as nullable number, optional **base** as nullable number) as nullable number
About
Returns the logarithm of a number, number , to the specified base base. If base is not specified, the default value
is Number.E. If number is null Number.Log returns null.
Example 1
Get the base 10 logarithm of 2.
Number.Log(2, 10)
0.3010299956639812
Example 2
Get the base e logarithm of 2.
Number.Log(2)
0.69314718055994529
Number.Log10
11/5/2018 • 2 minutes to read
Syntax
Number.Log10(**number** as nullable number) as nullable number
About
Returns the Base 10 logarithm of a number, number . If number is null Number.Log10 returns null.
Arguments
ARGUMENT DESCRIPTION
Example 1
Get the base 10 logarithm of 2.
Number.Log10(2)
0.3010299956639812
Number.Mod
11/5/2018 • 2 minutes to read
About
Divides two numbers and returns the remainder of the resulting number.
Syntax
Number.Mod(number as nullable number, divisor as nullable number, optional precision as nullable
number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Number.Mod(83, 9) equals 2
Number.NaN
11/5/2018 • 2 minutes to read
About
Represents 0/0.
Number.NegativeInfinity
11/5/2018 • 2 minutes to read
About
Represents -1/0.
Number.Permutations
11/5/2018 • 2 minutes to read
About
Returns the number of total permutatons of a given number of items for the optional permutation size.
Syntax
Number.Permutations(setSize as nullable number, permutationSize as nullable number) as nullable
number
Arguments
ARGUMENT DESCRIPTION
Example
Number.Permutations(5, 3) equals 60
Number.PI
11/5/2018 • 2 minutes to read
About
Returns 3.1415926535897931, the value for Pi up to 16 decimal digits.
Number.PositiveInfinity
11/5/2018 • 2 minutes to read
About
Represents 1/0.
Number.Power
11/5/2018 • 2 minutes to read
About
Returns a number raised by a power.
Syntax
Number.Power(number as nullable number, power as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Number.Power(9, 3) equals 729
Number.Random
11/5/2018 • 2 minutes to read
About
Returns a random fractional number between 0 and 1.
Syntax
Number.Random() as number
Number.RandomBetween
11/5/2018 • 2 minutes to read
About
Returns a random number between the two given number values.
Syntax
Number.RandomBetween(bottom as number, top as number) as number
Arguments
ARGUMENT DESCRIPTION
About
Returns a nullable number (n) if value is an integer.
Syntax
Number.Round(value as nullable number, digits as nullable number, roundingMode as nullable
number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Settings
ROUNDING MODE DESCRIPTION
RoundingMode.Down.
Remarks
If value >= 0, returns n with the fractional part rounded by digits using roundingMode.
if value < 0, it returns the integral part of n rounded to m-n decimal digits, using roundingMode, where m
is the number of digits of n.
If roundingMode is not specified, RoundingMode.ToEven is used.
Examples
Number.Round(-1.249, 2) equals -1.25
About
Returns Number.RoundUp(value) when value >= 0 and Number.RoundDown(value) when value < 0.
Syntax
Number.RoundAwayFromZero(value as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
Number.RoundAwayFromZero(-1.2) equals -2
Number.RoundAwayFromZero(1.2) equals 2
Number.RoundDown
11/5/2018 • 2 minutes to read
About
Returns the largest integer less than or equal to a number value.
Syntax
Number.RoundDown(value as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
Number.RoundDown(-1.2) equals -2
Number.RoundDown(1.2) equals 1
Number.RoundTowardZero
11/5/2018 • 2 minutes to read
About
Returns Number.RoundDown(x) when x >= 0 and Number.RoundUp(x) when x < 0.
Syntax
Number.RoundTowardZero(value as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
Number.RoundTowardZero(-1.2) equals -1
Number.RoundTowardZero(1.2) equals 1
Number.RoundUp
11/5/2018 • 2 minutes to read
About
Returns the larger integer greater than or equal to a number value.
Syntax
Number.RoundUp(value as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
Number.RoundUp(-1.2) equals -1
Number.RoundUp(1.2) equals 2
Number.Sign
11/5/2018 • 2 minutes to read
About
Returns 1 for positive numbers, -1 for negative numbers or 0 for zero.
Syntax
Number.Sign(number as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
Number.Sign(-1) equals -1
Number.Sign(1) equals 1
Number.Sin
11/5/2018 • 2 minutes to read
About
Returns the sine of a number.
Syntax
Number.Sin (angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Number.Sin(0) equals 0
Number.Sinh
11/5/2018 • 2 minutes to read
About
Returns the hyperbolic sine of a number.
Syntax
Number.Sinh(angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns the square root of a number.
Syntax
Number.Sqrt(number as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Number.Sqrt(16) equals 4
Number.Tan
11/5/2018 • 2 minutes to read
About
Returns the tangent of a number.
Syntax
Number.Tan (angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Number.Tan(1) equals 1.557
Number.Tanh
11/5/2018 • 2 minutes to read
About
Returns the hyperbolic tangent of a number.
Syntax
Number.Tanh(angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns a text value from a number value.
Syntax
Number.ToText(number as number, optional format as nullable text, optional culture as nullable
text) as nullable text
Arguments
ARGUMENT DESCRIPTION
Format Settings
SETTING NAME DESCRIPTION
setting
Examples
Syntax
Percentage.From(**value** as any, optional **culture** as nullable text) as nullable number
About
Returns a percentage value from the given value . If the given value is null , Percentage.From returns null . If
the given value is text with a trailing percent symbol, then the converted decimal number will be returned.
Otherwise, see Number.From for converting it to number value.
Example 1
Get the percentage value of "12.3%" .
Percentage.From("12.3%")
0.123
RoundingMode.AwayFromZero
11/5/2018 • 2 minutes to read
About
RoundingMode.AwayFromZero
RoundingMode.Down
11/5/2018 • 2 minutes to read
About
RoundingMode.Down
RoundingMode.ToEven
11/5/2018 • 2 minutes to read
About
RoundingMode.ToEven
RoundingMode.TowardZero
11/5/2018 • 2 minutes to read
About
RoundingMode.TowardZero
RoundingMode.Up
11/5/2018 • 2 minutes to read
About
RoundingMode.Up
Single.From
11/5/2018 • 2 minutes to read
About
Returns a Single number value from the given value.
Syntax
Single.From(value as any, optional culture as nullable text) as nullable number
Arguments
ARGUMENT DESCRIPTION
Remarks
If the given value is null, Single.From returns null. If the given value is number within the range of Single, value is
returned, otherwise an error is returned. If the given value is of any other type, see Number.FromText for
converting it to number value, then the previous statement about converting number value to Single number
value applies.
Examples
Single.From("1.5") equals 1.5
Record functions
11/5/2018 • 2 minutes to read
Record
Information
FUNCTION DESCRIPTION
Record.HasFields Returns true if the field name or field names are present in a
record.
Transformations
FUNCTION DESCRIPTION
Record.RemoveFields Returns a new record that reorders the given fields with
respect to each other. Any fields not specified remain in their
original locations.
Record.RenameFields Returns a new record that renames the fields specified. The
resultant fields will retain their original order. This function
supports swapping and chaining field names. However, all
target names plus remaining field names must constitute a
unique set or an error will occur.
Selection
FUNCTION DESCRIPTION
Record.Field Returns the value of the given field. This function can be used
to dynamically create field lookup syntax for a given record. In
that way it is a dynamic verison of the record[field] syntax.
Record.FieldOrDefault Returns the value of a field from a record, or the default value
if the field does not exist.
FUNCTION DESCRIPTION
Record.SelectFields Returns a new record that contains the fields selected from
the input record. The original order of the fields is maintained.
Serialization
FUNCTION DESCRIPTION
Record.FromList Returns a record given a list of field values and a set of fields.
Record.ToList Returns a list of values containing the field values of the input
record.
Parameter Values
The following type definitions are used to describe the parameter values that are referenced in Record functions
above.
MissingField.Ignore = 1;
MissingField.UseNull = 2;
A list value of two items, first item being the field name and
the second item being the transformation function applied to
that field to produce a new value.
Rename operations Rename operations for a record can be specified as either of:
About
An optional parameter in record and table functions indicating that missing fields should result in an error. (This is
the default parameter value.)
MissingField.Ignore
11/5/2018 • 2 minutes to read
About
An optional parameter in record and table functions indicating that missing fields should be ignored.
MissingField.UseNull
11/5/2018 • 2 minutes to read
About
An optional parameter in record and table functions indicating that missing fields should be included as null values.
Record.AddField
11/5/2018 • 2 minutes to read
About
Adds a field from a field name and value.
Syntax
Record.AddField (record as record, fieldName as text, value as any,optional delayed as nullable
logical) as record
Arguments
ARGUMENT DESCRIPTION
optional delayed Indicates whether the field value or a function that computes
the field value.
Example
Record.AddField( [CustomerID = 1, Name = "Bob", Phone = "123-4567"] , "Address", "123 Main St.")
CustomerID 1
Phone 123-4567
About
Combines the records in a list.
Syntax
Record.Combine(list as list) as record
Arguments
ARGUMENT DESCRIPTION
Remarks
If the list contains non-record values, an error is returned.
Example
Record.Combine({ [CustomerID =1], [Name ="Bob"] , [Phone = "123-4567"] })
CustomerID 1
Name Bob
Phone 123-4567
Record.Field
11/5/2018 • 2 minutes to read
About
Returns the value of the given field. This function can be used to dynamically create field lookup syntax for a given
record. In that way it is a dynamic verison of the record[field] syntax.
Syntax
Record.Field(record as record, field as text) as any
Arguments
ARGUMENT DESCRIPTION
Example
Record.Field([CustomerID = 1, Name = "Bob", Phone = "123-4567"], "CustomerID") equals 1
Record.FieldCount
11/5/2018 • 2 minutes to read
About
Returns the number of fields in a record.
Syntax
Record.FieldCount(record as record) as number
Arguments
ARGUMENT DESCRIPTION
Example
Record.FieldCount([A=1, B=2]) equals 2
Record.FieldNames
11/5/2018 • 2 minutes to read
About
Returns a list of field names in order of the record's fields.
Syntax
Record.FieldNames(record as record) as list
Arguments
ARGUMENT DESCRIPTION
Example
Record.FieldNames( [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0] )
About
Returns the value of a field from a record, or the default value if the field does not exist.
Syntax
Record.FieldOrDefault(record as record, field as text, optional defaultValue as any) as any
Arguments
ARGUMENT DESCRIPTION
optional defaultValue The default value to return if the field does not exist.
Examples
Record.FieldOrDefault([CustomerID =1, Name="Bob"], "Phone") equals null
About
Returns a list of field values in order of the record's fields.
Syntax
Record.FieldValues(record as record) as list
Arguments
ARGUMENT DESCRIPTION
Example
Record.FieldValues( [CustomerID = 1, Name = "Bob", Phone = "123-4567"] ) equals {1, "Bob", "123-4567"}
Record.FromList
11/5/2018 • 2 minutes to read
About
Returns a record from a list of field values and a set of field names.
Syntax
Record.FromList(list as list, fields as any) as record
Arguments
ARGUMENT DESCRIPTION
fields The set of fields corresponding to the values. The fields can be
specific either by a list of text values or a record type.
Remarks
An Expression.Error is thrown if the fields are not unique.
Examples
Record.FromList
OrderID 1
Name Bob
Phone 123-4567
Record.FromTable
11/5/2018 • 2 minutes to read
About
Returns a record from a table of records containing field names and values.
Syntax
Record.FromTable(list as table) as record
Arguments
ARGUMENT DESCRIPTION
Remarks
An Expression.Error is thrown if the fields are not unique.
Example
let
in
Record.FromTable(input)
OrderID 1
CustomerID 1
Price 100
Record.HasFields
11/5/2018 • 2 minutes to read
About
Returns true if the field name or field names are present in a record.
Syntax
Record.HasFields(record as record, fields as any) as logical
Arguments
ARGUMENT DESCRIPTION
Examples:
Record.HasFields([CustomerID = 1, Name = "Bob", Phone = "123-4567"],"CustomerID") equals true
About
Returns a record that removes all the fields specified in a list. If the field specified does not exist, an exception is
thrown.
Syntax
Record.RemoveFields(record as record, fields as any, optional missingField as nullable number) as
record
Arguments
ARGUMENT DESCRIPTION
fields A list of two items with the names of the fields that need to
exchange their order in the record.
MissingField enum
MissingField.Error = 0;
MissingField.Ignore = 1;
MissingField.UseNull = 2;
Examples
Record.RemoveFields([CustomerID=1, Item = "Fishing rod", Price=18.00] , "Price")
CustomerID 1
About
Returns a new record that renames the fields specified. The resultant fields will retain their original order. This
function supports swapping and chaining field names. However, all target names plus remaining field names must
constitute a unique set or an error will occur.
Syntax
Record.RenameFields(record as record, renames as list, optional missingField as nullable number)
as record
Arguments
ARGUMENT DESCRIPTION
MissingField enum
MissingField.Error = 0;
MissingField.Ignore = 1;
MissingField.UseNull = 2;
Remarks
Record.RenameFields swaps and chains field names. If all target names plus remaining field names are not a
unique set, an Expression.Error is thrown
Examples
Record.RenameFields([OrderID = 1, CustomerID = 1, Item = "Fishing rod", UnitPrice = 100.0],
{"UnitPrice","Price"})
OrderID 1
CustomerID 1
Price 100
Record.ReorderFields
11/5/2018 • 2 minutes to read
About
Returns a new record that reorders fields relative to each other. Any fields not specified remain in their original
locations. Requires two or more fields.
Syntax
Record.ReorderFields(record as record, fieldOrder as list, optional missingField as nullable
number) as record
Arguments
ARGUMENT DESCRIPTION
MissingField enum
MissingField.Error = 0;
MissingField.Ignore = 1;
MissingField.UseNull = 2;
Examples
Record.ReorderFields( [CustomerID= 1, OrderID = 1, Item = "Fishing rod", Price = 100.0], { "OrderID",
"CustomerID" })
OrderID 1
CustomerID 1
Price 100
Record.SelectFields
11/5/2018 • 2 minutes to read
About
Returns a new record that contains the fields selected from the input record. The original order of the fields is
maintained.
Syntax
Record.SelectFields(record as record, fields as any, optional missingField as nullable number)
as record
## Arguments
|Argument|Description|
|------------|---------------|
|record|The record to check.|
|fields|A single field name or list of field names.|
|optional missingField|A **MissingField** enum value to handle missing fields. The default value is
MissingField.Error.|
- MissingField.Error = 0;
- MissingField.Ignore = 1;
- MissingField.UseNull = 2;
## Remarks
## Examples
```powerquery-m
Record.SelectFields([A=1, B=2], "B") equals [B=2]
Syntax
Record.ToList(**record** as record) as list
About
Returns a list of values containing the field values from the input record .
Example
Extract the field values from a record.
Record.ToList([A = 1, B = 2, C = 3])
1
2
3
Record.ToTable
11/5/2018 • 2 minutes to read
About
Returns a table of records containing field names and values from an input record.
Syntax
Record.ToTable(record as record) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
The type of the return value of this function is {[Name = text, Value = any ]}.
Example
Record.ToTable([OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0] )
equals
OrderID 1
CustomerID 1
Price 100
Record.TransformFields
11/5/2018 • 2 minutes to read
About
Transforms fields by applying transformOperations. For more more information about values supported by
transformOperations, see Parameter Values.
Syntax
Record.TransformFields(record as record, transformOperations as list, optional missingField as
nullable number) as record
Arguments
ARGUMENT DESCRIPTION
MissingField enum
MissingField.Error = 0;
MissingField.Ignore = 1;
MissingField.UseNull = 2;
Examples
Record.TransformFields([OrderID = 1, CustomerID= 1, Item = "Fishing rod", Price = "100.0"], {"Price",
Number.FromText})
OrderID 1
CustomerID 1
Price 100
Record.TransformFields(
OrderID 1
CustomerID 1
Price 100
Replacer functions
11/5/2018 • 2 minutes to read
Replacer functions are used by other functions in the library to replace a given value in a structure.
Replacer
FUNCTION DESCRIPTION
About
This function be provided to List.ReplaceValue or Table.ReplaceValue to do replace of text values in list and table
values respectively.
Syntax
Replacer.ReplaceText (text as nullable text, old as text, new as text) as nullable text
Arguments
ARGUMENT DESCRIPTION
About
This function be provided to List.ReplaceValue or Table.ReplaceValue to do replace values in list and table values
respectively.
Syntax
Replacer.ReplaceValue(value as any, old as any, new as any) as any
Arguments
ARGUMENT DESCRIPTION
Splitter
FUNCTION DESCRIPTION
Splitter.SplitTextByCharacterTransition Returns a function that splits text into a list of text according
to a transition from one kind of character to another.
Splitter.SplitTextByRepeatedLengths Returns a function that splits text into a list of text after the
specified length repeatedly.
About
Quote characters indicate the start of a quoted string. Nested quotes are indicated by two quote characters.
QuoteStyle.None
11/5/2018 • 2 minutes to read
About
Quote characters have no significance.
Splitter.SplitByNothing
11/5/2018 • 2 minutes to read
Syntax
Splitter.SplitByNothing() as function
About
Returns a function that does no splitting, returning its argument as a single element.
Splitter.SplitTextByAnyDelimiter
11/5/2018 • 2 minutes to read
About
Returns a function that splits text by any supported delimiter.
Syntax
Splitter.SplitTextByEachDelimiter(delimiters as list, optional quoteStyle as nullable number) as
function
Arguments
ARGUMENT DESCRIPTION
Remarks
Splitter.SplitTextByAnyDelimiter is similar to Splitter.SplitTextByDelimiter except that multiple delimiters may
be used to specify the points at which to break the text.
Splitter.SplitTextByDelimiter
11/5/2018 • 2 minutes to read
About
Returns a function that will split text according to a delimiter.
Syntax
Splitter.SplitTextByDelimiter(delimiter as text, optional quoteStyle as nullable number) as
function
Arguments
ARGUMENT DESCRIPTION
Quote styles
QuoteStyle.None = 0;
QuoteStyle.Csv = 1;
Splitter.SplitTextByEachDelimiter
11/5/2018 • 2 minutes to read
About
Returns a function that splits text by each delimiter in turn.
Syntax
Splitter.SplitTextByEachDelimiter(delimiters as list, optional quoteStyle as nullable number) as
function
Arguments
ARGUMENT DESCRIPTION
Remarks
Splitter.SplitTextByEachDelimiter is similar to Splitter.SplitTextByDelimiter except that each delimiter is used
once in order to determine the points at which to break the text.
Splitter.SplitTextByLengths
11/5/2018 • 2 minutes to read
About
Returns a function that splits text according to the specified lengths.
Syntax
Splitter.SplitTextByLengths(lengths as list) as function
Arguments
ARGUMENT DESCRIPTION
Remarks
Each item in lengths should be a non-negative number indicating the number of characters to use for each item.
SplitTextByLengths works by computing a set of ranges by adding each subsequent length to compute the next
position, and delegating to SplitTextByRanges. The list returned will have the same cardinality as that of the
positions.
Splitter.SplitTextByPositions
11/5/2018 • 2 minutes to read
About
Returns a function that splits text according to the specified positions.
Syntax
Splitter.SplitTextByPositions(positions as list) as function
Arguments
ARGUMENT DESCRIPTION
Remarks
Each item in positions should be a non-negative number indicating the position at which to break the text, and
each item must be greater than or equal to the previous. SplitTextByPositions works by computing a set of
ranges by using the difference between subsequent positions as lengths (with the last position of effectively
infinite length) and delegating to SplitTextByRanges. The list returned will have the same cardinality as that of
the positions.
Splitter.SplitTextByRanges
11/5/2018 • 2 minutes to read
About
Returns a function that splits text according to the specified ranges.
Syntax
Splitter.SplitTextByRanges(ranges as list) as function
Arguments
ARGUMENT DESCRIPTION
Remarks
Each item in ranges should specify a tuple of offset and length (where offset zero refers to the first character).
The subset of characters of the line denoted by each tuple is returned as a separate item. If the offset or length
is less than zero, an error is thrown. Otherwise, if the tuple is out of range of the line, spaces are used to fill out
the value. Therefore, the list returned will have the same cardinality as ranges, and each item will be of the
length specified in the corresponding tuple. There is no checking for overlap of tuple ranges.
Splitter.SplitTextByRepeatedLengths
11/5/2018 • 2 minutes to read
Syntax
Splitter.SplitTextByRepeatedLengths(**length** as number, optional **startAtEnd** as nullable
logical) as function
About
Returns a function that splits text into a list of text after the specified length repeatedly.
Splitter.SplitTextByWhitespace
11/5/2018 • 2 minutes to read
About
Returns a function that splits text according to whitespace.
Syntax
Splitter.SplitTextByWhitespace(optional quoteStyle as nullable number) as function
Arguments
ARGUMENT DESCRIPTION
Remarks
Splitter.SplitTextByWhitespace is similar to SplitTextByAnyDelimiter where the delimiters provided are all
characters for which char.IsWhitespace returns true.
SplitTextByWhitespace will consider any non-zero sequence of whitespace characters a delimiter.
Table functions
11/5/2018 • 12 minutes to read
Table construction
FUNCTION DESCRIPTION
Table.FromColumns Returns a table from a list containing nested lists with the
column names and values.
Table.FromRows Creates a table from the list where each element of the list is a
list that contains the column values for a single row.
Table.Split Splits the specified table into a list of tables using the specified
page size.
Conversions
FUNCTION DESCRIPTION
Information
FUNCTION DESCRIPTION
Table.IsEmpty Returns true if the table does not contain any rows.
Row operations
FUNCTION DESCRIPTION
Table.FindText Returns a table containing only the rows that have the
specified text within one of their cells or any part thereof.
Table.FirstValue Returns the first column of the first row of the table or a
specified default value.
Table.InsertRows Returns a table with the list of rows inserted into the table at
an index. Each row to insert must match the row type of the
table..
Table.RemoveRowsWithErrors Returns a table with all rows removed from the table that
contain an error in at least one of the cells in a row.
Table.Repeat Returns a table containing the rows of the table repeated the
count number of times.
Table.SelectRowsWithErrors Returns a table with only the rows from table that contain an
error in at least one of the cells in a row.
Table.Skip Returns a table that does not contain the first row or rows of
the table.
Column operations
FUNCTION DESCRIPTION
Table.ColumnsOfType Returns a list with the names of the columns that match the
specified types.
Table.DemoteHeaders Demotes the header row down into the first row of a table.
Table.DuplicateColumn Duplicates a column with the specified name. Values and type
are copied from the source column.
Table.PrefixColumns Returns a table where the columns have all been prefixed with
a text value.
Table.PromoteHeaders Promotes the first row of the table into its header or column
names.
Table.UnpivotOtherColumns Translates all columns other than a specified set into attribute-
value pairs, combined with the rest of the values in each row.
Transformation
Parameters for Group options
GroupKind.Global = 0;
GroupKind.Local = 1;
Parameters for Join kinds
JoinKind.Inner = 0;
JoinKind.LeftOuter = 1;
JoinKind.RightOuter = 2;
JoinKind.FullOuter = 3;
JoinKind.LeftAnti = 4;
JoinKind.RightAnti = 5
Join Algorithm
The following JoinAlgorithm values can be specified to Table.Join
JoinAlgorithm.Dynamic 0,
JoinAlgorithm.PairwiseHash 1,
JoinAlgorithm.SortMerge 2,
JoinAlgorithm.LeftHash 3,
JoinAlgorithm.RightHash 4,
JoinAlgorithm.LeftIndex 5,
JoinAlgorithm.RightIndex 6,
Example data
The following tables are used by the examples in this section.
Customers table
Customers = Table.FromRecords({
Orders table
Orders = Table.FromRecords({
})
FUNCTION DESCRIPTION
Table.AddIndexColumn Returns a table with a new column with a specific name that,
for each row, contains an index of the row in the table.
Table.FillUp Returns a table from the table specified where the value of the
next cell is propagated to the null values cells above in the
column specified.
Table.FilterWithDataTable
Table.Group Groups table rows by the values of key columns for each row.
Table.Join Joins the rows of table1 with the rows of table2 based on the
equality of the values of the key columns selected by table1,
key1 and table2, key2.
Table.NestedJoin Joins the rows of the tables based on the equality of the keys.
The results are entered into a new column.
Table.ReplaceErrorValues Replaces the error values in the specified columns with the
corresponding specified value.
Table.ReplaceKeys Returns a new table with new key information set in the keys
argument.
Table.ReplaceRelationshipIdentity
Membership
Parameters for membership checks
Occurrence specification
Occurrence.First = 0
Occurrence.Last = 1
Occurrence.All = 2
FUNCTION DESCRIPTION
Table.ReplaceMatchingRows Replaces specific rows from a table with the new rows.
Ordering
Example data
The following tables are used by the examples in this section.
Employees table
Employees = Table.FromRecords(
type table [
Name = text,
Level = number,
Salary = number
])
FUNCTION DESCRIPTION
Table.MaxN Returns the largest N rows from a table. After the rows are
sorted, the countOrCondition parameter must be specified to
further filter the result.
Table.MinN Returns the smallest N rows in the given table. After the rows
are sorted, the countOrCondition parameter must be specified
to further filter the result.
Other
FUNCTION DESCRIPTION
Parameter Values
Naming output columns
This parameter is a list of text values specifying the column names of the resulting table. This parameter is
generally used in the Table construction functions, such as Table.FromRows and Table.FromList.
Comparison criteria
Comparison criterion can be provided as either of the following values:
A number value to specify a sort order. See sort order in the parameter values section above.
To compute a key to be used for sorting, a function of 1 argument can be used.
To both select a key and control order, comparison criterion can be a list containing the key and order.
To completely control the comparison, a function of 2 arguments can be used that returns -1, 0, or 1 given
the relationship between the left and right inputs. Value.Compare is a method that can be used to delegate
this logic.
For examples, see description of Table.Sort.
Count or Condition critieria
This criteria is generally used in ordering or row operations. It determines the number of rows returned in the table
and can take two forms, a number or a condition:
A number indicates how many values to return inline with the appropriate function
If a condition is specified, the rows containing values that initially meet the condition is returned. Once a
value fails the condition, no further values are considered.
See Table.FirstN or Table.MaxN.
Handling of extra values
This is used to indicate how the function should handle extra values in a row. This parameter is specified as a
number, which maps to the options below.
ExtraValues.List = 0
ExtraValues.Error = 1
ExtraValues.Ignore = 2
MissingField.Error = 0;
MissingField.Ignore = 1;
MissingField.UseNull = 2;
Order.Ascending = 0
Order.Descending = 1
Equation criteria
Equation criteria for tables can be specified as either a
A function value that is either
A key selector that determines the column in the table to apply the equality criteria, or
A comparer function that is used to specify the kind of comparison to apply. Built in comparer
functions can be specified, see section for Comparer functions.
A list of the columns in the table to apply the equality criteria
For examples, look at description for Table.Distinct.
ExtraValues.Error
11/5/2018 • 2 minutes to read
About
If the splitter function returns more columns than the table expects, an error should be raised.
ExtraValues.Ignore
11/5/2018 • 2 minutes to read
About
If the splitter function returns more columns than the table expects, they should be ignored.
ExtraValues.List
11/5/2018 • 2 minutes to read
About
If the splitter function returns more columns than the table expects, they should be collected into a list.
GroupKind.Global
11/5/2018 • 2 minutes to read
About
Syntax
GroupKind.Global
GroupKind.Local
11/5/2018 • 2 minutes to read
About
Syntax
GroupKind.Local
ItemExpression.From
11/5/2018 • 2 minutes to read
Syntax
ItemExpression.From(function as function) as record
About
Returns the AST for the body of function , normalized into an item expression:
The function must be a 1-argument lambda.
All references to the function parameter are replaced with ItemExpression.Item .
The AST will be simplified to contain only nodes of the kinds:
Constant
Invocation
Unary
Binary
If
FieldAccess
NotImplemented
An error is raised if an item expression AST cannot be returned for the body of function .
Example 1
Returns the AST for the body of the function each _ <> null
KIND Binary
OPERATOR NotEquals
LEFT [Record]
RIGHT [Record]
ItemExpression.Item
11/5/2018 • 2 minutes to read
About
An AST node representing the item in an item expression.
JoinAlgorithm.Dynamic
11/5/2018 • 2 minutes to read
About
JoinAlgorithm.Dynamic
JoinAlgorithm.LeftHash
11/5/2018 • 2 minutes to read
About
JoinAlgorithm.LeftHash
JoinAlgorithm.LeftIndex
11/5/2018 • 2 minutes to read
About
JoinAlgorithm.LeftIndex
JoinAlgorithm.PairwiseHash
11/5/2018 • 2 minutes to read
About
JoinAlgorithm.PairwiseHash
JoinAlgorithm.RightHash
11/5/2018 • 2 minutes to read
About
JoinAlgorithm.RightHash
JoinAlgorithm.RightIndex
11/5/2018 • 2 minutes to read
About
JoinAlgorithm.RightIndex
JoinAlgorithm.SortMerge
11/5/2018 • 2 minutes to read
About
JoinAlgorithm.SortMerge
JoinKind.FullOuter
11/5/2018 • 2 minutes to read
About
A possible value for the optional JoinKind parameter in Table.Join . A full outer join ensures that all rows of both
tables appear in the result. Rows that did not have a match in the other table are joined with a default row
containing null values for all of its columns.
JoinKind.Inner
11/5/2018 • 2 minutes to read
About
A possible value for the optional JoinKind parameter in Table.Join . The table resulting from an inner join
contains a row for each pair of rows from the specified tables that were determined to match based on the
specified key columns.
JoinKind.LeftAnti
11/5/2018 • 2 minutes to read
About
A possible value for the optional JoinKind parameter in Table.Join . A left anti join returns that all rows from the
first table which do not have a match in the second table.
JoinKind.LeftOuter
11/5/2018 • 2 minutes to read
About
A possible value for the optional JoinKind parameter in Table.Join . A left outer join ensures that all rows of the
first table appear in the result.
JoinKind.RightAnti
11/5/2018 • 2 minutes to read
About
A possible value for the optional JoinKind parameter in Table.Join . A right anti join returns that all rows from the
second table which do not have a match in the first table.
JoinKind.RightOuter
11/5/2018 • 2 minutes to read
About
A possible value for the optional JoinKind parameter in Table.Join . A right outer join ensures that all rows of the
second table appear in the result.
JoinSide.Left
11/5/2018 • 2 minutes to read
About
Specifies the left table of a join.
JoinSide.Right
11/5/2018 • 2 minutes to read
About
Specifies the right table of a join.
Occurrence.All
11/5/2018 • 2 minutes to read
About
A list of positions of all occurrences of the found values is returned.
Occurrence.First
11/5/2018 • 2 minutes to read
About
The position of the first occurrence of the found value is returned.
Occurrence.Last
11/5/2018 • 2 minutes to read
About
The position of the last occurrence of the found value is returned.
Order.Ascending
11/5/2018 • 2 minutes to read
About
Function type which sorts the list in ascending order.
Order.Descending
11/5/2018 • 2 minutes to read
About
Function type which sorts the list in descending order.
RowExpression.Column
11/5/2018 • 2 minutes to read
Syntax
RowExpression.Column(columnName as text) as record
About
Returns an AST that represents access to column columnName of the row within a row expression.
Example 1
Creates an AST representing access of column "CustomerName".
RowExpression.Column("CustomerName")
RowExpression.From
11/5/2018 • 2 minutes to read
Syntax
RowExpression.From(function as function) as record
About
Returns the AST for the body of function , normalized into a row expression:
The function must be a 1-argument lambda.
All references to the function parameter are replaced with RowExpression.Row .
All references to columns are replaced with RowExpression.Column(*columnName*) .
The AST will be simplified to contain only nodes of the kinds: Constant , Invocation , Unary , Binary , If ,
FieldAccess , NotImplemented .
An error is raised if a row expression AST cannot be returned for the body of function .
Example 1
Returns the AST for the body of the function each [CustomerID ] = "ALFKI"
Syntax
RowExpression.Row(function as function) as record
About
An AST node representing the row in a row expression.
Table.AddColumn
11/5/2018 • 2 minutes to read
About
Adds a column named newColumnName to a table.
Syntax
Table.AddColumn(table as table, newColumnName as text, columnGenerator as function, optional
columnType as nullable type) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
The values for the column are computed using the specified function from each row.
Example
Table.AddColumn(Table.FromRecords(
[OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0, Shipping = 15.00],
Table.AddColumn(Table.FromRecords(
[OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0, Shipping = 15.00],
2 1 1 lb. worms 5 15 20
3 2 Fishing net 25 10 35
Table.AddIndexColumn
11/5/2018 • 2 minutes to read
About
Returns a table with a new column with a specific name that, for each row, contains an index of the row in the table.
Syntax
Table.AddIndexColumn(table as table, newColumnName as text, optional initialValue as nullable
number, optional increment as nullable number) as table
Arguments
ARGUMENT DESCRIPTION
optional initialValue The initial column index. The default initial index is 0.
Examples
Table.AddIndexColumn(Table.FromRecords(
), "Index")
1 Bob 123-4567 0
2 Jim 987-6543 1
3 Paul 543-7890 2
CUSTOMERID NAME PHONE INDEX
4 Ringo 232-1550 3
Table.AddIndexColumn(Table.FromRecords(
), "Index", 1, 2)
1 Bob 123-4567 1
2 Jim 987-6543 3
3 Paul 543-7890 5
4 Ringo 232-1550 7
Table.AddJoinColumn
11/5/2018 • 2 minutes to read
About
Performs a nested join between table1 and table2 from specific columns and produces the join result as a
newColumnName column for each row of table1.
Syntax
Table.AddJoinColumn(table1 as table, key1 as any, table2 as function, key2 as any, newColumnName
as text) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.AddJoinColumn is similar to Table.Join except that the join results are presented in a nested rather
than flattened table.
Table.AddJoinColumn performs a left outer join by default, other join types are supported in Table.Join or
Table.NestedJoin
The type of the resulting table is computed by taking the type of table1 and appending a column
newColumnName with a type that is the type of table2.
For more information about joining tables, see Table.Join.
Example
let
Query = let
Customers = Table.FromRecords({
}),
Orders = Table.FromRecords({
})
in
Table.AddJoinColumn(
Customers, {"CustomerID"},
Orders, {"CustomerID"},
"Orders"
),
in
#"Expand Orders"
ORDERS.ORDE ORDERS.CUSTO
CUSTOMERID NAME PHONE RID MERID ORDERS.ITEM ORDERS.PRICE
4 Ringo 232-1550
Table.AddKey
11/5/2018 • 2 minutes to read
About
Add a key to table.
Syntax
Table.AddKey(table as table, columns as list, isPrimary as logical) as table
Arguments
ARGUMENT DESCRIPTION
Example
let
table = Table.FromRecords(
),
in
resultTable
1 Bob 123-4567
CUSTOMERID NAME PHONE
2 Jim 987-6543
3 Paul 543-7890
4 Ringo 232-1550
Table.AggregateTableColumn
11/5/2018 • 2 minutes to read
About
Aggregates tables nested in a specific column into multiple columns containing aggregate values for those tables.
Syntax
Table.AggregateTableColumn(table as table, column as text, aggregations as list) as table
Arguments
ARGUMENT DESCRIPTION
Example
Table.AggregateTableColumn(
Table.FromRecords(
{[t = Table.FromRecords({[a=1, b=2, c=3], [a=2,b=4,c=6]}), b = 2]}, type table [t = table [a=number,
b=number, c=number], b = number]
), "t",
3 2 4 2 2
Table.AlternateRows
11/5/2018 • 2 minutes to read
About
Returns a table containing an alternating pattern of the rows from a table.
Syntax
Table.AlternateRows( table as table, offset as number, skip as number, take as number) as table
Remarks
Table.AlternateRows is similar to List.Alternate but requires a table as input.
Example
Table.AlternateRows(Table.FromRecords({
1 Bob 123-4567
3 Paul 543-7890
Table.Buffer
11/5/2018 • 2 minutes to read
About
Buffers a table into memory, isolating it from external changes during evaluation.
Syntax
Table.Buffer(table as table) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.Buffer is similar to List.Buffer but requires a table as input.
Example
Table.Buffer(Sql.Database("localhost", "Northwind")[Customers]) equals Buffered copy of the Customers table
Table.Column
11/5/2018 • 2 minutes to read
About
Returns the values from a column in a table.
Syntax
Table.Column(table as table, column as text) as list
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.Column is similar to Record.Field but requires a table as input.
Example
Table.Column(Table.FromRecords(
), "Name")
About
Returns the number of columns in a table.
Syntax
Table.ColumnCount(table as table) as number
Arguments
ARGUMENT DESCRIPTION
Example
let
emptyTable = Table.FromRows({}),
in
IsEmptyTest1 = Table.IsEmpty(emptyTable),
IsEmptyTest2 = Table.IsEmpty(tableValue),
RowCount = Table.RowCount(tableValue),
ColumnCount = Table.ColumnCount(tableValue)
equals
IsEmptyTest1 true
IsEmptyTest2 false
RowCount 2
ColumnCount 3
Table.ColumnNames
11/5/2018 • 2 minutes to read
About
Returns the names of columns from a table.
Syntax
Table.ColumnNames(table as table) as {Text}
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.ColumnNames is similar to Record.FieldNames but requires a table as input.
Example
Table.ColumnNames(Table.FromRecords(
))
About
Returns a list with the names of the columns that match the specified types.
Syntax
Table.ColumnsOfType(table as table, listOfTypes as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
let
in
equals {"a"}
Table.Combine
11/5/2018 • 2 minutes to read
Syntax
Table.Combine(tables as list, optional columns as any) as table
About
Returns a table that is the result of merging a list of tables, tables . The resulting table will have a row type
structure defined by columns or by a union of the input types if columns is not specified.
Example 1
Merge the three tables together.
1 Bob 123-4567
2 Jim 987-6543
3 Paul 543-7890
Example 2
Merge three tables with different structures.
Table.Combine({Table.FromRecords({[Name="Bob",Phone="123-4567"]}), Table.FromRecords({[Fax="987-6543",
Phone="838-7171"] }),Table.FromRecords({[Cell = "543-7890"]})})
Bob 123-4567
838-7171 987-6543
543-7890
Example 3
Merge two tables and project onto the given type.
Table.Combine({Table.FromRecords({[Name="Bob",Phone="123-4567"]}), Table.FromRecords({[Fax="987-6543",
Phone="838-7171"] }),Table.FromRecords({[Cell = "543-7890"]})}, {"CustomerID", "Name"})
CUSTOMERID NAME
Bob
Table.CombineColumns
11/5/2018 • 2 minutes to read
About
The inverse of Table.SplitColumns, Table.CombineColumns merge columns using a combiner function to produce
a new column.
Syntax
Table.CombineColumns(table as table, sourceColumns as list, combiner as function, column as text)
as table
Arguments
ARGUMENT DESCRIPTION
Example
Table.CombineColumns(Table.FromRecords(
{"A.1","A.2","B"}),{"A.1", "A.2"},Combiner.CombineTextByDelimiter(","),"Merged")
MERGED B
a,b c
b,c d
Table.Contains
11/5/2018 • 2 minutes to read
About
Determines whether the a record appears as a row in the table.
Syntax
Table.Contains(table as table, row as record, optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.Contains is similar to List.Contains but requires a table as input.
Example
Table.Contains(
Table.FromRecords(
),
[Name="Bob"])
equals true
Table.ContainsAll
11/5/2018 • 2 minutes to read
About
Determines whether all of the specified records appear as rows in the table.
Syntax
Table.ContainsAll(table as table, rows as list, optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.ContainsAll is similar to List.ContainsAll but requires a table as input.
Example
Table.ContainsAll(
Table.FromRecords(
),
"CustomerID")
equals true
Table.ContainsAny
11/5/2018 • 2 minutes to read
About
Determines whether any of the specified records appear as rows in the table.
Syntax
Table.ContainsAny(table as table, rows as list, optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.ContainsAny is similar to List.ContainsAny but requires a table as input.
Example
Table.ContainsAny(
About
Demotes the header row down into the first row of a table.
Syntax
Table.DemoteHeaders(table as table) as table
Arguments
ARGUMENT DESCRIPTION
Example
Table.DemoteHeaders(Table.FromRecords(
))
1 Bob 123-4567
Table.Distinct
11/5/2018 • 2 minutes to read
About
Removes duplicate rows from a table, ensuring that all remaining rows are distinct.
Syntax
Table.Distinct(table as table, optional equationCriteria as any) as table
Arguments
ARGUMENT DESCRIPTION
Examples
Table.Distinct(
Table.FromRecords(
), "CustomerID")
ORDERID CUSTOMERID ITEM PRICE
3 2 Fishing net 25
7 5 Bait 3.25
9 6 Bait 3.25
Table.DuplicateColumn
11/5/2018 • 2 minutes to read
Syntax
Table.DuplicateColumn(**table** as table, **columnName** as text,** newColumnName** as text,
optional **columnType** as nullable type) as table
About
Duplicate the column named columnName to the table table . The values and type for the column newColumnName
are copied from column columnName .
Example
Duplicate the column "a" to a column named "copied column" in the table ({[a = 1, b = 2], [a = 3, b = 4]}) .
a |b |copied column
---------|---------|---------
1 | 2 | 1
3 | 4 | 3
Table.ExpandListColumn
11/5/2018 • 2 minutes to read
About
Given a column of lists in a table, create a copy of a row for each value in its list.
Syntax
Table.ExpandListColumn(table as table, column as text) as table
Arguments
ARGUMENT DESCRIPTION
Example
Table.ExpandListColumn(
Table.FromRecords(
}), "Name")
NAME DISCOUNT
Bob 0.15
Jim 0.15
Paul 0.15
Table.ExpandRecordColumn
11/5/2018 • 2 minutes to read
About
Expands a column of records into columns with each of the values.
Syntax
Table.ExpandRecordColumn(table as table, column as text, fieldNames as list, optional
newColumnNames as nullable list) as table
Arguments
ARGUMENT DESCRIPTION
About
Expands a column of records or a column of tables into multiple columns in the containing table.
Syntax
Table.ExpandTableColumn(table as table, column as text, columnNames as list, optional
newColumnNames as nullable list) as table
Arguments
ARGUMENT DESCRIPTION
Syntax
Table.FillDown(table as table, columns as list) as table
About
Returns a table from the table specified where the value of a previous cell is propagated to the null-valued cells
below in the columns specified.
Example 1
Return a table with the null values in column [Place] filled with the value above them from the table.
PLACE NAME
1 Bob
1 John
2 Brad
3 Mark
3 Tom
3 Adam
Table.FillUp
11/5/2018 • 2 minutes to read
Syntax
Table.FillUp(table as table, columns as list) as table
About
Returns a table from the table specified where the value of the next cell is propagated to the null-valued cells
above in the columns specified.
Example 1
Return a table with the null values in column [Column2] filled with the value below them from the table.
COLUMN1 COLUMN2
1 2
3 3
5 3
Table.FilterWithDataTable
11/5/2018 • 2 minutes to read
Syntax
Table.FilterWithDataTable(**table** as table, **dataTableIdentifier** as text) as any
About
Table.FilterWithDataTable
Table.FindText
11/5/2018 • 2 minutes to read
About
Returns a table containing only the rows that have the specified text within one of their cells or any part thereof.
Syntax
Table.FindText (table as table, text as text) as table
Arguments
ARGUMENT DESCRIPTION
Example
Table.FindText(Table.FromRecords(
), "Bob")
1 Bob 123-4567
Table.First
11/5/2018 • 2 minutes to read
About
Returns the first row from a table.
Syntax
Table.First(table as table, optional default as any) as any
Arguments
ARGUMENT DESCRIPTION
Remarks
If the table is empty, Table.First returns null.
Example
Table.First(Table.FromRecords({
}))
NAME VALUE
CustomerID 1
Name Bob
Phone 123-4567
Table.FirstN
11/5/2018 • 2 minutes to read
About
Returns the first row (s) of a table, depending on the countOrCondition parameter.
Syntax
Table.FirstN( table as table, optional countOrCondition as any) as table
Arguments
ARGUMENT DESCRIPTION
optional countOrCondition Depending on the type, more than one row will be returned.
Remarks
If countOrCondition is a number, many rows (starting at the top) will be returned.
If countOrCondition is a condition, the rows that meet the condition will be returned until a row does not
meet the condition.
Example
Table.FirstN(Table.FromRecords({
}), 2)
1 Bob 123-4567
2 Jim 987-6543
Table.FirstValue
11/5/2018 • 2 minutes to read
Syntax
Table.FirstValue(**table** as table, optional **default** as any) as any
About
Returns the first column of the first row of the table table or a specified default value.
Table.FromColumns
11/5/2018 • 2 minutes to read
About
Returns a table from a list containing nested lists with the column names and values.
Syntax
Table.FromColumns(lists as list, optional columns as any) as table
Arguments
ARGUMENT DESCRIPTION
optional columns Optional parameter to provide names and types for the
columns.
Remarks
If some columns have more values then others, the missing values will be filled with the default value, 'null', if
the columns are nullable.
Examples
Table.FromColumns({
1 2 3
About
Converts a list into a table by applying the specified splitting function to each item in the list.
Syntax
Table.FromList(list as list, optional splitter as nullable function, optional columns as any,
optional default as any, optional extraValues as any) as table
Arguments
ARGUMENT DESCRIPTION
optional columns A list of text values specifying the column names of the
resulting table.
optional default A default can be provided to be used for missing values in the
table.
Example
Table.FromList(
1 Bob 123-4567
2 Jim 987-6543
Table.FromPartitions
11/5/2018 • 2 minutes to read
About
Returns a table that is the result of combining a set of partitioned tables into new columns. The type of the column
can optionally be specified, the default is any.
Syntax
Table.FromPartitions ( partitionColumn as text, partitions as list, optional partitionColumnType
as nullable type) as table
Arguments
ARGUMENT DESCRIPTION
partitionColumn The name of the column where the values from the paritions
will added.
Example
Table.FromPartitions("Year",
{{1994, Table.FromPartitions("Month", {
{"Jan", Table.FromPartitions("Day", {
{"Feb", Table.FromPartitions("Day",
})}})}})}})
equals
Syntax
Table.FromRecords(records as list, optional columns as any, optional missingField as nullable
number) as table
About
Converts records , a list of records, into a table.
Example 1
Create a table from records, using record field names as column names.
1 Bob 123-4567
2 Jim 987-6543
3 Paul 543-7890
Example 2
Create a table from records with typed columns and select the number columns.
CustomerID
Table.FromRows
11/5/2018 • 2 minutes to read
About
Creates a table from the list rows where each element of the list is an inner list that contains the column values for
a single row. An optional list of column names, a table type, or a number of columns could be provided for
columns .
Syntax
Table.FromRows(rows as list, optional columns as any) as table
Arguments
ARGUMENT DESCRIPTION
Example
Table.FromRows({{1, "Bob", "123-4567"} , {2, "Jim", "987-6543"}}, {"CustomerID ", "Name", "Phone"})
1 Bob 123-4567
2 Jim 987-6543
Table.FromValue
11/5/2018 • 2 minutes to read
About
Returns a table with a column containing the provided value or list of values.
Syntax
Table.FromValue (value as any) as table
Arguments
ARGUMENT DESCRIPTION
Example
Table.FromValue({1, "Bob", "123-4567"}) equals
VALUE
Bob
132-4567
Table.Group
11/5/2018 • 2 minutes to read
About
Groups table rows by the values of key columns for each row.
Syntax
Table.Group(table as table, key as any, aggregatedColumns as list, optional groupKind as nullable
number, optional comparer as nullable function) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
The type of the resulting table is computed by preserving the columns that make up the group key,
including their types, and appending new columns with names and types according to the names and
function return types specified in the aggregatedColumns argument.
For each group, a record is constructed containing the key columns, including their values, along with any
aggregated columns from the aggregatedColumns argument. A table of these group results is returned.
A group can be local (GroupKind.Local) or global (GroupKind.Global). A local group is formed from a
consecutive sequence of rows from an input table with the same key value. A global group is formed from
all rows in an input table with the same key value. Multiple local groups may be produced with the same key
value but only a single global group is produced for a given key value.
The default groupKind value is GroupKind.Global.
The Table.Group function may also be used to nest the rows in a group.
Example
let
Orders = Table.FromRecords({
})
in
CUSTOMERID TOTAL
1 125
2 25
3 202
5 103.25
6 3.25
Table.HasColumns
11/5/2018 • 2 minutes to read
About
Returns true if a table has the specified column or columns.
Syntax
Table.HasColumns(table as table, columns as any) as logical
Arguments
ARGUMENT DESCRIPTION
columns The columns to check for as a text value or a list of text values.
Remarks
Table.HasColumns is similar to Record.HasFields but requires a table as input.
Examples
Table.HasColumns(Table.FromRecords(
),"Name")
equals true
Table.InsertRows
11/5/2018 • 2 minutes to read
About
Returns a table with the list of rows inserted into the table at an index. Each row to insert must match the row type
of the table..
Syntax
Table.InsertRows(table as table, offset as number, rows as list) as table
Arguments
ARGUMENT DESCRIPTION
Remark
Table.InsertRows is similar to List.InsertRange but requires a table as input.
Example
Table.InsertRows(Table.FromRecords({
2,
Table.InsertRows(Table.FromRecords({
2,
1 Bob 123-4567
2 Jim 987-6543
3 Paul 543-7890
Table.IsDistinct
11/5/2018 • 2 minutes to read
About
Determines whether a table contains only distinct rows.
Syntax
Table.IsDistinct(table as table, optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Example
Table.IsDistinct
Table.FromRecords(
))
equals true
Table.IsEmpty
11/5/2018 • 2 minutes to read
About
Returns true if the table does not contain any rows.
Syntax
Table.IsEmpty(table as table) as logical
Arguments
ARGUMENT DESCRIPTION
Example
let
emptyTable = Table.FromRows({}),
in
IsEmptyTest1 = Table.IsEmpty(emptyTable),
IsEmptyTest2 = Table.IsEmpty(tableValue),
RowCount = Table.RowCount(tableValue),
ColumnCount = Table.ColumnCount(tableValue)
equals
IsEmptyTest1 true
IsEmptyTest2 false
RowCount 2
ColumnCount 3
Table.Join
11/5/2018 • 2 minutes to read
Syntax
Table.Join(table1 as table, key1 as any, table2 as table, key2 as any, optional joinKind as
nullable number, optional joinAlgorithm as nullable number, optional keyEqualityComparers as
nullable list) as table
About
Joins the rows of table1 with the rows of table2 based on the equality of the values of the key columns selected
by key1 (for table1 ) and key2 (for table2 ).
By default, an inner join is performed, however an optional joinKind may be included to specify the type of join.
Options include:
JoinKind.Inner
JoinKind.LeftOuter
JoinKind.RightOuter
JoinKind.FullOuter
JoinKind.LeftAnti
JoinKind.RightAnti
An optional set of keyEqualityComparers may be included to specify how to compare the key columns.
Example 1
Inner join the two tables on [CustomerID ]
Table.Join
(Table.FromRecords({
[CustomerID = 1, Name = "Bob", Phone = "123-4567"],
[CustomerID = 2, Name = "Jim", Phone = "987-6543"],
[CustomerID = 3, Name = "Paul", Phone = "543-7890"],
[CustomerID = 4, Name = "Ringo", Phone = "232-1550"]}),
"CustomerID", Table.FromRecords({ [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0],
[OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0],
[OrderID = 3, CustomerID = 2, Item = "Fishing net", Price = 25.0],
[OrderID = 4, CustomerID = 3, Item = "Fish tazer", Price = 200.0],
[OrderID = 5, CustomerID = 3, Item = "Bandaids", Price = 2.0],
[OrderID = 6, CustomerID = 1, Item = "Tackle box", Price = 20.0],
[OrderID = 7, CustomerID = 5, Item = "Bait", Price = 3.25],
[OrderID = 8, CustomerID = 5, Item = "Fishing Rod", Price = 100.0],
[OrderID = 9, CustomerID = 6, Item = "Bait", Price = 3.25]}), "CustomerID")
About
Returns a list of key column names from a table.
Syntax
Table.Keys(table as table) as list
Arguments
ARGUMENT DESCRIPTION
Example
let
table = Table.FromRecords(
}),
keys = Table.Keys(resultTable),
in
#"Expand Column1.Columns"
COLUMN1.COLUMNS COLUMN1.PRIMARY
CustomerID 1
Table.Last
11/5/2018 • 2 minutes to read
About
Returns the last row of a table.
Syntax
Table.Last(table as table, optional default as) as any
Arguments
ARGUMENT DESCRIPTION
Remark
If the table is empty, Table.Last returns null.
Example
Table.Last(Table.FromRecords({
}))
NAME VALUE
CustomerID 3
Name Paul
Phone 543-7890
Table.LastN
11/5/2018 • 2 minutes to read
About
Returns the last row (s) from a table, depending on the countOrCondition parameter.
Syntax
Table.LastN(table as table, countOrCondition as any) as table
Arguments
ARGUMENT DESCRIPTION
countOrCondition Depending on the type, more than one row will be returned.
Remarks
If countOrCondition is a number, that many rows will be returned starting from the end of the table.
If countOrCondition is a condition, the rows that meet the condition will be returned in ascending position
until a row does not meet the condition.
Example
Table.LastN(Table.FromRecords({
}), 1)
3 Paul 543-7890
Table.MatchesAllRows
11/5/2018 • 2 minutes to read
About
Returns true if all of the rows in a table meet a condition.
Syntax
Table.MatchesAllRows(table as table, condition as function) as logical
Arguments
ARGUMENT DESCRIPTION
Remark
Table.MatchesAllRows is similar to List.MatchesAll but requires a table argument.
Example
Table.MatchesAllRows(Table.FromRecords (
equals false
Table.MatchesAnyRows
11/5/2018 • 2 minutes to read
About
Returns true if any of the rows in a table meet a condition.
Syntax
Table.MatchesAnyRows( table as table, condition as function) as logical
Arguments
ARGUMENT DESCRIPTION
Remark
Table.MatchesAnyRows is similar to List.MatchesAny but requires a table argument.
Example
Table.MatchesAnyRows(Table.FromRecords (
equals true
Table.Max
11/5/2018 • 2 minutes to read
About
Returns the largest row or rows from a table using a comparisonCriteria.
Syntax
Table.Max(table as table, comparisonCriteria as any, optional default as any) as any
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.Max is similar to List.Max but requires a table as input.
Example
Table.Max(Employees, "Salary") equals [Name="Jeff", Level=10, Salary=200000]
Name Jeff
Level 10
Salary 200000
Table.MaxN
11/5/2018 • 2 minutes to read
About
Returns the largest N rows from a table. After the rows are sorted, the countOrCondition parameter must be
specified to further filter the result.
Syntax
Table.MaxN(table as table, comparisonCriteria as any, countOrCondition as any) as table
Arguments
ARGUMENT DESCRIPTION
ARGUMENT DESCRIPTION
Examples
Table.MaxN(Employees, "Salary", 3)
equals Table.FromRecords({[Name="Jeff", Level=10, Salary=200000]
[Name="Barb", Level=8, Salary=150000]
[Name="Bill", Level=7, Salary=100000]})
About
Returns the smallest row or rows from a table using a comparisonCriteria.
Syntax
Table.Min(table as table, comparisonCriteria as any, optional default as any) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.Min is similar to List.Min but requires a table as input.
Example
let
Employees = Table.FromRecords(
type table [
Name = text,
Level = number,
Salary = number
])
in
Table.Min(Employees, "Salary")
Name Margo
Level 3
Salary 45000
Table.MinN
11/5/2018 • 2 minutes to read
About
Returns the smallest N rows in the given table. After the rows are sorted, the countOrCondition parameter must
be specified to further filter the result.
Syntax
Table.MinN(table as table, comparisonCriteria as any, countOrCondition as any) as table
Arguments
ARGUMENT DESCRIPTION
countOrCondition After the rows are sorted, countOrCondition further filters the
result.
SETTING DESCRIPTION
Examples
Table.MinN(Employees, "Salary", 3) equals
Margo 3 45000
Nikki 5 75000
Andrew 6 85000
Table.MinN(Employees, "Salary", each [Level] < 6) equals
Margo 3 45000
Nikki 5 75000
Table.NestedJoin
11/5/2018 • 2 minutes to read
Syntax
Table.NestedJoin(table1 as table, key1 as any, table2 as any, key2 as any, newColumnName as text,
optional joinKind as nullable number, optional keyEqualityComparers as nullable list) as table
About
Joins the rows of table1 with the rows of table2 based on the equality of the values of the key columns selected
by key1 (for table1 ) and key2 (for table2 ). The results are entered into the column named newColumnName .
The optional joinKind specifies the kind of join to perform. By default, a left outer join is performed if a joinKind
is not specified.
An optional set of keyEqualityComparers may be included to specify how to compare the key columns.
Table.Partition
11/5/2018 • 2 minutes to read
About
Partitions the table into a list of groups number of tables, based on the value of the column of each row and a hash
function. The hash function is applied to the value of the column of a row to obtain a hash value for the row. The
hash value modulo groups determines in which of the returned tables the row will be placed.
Syntax
Table.Partition ( table as table, column as text, groups as number, hash as function) as list
Arguments
ARGUMENT DESCRIPTION
Example
Table.Partition(Table.FromRecords({[A=1], [A=2], [A=3], [A=4], [A=5], [A=6]}),"A", 2, each _)
About
Returns information about how a table is partitioned.
Syntax
Table.PartitionValues(table as table) as table;
Arguments
ARGUMENT DESCRIPTION
Remarks
A table is returned where each column is a partition column in the original table, and each row corresponds to a
partition in the original table.
Table.Pivot
11/5/2018 • 2 minutes to read
About
Given a table and attribute column containing pivotValues, creates new columns for each of the pivot values and
assigns them values from the valueColumn. An optional aggregationFunction can be provided to handle multiple
occurrence of the same key value in the attribute column.
Syntax
Table.Pivot(table as table, pivotValues as list, attributeColumn as text, valueColumn as text,
optional aggregationFunction as nullable function) as table
Arguments
ARGUMENT DESCRIPTION
Examples
// Simple input with no key + attribute conflicts. In other words, (key,attribute) is unique.
Table.Pivot(
Table.FromRecords({
key1 1 null 3
KEY ATTRIBUTE1 ATTRIBUTE2 ATTRIBUTE3
key2 2 4 null
// Same input as Example 2, but with an additional function specified to resolve the conflict – in this case,
to take the minimum value. Note that this resolution method is the same as the PIVOT clause in SQL Server and
most other DBMS’s.
Table.Pivot(
Table.FromRecords({
key2 2 4 null
Table.PositionOf
11/5/2018 • 2 minutes to read
About
Determines the position or positions of a row within a table.
Syntax
Table.PositionOf(table as table, row as record, optional occurrence as nullable number, optional
equationCriteria as any) as any
Arguments
ARGUMENT DESCRIPTION
Occurrence specification
Occurrence.First = 0
Occurrence.Last = 1
Occurrence.All = 2
Remarks
Table.PositionOf is similar to List.PositionOf but requires a table as input.
Examples
Table.PositionOf(
Table.FromRecords({
[A=1, B=2], [A=3, B=4], [A=1 B=6]}),
[A=3,B=4])
equals 1
Table.PositionOf(
Table.FromRecords({
[A=1, B=2], [A=3, B=4], [A=1, B=6]}),
[A=1],
Occurrence.All, "A")
equals {0, 2}
Table.PositionOfAny
11/5/2018 • 2 minutes to read
About
Determines the position or positions of any of the specified rows within the table.
Syntax
Table.PositionOfAny(table as table, rows as list, optional occurrence as nullable number, optional
equationCriteria as any) as any
Arguments
ARGUMENT DESCRIPTION
Occurrence specification
Occurrence.First = 0
Occurrence.Last = 1
Occurrence.All = 2
Remarks
Table.PositionOfAny is similar to List.PositionOfAny but requires a table as input.
Examples
Table.PositionOfAny(
Table.FromRecords({[A=1, B=2],[A=3, B=4],[A=1, B=6]}),
{[A=2, B=6],[A=3, B=4]})
equals 1
Table.PositionOfAny(
Table.FromRecords({[A=1, B=2],[A=3, B=4],[A=1, B=6]}),
{[A=3, B=7],[A=1, B=6]},
Occurrence.All, "A")
equals {0, 1, 2}
Table.Profile
11/5/2018 • 2 minutes to read
Syntax
Table.Profile(table as table) as table
About
Returns a profile for the columns in table.
The following information is returned for each column (when applicable):
VALUE
minimum
maximum
average
standard deviation
count
null count
distinct count
Table.PrefixColumns
11/5/2018 • 2 minutes to read
About
Returns a table where the columns have all been prefixed with a text value.
Syntax
Table.PrefixColumns(table as table, prefix as text) as table
Arguments
ARGUMENT DESCRIPTION
Example
Table.PrefixColumns(Table.FromRecords(
), "MyTable")
1 Bob 123-4567
Table.PromoteHeaders
11/5/2018 • 2 minutes to read
Syntax
Table.PromoteHeaders(table as table, optional options as nullable record) as table
About
Promotes the first row of values as the new column headers (i.e. column names). By default, only text or number
values are promoted to headers. Valid options: PromoteAllScalars : If set to true , all the scalar values in the first
row are promoted to headers using the Culture , if specified (or current document locale). For values that cannot
be converted to text, a default column name will be used. Culture : A culture name specifying the culture for the
data.
Example 1
Promote the first row of values in the table.
Example 2
Promote all the scalars in the first row of the table to headers.
powerquery-mTable.PromoteHeaders(Table.FromRecords({[Rank = 1, Name = "Name", Date = #date(1980,1,1)],[Rank =
1, Name = "Bob", Date = #date(1980,1,1)]}), [PromoteAllScalars = true, Culture = "en-US"])
1 NAME 1/1/1980
About
Returns the specified number of rows from a table starting at an offset.
Syntax
Table.Range( table as table, offset as number, optional count as nullable number) as table
Arguments
ARGUMENT DESCRIPTION
Remark
Table.Range is similar to List.Range but requires a table as input.
Example
Table.Range(Table.FromRecords({
}), 1, 2)
2 Jim 987-6543
3 Paul 543-7890
Table.RemoveColumns
11/5/2018 • 2 minutes to read
About
Returns a table without a specific column or columns.
Syntax
Table.RemoveColumns(table as table, columns as any, optional missingField as nullable number) as
table
Arguments
ARGUMENT DESCRIPTION
columns A text value or a list of text values with the names of the
columns to remove. missingField is a number value provided
to specify handling for missing fields.
Remarks
Table.RemoveColumns is similar to Record.RemoveFields applied to every row in a table.
Examples
Table.RemoveColumns(Table.FromRecords({[CustomerID=1, Name="Bob", Phone = "123-4567"]}), "Phone")
CUSTOMERID NAME
1 Bob
Table.RemoveFirstN
11/5/2018 • 2 minutes to read
About
Returns a table with the specified number of rows removed from the table starting at the first row. The number of
rows removed depends on the optional countOrCondition parameter.
Syntax
Table.RemoveFirstN( table as table, optional countOrCondition as any) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
If countOrCondidtion is omitted only the first row is removed
If countOrCondidtion is a number, that many rows (starting from the top) will be removed)
If countOrCondidtion is a condition, the rows that meet the condition will be removed until a rows does not
meet the condition
Example
Table.RemoveFirstN(
Table.FromRecords(
), 2)
CUSTOMERID NAME PHONE
3 Paul 543-7890
4 Ringo 232-1550
Table.RemoveFirstN(
Table.FromRecords(
3 Paul 543-7890
4 Ringo 232-1550
Table.RemoveLastN
11/5/2018 • 2 minutes to read
About
Returns a table with the specified number of rows removed from the table starting at the last row. The number of
rows removed depends on the optional countOrCondition parameter.
Syntax
Table.RemoveLastN( table as table, optional countOrCondition as any) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
If countOrCondidtion is omitted only the first row is removed
If countOrCondidtion is a number, that many rows (starting from the top) will be removed)
If countOrCondidtion is a condition, the rows that meet the condition will be removed until a rows does not
meet the condition
Example
Table.RemoveLastN(
Table.FromRecords(
), 2)
CUSTOMERID NAME PHONE
1 Bob 123-4567
2 Jim 987-6543
3 Paul 543-7890
Table.RemoveLastN(
Table.FromRecords(
1 Bob 123-4567
2 Jim 987-6543
Table.RemoveMatchingRows
11/5/2018 • 2 minutes to read
About
Removes all occurrences of rows from a table.
Syntax
Table.RemoveMatchingRows(table as table, rows as list, optional equationCriteria as any) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.RemoveMatchingRows is similar to List.RemoveMatchingItems but requires a table as input.
Example
Table.RemoveMatchingRows(Table.FromRecords(
2 1 1 lb. worms 5
3 2 Fishing net 25
6 1 Tackle box 20
7 5 Bait 3.25
9 6 Bait 3.25
Table.RemoveRows
11/5/2018 • 2 minutes to read
About
Returns a table with the specified number of rows removed from the table starting at an offset.
Syntax
Table.RemoveRows( table as table, offset as number, optional count as nullable number) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.RemoveRows is similar to List.RemoveRange but requires a table as input.
Example
Table.RemoveRows(Table.FromRecords({
}), 2)
1 Bob 123-4567
2 Jim 987-6543
4 Ringo 232-1550
Table.RemoveRowsWithErrors
11/5/2018 • 2 minutes to read
About
Returns a table with all rows removed from the table that contain an error in at least one of the cells in a row.
Syntax
Table.RemoveRowsWithErrors(table as table, optional columns as nullable list) as table
Arguments
ARGUMENT DESCRIPTION
optional columns Only cells in the column list are inspected for errors.
Remarks
Only errors detected by directly accessing the cell are considered. Errors nested more deeply, such as a
structured value in a cell, are ignored.
Example
Table.RemoveRowsWithErrors(
Table.FromRecords({[Column1=...],[Column1=2], [Column1=3]}))
equals
COLUMN1
3
Table.RenameColumns
11/5/2018 • 2 minutes to read
About
Returns a table with the columns renamed as specified.
Syntax
Table.RenameColumns(table as table, renames as list, optional missingField as nullable number) as
table
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.RenameColumns is similar to Record.RenameFields applied to every row in a table.
Examples
Table.RenameColumns(Table.FromRecords({
{"CustomerNum", "CustomerID"})
1 Bob 123-4567
Table.RenameColumns(Table.FromRecords({
About
Returns a table with specific columns in an order relative to one another, without changing the order of the
columns that aren’t specified.
Syntax
Table.ReorderColumns(table as table, columnOrder as list, optional missingField as nullable
number) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.ReorderColumns is similar to Record.ReorderFields applied to every row in a table.
Columns that are not specified will remain in the same location and the specified columns will be ordered
around them.
Examples
Table.ReorderColumns(Table.FromRecords({[CustomerID=1, Phone = "123-4567", Name ="Bob"] }), {"Name","Phone"})
1 Bob 123-4567
1 Bob 123-4567
Table.ReorderColumns(Table.FromRecords({
Table.ReorderColumns(Table.FromRecords({
ddress1 Address2
1 Bob 123-4567
Table.Repeat
11/5/2018 • 2 minutes to read
About
Returns a table containing the rows of the table repeated the count number of times.
Syntax
Table.Repeat(table as table, count as number) as table
Arguments
ARGUMENT DESCRIPTION
Example
Table.Repeat(Table.FromRecords({[Column1=1], [Column1=2]}), 2)
COLUMN1
2
Table.ReplaceErrorValues
11/5/2018 • 2 minutes to read
About
Replaces the error values in the specified columns with the corresponding specified value.
Syntax
Table.ReplaceErrorValues(table as table, errorReplacement as list) as table
Arguments
ARGUMENT DESCRIPTION
errorReplacement The list of columns and the value to replace the errors with.
The form of the list is {{column1, value1},…}
Remarks
There may be only one replacement value per column, specifying the column more than one will result in an
error
Example
Table.ReplaceErrorValues(
Table.FromRows({{1,"hello"},{3,...}}, {"Column1","Column2"}),
{"Column2", "world"})
COLUMN1 COLUMN2
1 hello
2 world
Table.ReplaceKeys
11/5/2018 • 2 minutes to read
About
Returns a new table with new key information set in the keys argument.
Syntax
Table.ReplaceKeys(table as table, keys as list) as table
Arguments
ARGUMENT DESCRIPTION
keys A list with two fields: Columns and Primary. Columns is a list
of columns that are keys. Primary is a primary key.
Example
Table.ReplaceKeys(Table.FromRecords({[A={[B=1], [B=2]}, C=1]}), {[Columns = {"C"}, Primary = true]})
Table.ReplaceMatchingRows
11/5/2018 • 2 minutes to read
About
Replaces specific rows from a table with the new rows.
Syntax
Table.ReplaceMatchingRows(table as table, replacements as list, optional equationCriteria as any)
as table
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.ReplaceMatchingRows is similar to List.ReplaceMatchingRows but requires a table as input.
The new rows must be compatible with the type of the table .
Example
Table.ReplaceMatchingRows(
Table.FromRecords(
[Column1 = 1, Column2 = 2]
}),{
COLUMN1 COLUMN2
-1 -2
-2 -3
3 4
-1 -2
Table.ReplaceRelationshipIdentity
11/5/2018 • 2 minutes to read
Syntax
Table.ReplaceRelationshipIdentity(**value** as any, **identity** as text) as any
About
Table.ReplaceRelationshipIdentity
Table.ReplaceRows
11/5/2018 • 2 minutes to read
About
Returns a table where the rows beginning at an offset and continuing for count are replaced with the provided
rows.
Syntax
Table.ReplaceRows(table as table, offset as number, count as number, rows as list) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.ReplaceRows is similar to List.ReplaceRange but requires a table as input.
Example
Table.ReplaceRows(Table.FromRecords({[Column1=1], [Column1=2], [Column1=3], [Column1=4], [Column1=5]}), 1, 3,
{[Column1=6], [Column1=7]})
COLUMN1
5
Table.ReplaceValue
11/5/2018 • 2 minutes to read
About
Replaces oldValue with newValue in specific columns of a table, using the provided replacer function, such as
text.Replace or Value.Replace.
Syntax
Table.ReplaceValue(table as table, oldValue as any, newValue as any,replacer as function,
columnsToSearch as {Text}) as table
Arguments
ARGUMENT DESCRIPTION
Examples
Table.ReplaceValue(
Table.FromRecords(
),
"Bob",
Text.Replace, {"Name"})
2 Jim 987-6543
3 Paul 543-7890
4 Ringo 232-1550
Table.ReverseRows
11/5/2018 • 2 minutes to read
Syntax
Table.ReverseRows(table as table) as table
About
Returns a table with the rows from the input table in reverse order.
Example 1
Reverse the rows in the table.
4 Ringo 232-1550
3 Paul 543-7890
2 Jim 987-6543
1 Bob 123-4567
Table.RowCount
11/5/2018 • 2 minutes to read
About
Returns the number of rows in a table.
Syntax
Table.RowCount(table as table) as number
Arguments
ARGUMENT DESCRIPTION
Example
let
emptyTable = Table.FromRows({}),
in
IsEmptyTest1 = Table.IsEmpty(emptyTable),
IsEmptyTest2 = Table.IsEmpty(tableValue),
RowCount = Table.RowCount(tableValue),
ColumnCount = Table.ColumnCount(tableValue)
equals
IsEmptyTest1 true
IsEmptyTest2 false
RowCount 2
ColumnCount 3
Table.Schema
11/5/2018 • 2 minutes to read
Syntax
Table.Schema(table as table) as table
About
Returns a table describing the columns of table .
Each row in the table describes the properties of a column of table :
>
NativeTypeName The name of the type of the column in the native type system
of the source (e.g. nvarchar for SQL Server).
NativeDefaultExpression The default expression for a value of this column in the native
expression language of the source (e.g. 42 or newid() for
SQL Server).
About
Returns a table that contains only specific columns.
Syntax
Table.SelectColumns(table as table, columns as any, optional missingField as any) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.SelectColumns is similar to Record.SelectFields applied to every row in a table.
Examples
Table.SelectColumns(Table.FromRecords(
), "Name")
NAME
Bob
Jim
NAME
Paul
Ringo
Table.SelectColumns(Table.FromRecords({
CUSTOMERID NAME
1 Bob
Table.SelectColumns(Table.FromRecords({
CUSTOMERID NEWCOLUMN
1 null
Table.SelectRows
11/5/2018 • 2 minutes to read
About
Returns a table containing only the rows that match a condition.
Syntax
Table.SelectRows(table as table, condition as function) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
Table. SelectRows is similar to List. Select but requires a table as input.
Examples
Table.SelectRows(Table.FromRecords(
3 Paul 543-7890
4 Ringo 232-1550
Table.SelectRowsWithErrors
11/5/2018 • 2 minutes to read
About
Returns a table with only the rows from table that contain an error in at least one of the cells in a row.
Syntax
Table.SelectRowsWithErrors(table as table, optional columns as nullable list) as table
Arguments
ARGUMENT DESCRIPTION
optional columns Only cells in the column list are inspected for errors.
Remarks
Only errors detected by directly accessing the cell are considered. Errors nested more deeply, such as a
structured value in a cell, are ignored.
Example
Table.SelectRowsWithErrors(Table.FromRecords(
))
About
Returns a single row from a table.
Syntax
Table.SingleRow(table as table) as record
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.SingleRow is similar to List.Single but requires a table as input.
Example
Table.SingleRow(Table.FromRecords(
))
CustomerID 1
Name Bob
Phone 123-4567
Table.Skip
11/5/2018 • 2 minutes to read
About
Returns a table that does not contain the first row or rows of the table.
Syntax
Table.Skip(table as table, optional countOrCondition as any) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.Skip is similar to List.Skip but requires a table as input.
If countOrCondition is a number, that many rows (starting at the top) will be skipped.
If countOrCondition is a condition, the rows that meet the condition will be skipped until a row does not
meet the condition.
Examples
Table.Skip(Table.FromRecords(
), 2)
3 Paul 543-7890
CUSTOMERID NAME PHONE
4 Ringo 232-1550
Table.Sort
11/5/2018 • 2 minutes to read
About
Sorts the rows in a table using a comparisonCriteria or a default ordering if one is not specified.
Syntax
Table.Sort(table as table, optional comparisonCriteria as any) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.Sort is similar to List.Sort but requires a table as input.
Examples
Table.Sort(
Table.FromRecords(
),
2 1 1 lb. worms 5
6 1 Tackle box 20
3 2 Fishing net 25
5 3 Bandaids 2
7 5 Bait 3.25
9 6 Bait 3.25
Table.SplitColumn
11/5/2018 • 2 minutes to read
About
Returns a new set of columns from a single column applying a splitter function to each value.
Syntax
Table.SplitColumn(table as table, sourceColumn as text, splitter as function, optional
columnNamesOrNumber as any, optional default as any, optional extraValues as any) as record
Arguments
ARGUMENT DESCRIPTION
splitter
columnNamesOrNumber List of column names that do not conflict with columns from
the target table.
Example
let
Customers = Table.FromRecords({
})
in
Table.SplitColumn(Customers,"Name",Splitter.SplitTextByDelimiter("i"),2)
CUSTOMERID NAME.1 NAME.2 PHONE
1 Bob 123-4567
2 J m 987-6543
3 Paul 543-7890
4 R ngo 232-1550
Table.ToColumns
11/5/2018 • 2 minutes to read
About
Returns a list of nested lists each representing a column of values in the input table.
Syntax
Table.ToColumns(table as table) as list
Arguments
ARGUMENT DESCRIPTION
Example
let
Source = Table.ToColumns(Table.FromRecords(
}))
in
Source
equals
{1, 2},
{"Bob", "Jim"},
{ "123-4567", "987-6543"}
}
Table.ToList
11/5/2018 • 2 minutes to read
About
Returns a table into a list by applying the specified combining function to each row of values in a table.
Syntax
Table.ToList(table as table, optional combiner as nullable function) as list
Arguments
ARGUMENT DESCRIPTION
optional combiner The combiner function is applied to each row in the table to
produce a single value for the row.
Example
let
input = Table.FromRows({
{Number.ToText(1),"Bob", "123-4567" },
in
Table.ToList(input, Combiner.CombineTextByDelimiter(","))
equals
"1,Bob,123-4567",
"2,Jim,987-6543",
"3,Paul,543-7890"
}
Table.ToRecords
11/5/2018 • 2 minutes to read
About
Returns a list of records from an input table.
Syntax
Table.ToRecords(table as table) as list
Arguments
ARGUMENT DESCRIPTION
Example
Table.ToRecords(Table.FromRows({{"1", "2"}},{"a", "b"})) equals {[a = "1", b = "2"]}
Table.ToRows
11/5/2018 • 2 minutes to read
About
Returns a nested list of row values from an input table.
Syntax
Table.ToRows(table as table) as list
Arguments
ARGUMENT DESCRIPTION
Example
let
Source = Table.ToRows(Table.FromRecords({
}))
in
Source
equals
}
Table.TransformColumnNames
11/5/2018 • 2 minutes to read
About
Transforms column names by using the given nameGenerator function. Valid options: MaxLength specifies the
maximum length of new column names. If the given function results with a longer column name, the long name
will be trimmed. Comparer is used to control the comparison while generating new column names. Comparers can
be used to provide case insensitive or culture and locale aware comparisons. The following built in comparers are
available in the formula language:
Comparer.Ordinal : Used to perform an exact ordinal comparison
Comparer.OrdinalIgnoreCase : Used to perform an exact ordinal case-insensitive comparison
Comparer.FromCulture : Used to perform a culture aware comparison
Syntax
Table.TransformColumnNames(table as table, nameGenerator as function, optional options as nullable
record) as table
Example 1
Remove the #(tab) character from column names
COLUMN
Example 2
Transform column names to generate case-insensitive names of length 6.
|Column|cOlum1|coLum2|
|----------|
|1|2|3|
Table.TransformColumns
11/5/2018 • 2 minutes to read
About
Transforms columns from a table using a function.
Syntax
Table.TransformColumns(table as table, transformOperations as list, optional defaultTransformation
as nullable function, optional missingField as nullable number) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.TransformColumns is similar to Record.TransformFields applied to every row in a table.
Examples
Table.TransformColumns(
Table.FromRecords({[A="1", B=2], [A="5", B=10]}),
{"A", Number.FromText})
equals Table.FromRecords({[A=1,B=2], [A=5,B=10]})
Table.TransformColumns(
Table.FromRecords({[A="1",B=2], [A="5", B=10]}),
{{"A", Number.FromText},
{"B", each _ + 1}})
equals Table.FromRecords({[A=1,B=3], [A=5,B=11]})
Table.TransformColumns(
Table.FromRecords({[A="1",B=2], [A="5", B=10]}),
{"X", Number.FromText})
equals Expression.Error
Table.TransformColumns(
Table.FromRecords({[A="1",B=2], [A="5", B=10]}),
{"X", Number.FromText},
MissingField.Ignore)
equals Table.FromRecords({[A="1",B=2], [A="5",B=10]})
Table.TransformColumns(
Table.FromRecords({[A="1",B=2], [A="5", B=10]}),
{"X", Number.FromText},
MissingField.UseNull)
equals Table.FromRecords({[A="1",B=2,X=/* Expression.Error*/],
[A="5",B=10,X=/* Expression.Error error*/]})
Table.TransformColumnTypes
11/5/2018 • 2 minutes to read
About
Transforms the column types from a table using a type.
Syntax
Table.TransformColumnTypes(table as table, typeTransformations as list, optional culture as
nullable text) as table
Arguments
ARGUMENT DESCRIPTION
Examples
Table.TransformColumnTypes(
Table.FromRecords({
[A="1",B=2], [A="5", B=10]}),
{"A", type number})
equals Table.FromRecords({
[A=1,B=2], [A=5,B=10]})
Table.TransformColumnTypes(
Table.FromRecords({
[A="1",B=2],
[A="5", B=10]}),
{"X", type number})
equals Expression.Error
Table.TransformColumnTypes(
Table.FromRecords({
[A="1/10/1990",B="29,000"],
[A="2/10/1990", B="29.000"]}),
{{"A", type date}, {"B", type number}}, "en-US")
equals Table.FromRecords({
[A=#date(1990, 10, 1),B=29000],
[A=#date(1990, 10, 2),B=29]})
Table.TransformRows
11/5/2018 • 2 minutes to read
About
Transforms the rows from a table using a transform function.
Syntax
Table.TransformRows(table as table, transform as function) as list
Arguments
ARGUMENT DESCRIPTION
Remarks
Table.TransformRows is similar to List.Transform but requires a table as input.
Example
Table.TransformRows( Table.FromRecords({[A=1], [A=2], [A=3], [A=4], [A=5]}), each [A]) equals {1, 2, 3,
4, 5}
Table.Transpose
11/5/2018 • 2 minutes to read
About
Returns a table with columns converted to rows and rows converted to columns from the input table.
Syntax
Table.Transpose(table as table, optional columns as any) as table
Arguments
ARGUMENT DESCRIPTION
Example
Table.PromoteHeaders(
Table.Transpose(
Table.DemoteHeaders(
Table.FromRecords({
})
Value Fred 42 UK
Table.Unpivot
11/5/2018 • 2 minutes to read
About
Given a list of table columns, transforms those columns into attribute-value pairs.
Syntax
Table.Unpivot(table as table, pivotColumns as list, attributeColumn as text, valueColumn as text)
as table
Arguments
ARGUMENT DESCRIPTION
Remarks
The transformation is patterned after the SQL UNPIVOT operator.
Examples
Table.Unpivot(Table.FromRecords({
key1 attribute1 1
key1 attribute3 3
Table.UnpivotOtherColumns
11/5/2018 • 2 minutes to read
About
Translates all columns other than a specified set into attribute-value pairs, combined with the rest of the values in
each row.
Syntax
Table.UnpivotOtherColumns(table as table, pivotColumns as list, attributeColumn as text,
valueColumn as text) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
The transformation is patterned after the SQL UNPIVOT operator.
Example
Table.UnpivotOtherColumns(Table.FromRecords({ [ key = "key1", attribute1 = 1, attribute2 = 2, attribute3 = 3
], [ key = "key2", attribute1 = 4, attribute2 = 5, attribute3 = 6 ] }), { "key" }, "column1", "column2")
key1 attribute1 1
key1 attribute2 2
key1 attribute3 3
key2 attribute1 4
key2 attribute2 5
key2 attribute3 6
Table.View
11/5/2018 • 2 minutes to read
Syntax
Table.View(table as nullable table, handlers as record) as table
About
Returns a view of table where the functions specified in handlers are used in lieu of the default behavior of an
operation when the operation is applied to the view. Handler functions are optional. If a handler function is not
specified for an operation, the default behavior of the operation is applied to table instead (except in the case of
GetExpression ).
Handler functions must return a value that is semantically equivalent to the result of applying the operation against
table (or the resulting view in the case of GetExpression ).
If a handler function raises an error, the default behavior of the operation is applied to the view.
Table.View can be used to implement folding to a data source – the translation of M queries into source-specific
queries (e.g. to create T-SQL statements from M queries).
Please see the published documentation for a more complete description of Table.View .
Table.ViewFunction
11/5/2018 • 2 minutes to read
Syntax
Table.ViewFunction(function as function) as function
About
Creates a view function based on function that can be handled in a view created by Table.View .
The OnInvoke handler of Table.View can be used to defined a handler for the view function.
As with the handlers for built-in operations, if no OnInvoke handler is specified, or if it does not handle the view
function, or if an error is raised by the handler, function is applied on top of the view.
Please see the published documentation for a more complete description of Table.View and custom view
functions.
Tables.GetRelationships
11/5/2018 • 2 minutes to read
Syntax
Tables.GetRelationships(tables as table, optional dataColumn as nullable text) as table
About
Gets the relationships among a set of tables. The tables are assumed to have a structure similar to that of a
navigation table. The column defined by dataColumn contains the actual data tables.
#table
11/5/2018 • 2 minutes to read
Syntax
#table(columns as any, rows as any) as any
About
Creates a table value from columns columns and the list rows where each element of the list is an inner list that
contains the column values for a single row. columns may be a list of column names, a table type, a number of
columns, or null.
Text functions
11/5/2018 • 4 minutes to read
Text
Information
FUNCTION DESCRIPTION
Text Comparisons
FUNCTION DESCRIPTION
Extraction
FUNCTION DESCRIPTION
Text.Start Returns the count of characters from the start of a text value.
FUNCTION DESCRIPTION
Text.End Returns the number of characters from the end of a text value.
Modification
FUNCTION DESCRIPTION
Text.Insert Returns a text value with newValue inserted into a text value
starting at a zero-based offset.
Membership
FUNCTION DESCRIPTION
Text.Contains Returns true if a text value substring was found within a text
value string; otherwise, false.
Text.PositionOfAny Returns the first occurrence of a text value in list and returns
its position starting at startOffset.
Transformations
FUNCTION DESCRIPTION
Text.Combine Returns a text value that is the result of joining all text values
with each value separated by a separator.
Text.PadEnd Returns a text value padded at the end with pad to make it at
least length characters.
Text.Proper Returns a text value with first letters of all words converted to
uppercase.
Parameters
PARAMETER VALUES DESCRIPTION
RelativePosition.FromEnd Indicates indexing should be done from the end of the input.
RelativePosition.FromStart Indicates indexing should be done from the start of the input.
About
Returns a number to its character value.
Syntax
Character.FromNumber(number as nullable number) as nullable text
Arguments
ARGUMENT DESCRIPTION
About
Returns a character to its number value.
Syntax
Character.ToNumber(character as nullable text) as nullable number
Arguments
ARGUMENT DESCRIPTION
Syntax
Guid.From(value as nullable text) as nullable text
About
Returns a Guid.Type value from the given value . If the given value is null , Guid.From returns null . A check
will be performed to see if the given value is in an acceptable format. Acceptable formats provided in the
examples.
Example 1
The Guid can be provided as 32 contiguous hexadecimal digits.
Guid.From("05FE1DADC8C24F3BA4C2D194116B4967")
"05fe1dad-c8c2-4f3b-a4c2-d194116b4967"
Example 2
The Guid can be provided as 32 hexadecimal digits separated by hyphens into blocks of 8-4-4-4-12.
Guid.From("05FE1DAD-C8C2-4F3B-A4C2-D194116B4967")
"05fe1dad-c8c2-4f3b-a4c2-d194116b4967"
Example 3
The Guid can be provided as 32 hexadecimal digits separated by hyphens and enclosed in braces.
Guid.From("{05FE1DAD-C8C2-4F3B-A4C2-D194116B4967}")
"05fe1dad-c8c2-4f3b-a4c2-d194116b4967"
Example 4
The Guid can be provided as 32 hexadecimal digits separated by hyphens and enclosed by parentheses.
Guid.From("(05FE1DAD-C8C2-4F3B-A4C2-D194116B4967)")
"05fe1dad-c8c2-4f3b-a4c2-d194116b4967"
Json.FromValue
11/5/2018 • 2 minutes to read
Syntax
Json.FromValue(value as any, optional encoding as nullable number) as binary
About
Produces a JSON representation of a given value value with a text encoding specified by encoding. If encoding is
omitted, UTF8 is used. Values are represented as follows:
VALUE
Null, text and logical values are represented as the corresponding JSON types.
Numbers are represented as numbers in JSON, except that #infinity, -#infinity and #nan are converted to null.
Dates, times, datetimes, datetimezones and durations are represented as ISO-8601 text.
Example 1
Convert a complex value to JSON.
Equals: "{""A"":[1,true,""3""],""B"":""2012-03-25""}"
RelativePosition.FromEnd
11/5/2018 • 2 minutes to read
About
Indicates indexing should be done from the end of the input.
RelativePosition.FromStart
11/5/2018 • 2 minutes to read
About
Indicates indexing should be done from the start of the input.
Text.AfterDelimiter
11/5/2018 • 2 minutes to read
Syntax
Text.AfterDelimiter(**text** as nullable text, **delimiter** as text, optional **index** as any)
as any
About
Returns the portion of text after the specified delimiter . An optional numeric index indicates which occurrence
of the delimiter should be considered. An optional list index indicates which occurrence of the delimiter
should be considered, as well as whether indexing should be done from the start or end of the input.
Example 1
Get the portion of "111-222-333" after the (first) hyphen.
Text.AfterDelimiter("111-222-333", "-")
"222-333"
Example 2
Get the portion of "111-222-333" after the second hyphen.
Text.AfterDelimiter("111-222-333", "-", 1)
"333"
Example 3
Get the portion of "111-222-333" after the second hyphen from the end.
"222-333"
Text.At
11/5/2018 • 2 minutes to read
About
Returns a character starting at a zero-based offset.
Syntax
Text.At(value as nullable text, index as number) as nullable text
Arguments
ARGUMENT DESCRIPTION
Remarks
If the offset is greater than index, an Expression.Error is thrown.
Examples
Text.At("abcd", 0) equals "a"
Syntax
Text.BeforeDelimiter(**text** as nullable text, **delimiter** as text, optional **index** as any)
as any
About
Returns the portion of text before the specified delimiter . An optional numeric index indicates which
occurrence of the delimiter should be considered. An optional list index indicates which occurrence of the
delimiter should be considered, as well as whether indexing should be done from the start or end of the input.
Example 1
Get the portion of "111-222-333" before the (first) hyphen.
Text.BeforeDelimiter("111-222-333", "-")
"111"
Example 2
Get the portion of "111-222-333" before the second hyphen.
Text.BeforeDelimiter("111-222-333", "-", 1)
"111-222"
Example 3
Get the portion of "111-222-333" before the second hyphen from the end.
"111"
Text.BetweenDelimiters
11/5/2018 • 2 minutes to read
Syntax
Text.BetweenDelimiters(**text** as nullable text, **startDelimiter** as text, **endDelimiter** as
text, optional **startIndex** as any, optional **endIndex** as any) as any
About
Returns the portion of text between the specified startDelimiter and endDelimiter . An optional numeric
startIndex indicates which occurrence of the startDelimiter should be considered. An optional list startIndex
indicates which occurrence of the startDelimiter should be considered, as well as whether indexing should be
done from the start or end of the input. The endIndex is similar, except that indexing is done relative to the
startIndex .
Example 1
Get the portion of "111 (222) 333 (444)" between the (first) open parenthesis and the (first) closed parenthesis that
follows it.
"222"
Example 2
Get the portion of "111 (222) 333 (444)" between the second open parenthesis and the first closed parenthesis
that follows it.
"444"
Example 3
Get the portion of "111 (222) 333 (444)" between the second open parenthesis from the end and the second
closed parenthesis that follows it.
About
Returns the original text value with non-printable characters removed.
Syntax
Text.Clean(string as nullable text) as nullable text
Arguments
ARGUMENT DESCRIPTION
About
Returns a text value that is the result of joining all text values with each value separated by a separator.
Syntax
Text.Combine(text as list, separator as nullable text) as text
Arguments
ARGUMENT DESCRIPTION
separator The separator to use when combining. This will only appear
between the specified text values, not at the beginning or the
end.
Example
Text.Combine({"a", "b", "c"}, ",") equals "a,b,c"
Text.Contains
11/5/2018 • 2 minutes to read
About
Returns true if a text value substring was found within a text value string; otherwise, false.
Syntax
Text.Contains(string as nullable text, substring as text, optional comparer as nullable function)
as nullable logical
Arguments
ARGUMENT DESCRIPTION
Examples
Text.Contains("abc", "a") equals true
About
Returns the number of characters from the end of a text value.
Syntax
Text.End(string as nullable text, numChars as number) as nullable text
Arguments
ARGUMENT DESCRIPTION
Example
Text.End("abcd", 2) equals "cd"
Text.EndsWith
11/5/2018 • 2 minutes to read
About
Returns a logical value indicating whether a text value substring was found at the end of a string.
Syntax
Text.EndsWith(string as nullable text, substring as text, optional comparer as nullable function)
as nullable logical
Arguments
ARGUMENT DESCRIPTION
Remarks
Only comparer functions created through the library (Comparer.FromCulture) are supported.
Text.Format
11/5/2018 • 2 minutes to read
Syntax
Text.Format(formatString as text, arguments as any, optional culture as nullable text) as text
About
Returns formatted text that is created by applying arguments from a list or record to a format string formatString.
Optionally, a culture may be specified.
Example 1
Format a list of numbers.
Example 2
Format different data types from a record according to United States English culture.
Text.Format("The time for the #[distance] km run held in #[city] on #[date] was #[duration].", [city =
"Seattle", date = #date(2015, 3, 10), duration = #duration(0,0,54,40), distance = 10], "en-US")
Equals: "The time for the 10 km run held in Seattle on 3/10/2015 was 00:54:40."
Text.From
11/5/2018 • 2 minutes to read
About
Returns the text representation of a number, date, time, datetime, datetimezone, logical, duration or binary value. If
a value is null, Text.From returns null. The optional culture parameter is used to format the text value according to
the given culture.
Syntax
Text.From(value as any, optional culture as nullable text) as nullable text
Arguments
ARGUMENT DESCRIPTION
Examples
Text.From(1) equals "1"
About
Decodes data from a binary value in to a text value using an encoding.
Syntax
Text.FromBinary(binary as nullable binary, optional encoding as nullable number) as nullable text
Arguments
ARGUMENT DESCRIPTION
Text encoding
TextEncoding.Utf8 = 65001;
TextEncoding.Utf16 = 1200;
TextEncoding.Ascii = 20127;
TextEncoding.Unicode = 1200;
TextEncoding.BigEndianUnicode = 1201,
TextEncoding.Windows = 1252;
Text.Insert
11/5/2018 • 2 minutes to read
About
Returns a text value with newValue inserted into a text value starting at a zero-based offset.
Syntax
Text.Insert(text as nullable text, offset as number, newText as text) as nullable text
Arguments
ARGUMENT DESCRIPTION
Remark
If offset is less than zero or more than the length of a text value, an Expression.Error is thrown.
Example
Text.Insert("abcdef",2,"X") equals "abXcdef"
Text.Length
11/5/2018 • 2 minutes to read
About
Returns the number of characters in a text value.
Syntax
Text.Length(text as nullable text) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Text.Length("abc") equals 3
Text Comparisons
Text comparisons are performed by obtaining a comparer from Comparer.FromCulture. The comparer returns 0,
a negative number, or a positive number based on the result of the comparison. The Comparer.Equals function is
used to compare two text values.
Example
let
comparer = Comparer.FromCulture("en-US", false)
in
[
comparisonResult = comparer("a","b"),
equalityResult = Comparer.Equals(comparer,"a","b")
]
Text.Lower
11/13/2018 • 2 minutes to read
About
Returns the result of converting all characters in text to lowercase.
Syntax
Text.Lower(text as nullable text, optional culture as nullable text) as nullable text
Example
Get the lowercase version of "AbCd".
Text.Lower("AbCd")
"abcd"
Text.Middle
11/5/2018 • 2 minutes to read
Syntax
Text.Middle(text as nullable text, start as number, optional count as nullable number) as nullable
text
About
Returns count characters, or through the end of text; at the offset start.
Example 1
Find the substring from the text "Hello World" starting at index 6 spanning 5 characters.
Text.Middle("Hello World", 6, 5)
Equals: "World"
Text.NewGuid
11/5/2018 • 2 minutes to read
About
Returns a Guid value as a text value.
Syntax
Text.NewGuid() as text
Example
Text.NewGuid() equals "b5f92cce-04d5-4cd5-be90-ee97a1070e84"
Text.PadEnd
11/5/2018 • 2 minutes to read
About
Returns a text value padded at the end with pad to make it at least length characters.
Syntax
Text.PadEnd(text as nullable text, length as number, pad as nullable text) as nullable text
Arguments
ARGUMENT DESCRIPTION
Remarks
If pad is not specified, whitespace is used as pad.
Example
Text.PadEnd("abc", 5, "a") equals "abcaa"
Text.PadStart
11/5/2018 • 2 minutes to read
About
Returns a text value padded at the beginning with pad to make it at least length characters. If pad is not specified,
whitespace is used as pad.
Syntax
Text.PadStart(text as nullable text, length as number, optional pad as nullable text) as nullable
text
Arguments
ARGUMENT DESCRIPTION
optional pad The text to pad with. If pad is not specified, whitespace is used
as pad.
Examples
Text.PadStart("xyz", 5, "a") equals "aaxyz"
Syntax
Text.PositionOf(text as text, substring as text, optional occurrence as nullable number, optional
comparer as nullable function) as any
About
Returns the position of the specified occurrence of the text value substring found in text . An optional parameter
occurrence may be used to specify which occurrence position to return (first occurrence by default). Returns -1 if
substring was not found.
comparer is a Comparer which is used to control the comparison. Comparers can be used to provide case insensitive
or culture and locale aware comparisons.
The following built in comparers are available in the formula language:
Comparer.Ordinal : Used to perform an exact ordinal comparison
Comparer.OrdinalIgnoreCase : Used to perform an exact ordinal case-insensitive comparison
Comparer.FromCulture : Used to perform a culture aware comparison
Example 1
Get the position of the first occurrence of "World" in the text "Hello, World! Hello, World!".
Example 2
Get the position of last occurrence of "World" in "Hello, World! Hello, World!".
21
Text.PositionOfAny
11/5/2018 • 2 minutes to read
About
Returns the first occurrence of a text value in list and returns its position starting at startOffset.
Syntax
Text.PositionOfAny(string as text, list as list, optional occurrence as nullable number) as number
Arguments
ARGUMENT DESCRIPTION
Settings
SETTING DESCRIPTION
Remarks
If the text values are not found in the list, -1 is returned.
Examples
List.PositionOfAny("ABCD", {"B","C"}) equals 1
About
Returns a text value with first letters of all words converted to uppercase.
Syntax
Text.Proper(string as nullable text) as nullable text
Example
Use Text.Proper on a simple sentence.
About
Returns the substring from the text text found at the offset offset . An optional parameter, count , can be
included to specify how many characters to return. Throws an error if there aren't enough characters.
Syntax
Text.Range(text as nullable text, offset as number, optional count as nullable number) as nullable
text
Arguments
ARGUMENT DESCRIPTION
Example 1
Find the substring from the text "Hello World" starting at index 6.
Example 2
Find the substring from the text "Hello World Hello" starting at index 6 spanning 5 characters.
About
Removes all occurrences of a character or list of characters from a text value. The removeChars parameter can be
a character value or a list of character values.
Syntax
Text.Remove(text as nullable text, removeChars as any) as nullable text
Arguments
ARGUMENT DESCRIPTION
Examples
Text.Remove("a,b,;c",",")equals "ab;c"
About
Removes count characters at a zero-based offset from a text value.
Syntax
Text.RemoveRange(text as nullable text, offset as number, count as number) as nullable text
Arguments
ARGUMENT DESCRIPTION
Remarks
If count is not specified, the default value of 1 is used.
If offset is less than zero or more than the length of a text value, or if count if less than zero then an
Expression.Error is thrown.
Examples
Text.RemoveRange("abcdef", 2) equals "abdef"
About
Returns a text value composed of the input text value repeated a number of times.
Syntax
Text.Repeat(string as text, repeatCount as number) as text
Arguments
ARGUMENT DESCRIPTION
Example
Text.Repeat("a",5) equals "aaaaa"
Text.Replace
11/5/2018 • 2 minutes to read
About
Replaces all occurrences of a substring with a new text value.
Syntax
Text.Replace (text as nullable text, old as text, new as text) as nullable text
Arguments
ARGUMENT DESCRIPTION
Example
Text.Replace("Thisisanorange", "orange", "apple") equals "Thisisanapple"
Text.ReplaceRange
11/5/2018 • 2 minutes to read
About
Replaces length characters in a text value starting at a zero-based offset with the new text value.
Syntax
Text.ReplaceRange(text as nullable text, offset as number, length as number, newText as text) as
nullable text
Arguments
ARGUMENT DESCRIPTION
Example
Text.ReplaceRange("abcdef", 2, 3, "xyz") equals "abxyzf"
Text.Reverse
11/5/2018 • 2 minutes to read
Syntax
Text.Reverse(text as nullable text) as nullable text
About
Reverses the provided text .
Example 1
Reverse the text "123".
Text.Reverse("123")
"321"
Text.Select
11/5/2018 • 2 minutes to read
Syntax
Text.Select(text as nullable text, selectChars as any) as nullable text
About
Returns a copy of the text value text with all the characters not in selectChars removed.
Example 1
Select all characters in the range of 'a' to 'z' from the text value.
Text.Select("a,b;c", {"a".."z"})
"abc"
Text.Split
11/5/2018 • 2 minutes to read
About
Returns a list containing parts of a text value that are delimited by a separator text value.
Syntax
Text.Split(string as text, separator as text) as list
Arguments
ARGUMENT DESCRIPTION
Remarks
If two delimiter values are adjacent, or appear at the beginning or end of the text value, the corresponding
element in the returned list is an empty text value.
If the text value does not contain separator, the returned array consists of a single item containing the
original text value.
Text.SplitAny
11/5/2018 • 2 minutes to read
About
Returns a list containing parts of a text value that are delimited by any separator text values.
Syntax
Text.SplitAny(string as text, separator as text) as list
Arguments
ARGUMENT DESCRIPTION
About
Returns the count of characters from the start of a text value.
Syntax
Text.Start(string as nullable text, count as number) as nullable text
Arguments
ARGUMENT DESCRIPTION
Example
Text.Start("abcd", 2) equals "ab"
Text.StartsWith
11/5/2018 • 2 minutes to read
About
Returns a logical value indicating whether a text value substring was found at the beginning of a string.
Note: Only comparer functions created through the library (Comparer.FromCulture) are supported.
Syntax
Text.StartsWith(string as nullable text, substring as text, optional comparer as nullable
function) as nullable logical
Arguments
ARGUMENT DESCRIPTION
About
Encodes a text value into binary value using an encoding.
Syntax
Text.ToBinary(text as nullable text, optional encoding as nullable number, optional
includeByteOrderMark as nullable logical) as nullable binary
Arguments
ARGUMENT DESCRIPTION
About
Returns a list of characters from a text value.
Syntax
Text.ToList(text as text) as list
Arguments
ARGUMENT DESCRIPTION
Example
Text.ToList("abc") equals {"a","b","c"}
Text.Trim
11/5/2018 • 2 minutes to read
About
Removes any occurrence of character pattern in trimChars from text.
Syntax
Text.Trim(text as nullable text, optional trimChars as any) as nullable text
Arguments
ARGUMENT DESCRIPTION
Remarks
Characters are removed from the beginning and end of the text value.
If trimChars is not specified, then whitespace characters are trimmed. Whitespace characters are defined by
the Power Query formula language specification document. trimChar is either a character value or a list of
character values.
Examples
Text.Trim("xyAyz", "x") equals "yAyz"
Where: x is removed.
Where:
1. The first x, y and z pattern is removed.
2. AND the second x, y and z pattern is removed
About
Removes any occurrences of the characters specified in trimChars from the end of the original text value.
Syntax
Text.TrimEnd(text as nullable text, optional trimChars as nullable list) as nullable text
Arguments
ARGUMENT DESCRIPTION
About
Removes any occurrences of the characters in trimChars from the start of the original text value.
Syntax
Text.TrimStart(text as nullable text, optional trimChars as nullable list) as nullable text
Arguments
ARGUMENT DESCRIPTION
Remarks
If trimChars is not specified, then whitespace characters are trimmed.
Text.Upper
11/13/2018 • 2 minutes to read
About
Returns the result of converting all characters in text to uppercase.
Syntax
Text.Upper(text as nullable text, optional culture as nullable text) as nullable text
Example
Get the uppercase version of "aBcD".
Text.Upper("aBcD")
"ABCD"
TextEncoding.Ascii
11/5/2018 • 2 minutes to read
About
Use to choose the ASCII binary form.
TextEncoding.BigEndianUnicode
11/5/2018 • 2 minutes to read
About
Use to choose the UTF16 big endian binary form.
TextEncoding.Unicode
11/5/2018 • 2 minutes to read
About
Use to choose the UTF16 little endian binary form.
TextEncoding.Utf8
11/5/2018 • 2 minutes to read
About
Use to choose the UTF8 binary form.
TextEncoding.Utf16
11/5/2018 • 2 minutes to read
About
Use to choose the UTF16 little endian binary form.
TextEncoding.Windows
11/5/2018 • 2 minutes to read
About
Use to choose the Windows binary form.
Time functions
11/5/2018 • 2 minutes to read
Time
FUNCTION DESCRIPTION
Time.StartOfHour Returns the first value of the hour from a time value.
About
Returns a DateTime value from the end of the hour.
Syntax
Time.EndOfHour(dateTime as datetime) as nullable datetime
Arguments
ARGUMENT DESCRIPTION
Remarks
The time portion is reset to its terminating values for the hour.
The timezone information is persisted.
Example
dateTime = DateTimeZone.FromText("2011-02-21T12:30:00-08:00");
Time.EndOfHour(dateTime) equals 2011-02-21T12:59:59-08:00
Time.From
11/5/2018 • 2 minutes to read
About
Returns a time value from a value.
Syntax
Time.From(value as any, optional culture as nullable text) as nullable time
Arguments
ARGUMENT DESCRIPTION
Type to convert
TYPE DESCRIPTION
text Returns a time value from text value. For more details, see
Time.FromText.
datetimezone The time component of the local date and time equivalent of
value.
Remarks
If value is null, Time.From returns null.
If value is time, the same value is returned.
Examples
Time.From(0.7575) equals #time(18,10,48)
About
Returns a Time value from a set of date formats.
Syntax
Time.FromText(time as nullable text, optional culture as nullable text) as nullable date
Arguments
ARGUMENT DESCRIPTION
Time formats
hh:mm
hh:mm:ss
hh:mm:ss.nnnnnnn
Terms
h = hours
m = minutes
s = seconds
n = fractional seconds
Examples
Time.FromText("12:34:12") equals Time,hh:mm:ss
About
Returns an hour value from a DateTime value.
Syntax
Time.Hour(dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Time.Hour(DateTime.FromText("12:56:20")) equals 12
Time.Minute
11/5/2018 • 2 minutes to read
About
Returns a minute value from a DateTime value.
Syntax
Time.Minute(dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
Time.Minute(DateTime.FromText("12:56:20")) equals 56
Time.Second
11/5/2018 • 2 minutes to read
About
Returns the second component of the provided time , datetime , or datetimezone value, dateTime .
Example
Find the second value from a datetime value.
36.5
Time.StartOfHour
11/5/2018 • 2 minutes to read
About
Returns the first value of the hour from a time value.
Syntax
Time.StartOfHour(datetime as datetime) as nullable datetime
Arguments
ARGUMENT DESCRIPTION
Example
Time.StartOfHour(#datetime(2013, 4, 5, 1, 3, 45)) equals #datetime(2013, 4, 5, 1, 0, 0)
Time.ToRecord
11/5/2018 • 2 minutes to read
About
Returns a record containing parts of a Date value.
Syntax
Time.ToRecord(time as time) as record
Arguments
ARGUMENT DESCRIPTION
Example
Time.ToRecord(#time(12, 1, 2)) equals [Hour=12, Minute=1, Second=2]
Time.ToText
11/5/2018 • 2 minutes to read
Syntax
Time.ToText(**time** as nullable time, optional **format** as nullable text, optional **culture**
as nullable text) as nullable text
About
Returns a textual representation of time , the Time value, time . This function takes in an optional format
parameter format . For a complete list of supported formats, please refer to the Library specification document.
Example 1
Get a textual representation of #time(11, 56, 2).
"11:56 AM"
Example 2
Get a textual representation of #time(11, 56, 2) with format option.
"11:56"
#time
11/5/2018 • 2 minutes to read
Syntax
#time(hour as number, minute as number, second as number) as time
About
Creates a time value from whole numbers hour hour , minute minute , and (fractional) second second . Raises an
error if these are not true:
0 ≤ hour ≤ 24
0 ≤ minute ≤ 59
0 ≤ second ≤ 59
if hour is 24, then minute and second must be 0
Type functions
11/5/2018 • 2 minutes to read
Type
FUNCTION DESCRIPTION
Type.ClosedRecord The given type must be a record type returns a closed version
of the given record type (or the same type, if it is already
closed)
Type.FunctionParameters Returns a record with field values set to the name of the
parameters of a function type, and their values set to their
corresponding types.
Type.Is Type.Is
About
Add a key to a table type.
Syntax
Type.AddTableKey (table as type, columns as list, isPrimary as logical) as type
Arguments
ARGUMENT DESCRIPTION
Example
Type.AddTableKey(tableType, {"A", "B"}, false) equals add a non-primary key that combines values from columns
A and B
Type.ClosedRecord
11/5/2018 • 2 minutes to read
About
The given type must be a record type returns a closed version of the given record type (or the same type, if it is
already closed)
Syntax
Type.ClosedRecord(#"type" as type) as type
Example
Type.ClosedRecord( type [ A = number,…] ) equals type [A=number]
Type.Facets
11/5/2018 • 2 minutes to read
Syntax
Type.Facets(type as type) as record
About
Returns a record containing the facets of type.
Type.ForFunction
11/5/2018 • 2 minutes to read
Syntax
Type.ForFunction(signature as record, min as number) as type
About
Creates a function type from signature , a record of ReturnType and Parameters , and min , the minimum
number of arguments required to invoke the function.
Example 1
Creates the type for a function that takes a number parameter named X and returns a number.
About
Returns a Record type from a fields record.
Syntax
Type.ForRecord(fields as record, open as logical) as type
Arguments
ARGUMENT DESCRIPTION
Example
Type.ForRecord(
[
X = [Type = type number, Optional = false],
Y = [Type = type number, Optional = true]], true)
equals type [ X = number, optional Y = number,...
]
Type.FunctionParameters
11/5/2018 • 2 minutes to read
About
Returns a record with field values set to the name of the parameters of a function type, and their values set to their
corresponding types.
Syntax
Type.FunctionParameters(functionType as type) as record
Arguments
ARGUMENT DESCRIPTION
Examples
Type.FunctionParameters(type function () as any) equals []
About
Returns a number indicating the minimum number of parameters required to invoke the a type of function.
Syntax
Type.FunctionRequiredParameters(#"type" as type) as number
Examples
Type.FunctionRequiredParameters( type function () as any) equals 0
About
Returns a type returned by a function type.
Syntax
Type.FunctionReturn(type as type) as type
Examples
Type.FunctionReturn(type function () as any) equals type any
Syntax
Type.Is(**type1** as type, **type2** as type) as logical
About
Type.Is
Type.IsNullable
11/5/2018 • 2 minutes to read
About
Returns true if a type is a nullable type; otherwise, false.
Syntax
Type.IsNullable(#"type" as type) as logical
Examples
Type.IsNullable(type nullable number) equals true
About
Returns whether a record type is open.
Syntax
Type.IsOpenRecord(#"type" as type) as logical
Examples
Type.IsOpenRecord(type [ A = number,…]) equals true
About
Returns an item type from a list type.
Syntax
Type.ListItem(#"type" as type) as type
Example
Type.ListItem (type { number }) equals type number
Type.NonNullable
11/5/2018 • 2 minutes to read
About
Returns the non nullable type from a type.
Syntax
Type.NonNullable(#"type" as type) as type
Example
Type.NonNullable(type nullable number) equals type number
Type.OpenRecord
11/5/2018 • 2 minutes to read
About
Returns an opened version of a record type, or the same type, if it is already open.
Syntax
Type.OpenRecord(#"type" as type) as type
Example
Type.OpenRecord( type [ A = number] ) equals type [ A = number, …]
Type.RecordFields
11/5/2018 • 2 minutes to read
About
Returns a record describing the fields of a record type with each field of the returned record type having a
corresponding name and a value that is a record of the form [ Type = type, Opional = logical ].
Syntax
Type.RecordFields(#"type" as type) as record
Example
Type.RecordFields(type [ A = number, optional B = any])
equals [
A = [Type = number, Optional = false],
B = [Type = any, Optional = true]
]
Type.ReplaceFacets
11/5/2018 • 2 minutes to read
Syntax
Type.ReplaceFacets(type as type, facets as record) as type
About
Replaces the facets of type with the facets contained in the record facets.
Type.ReplaceTableKeys
11/5/2018 • 2 minutes to read
About
Replaces the keys in a table type.
Syntax
Type.ReplaceTableKeys(tableType as type, keys as list) as type
Arguments
ARGUMENT DESCRIPTION
Example
Type.ReplaceTableKeys(tableType, {}) equals returns type value with all keys removed
Type.TableColumn
11/5/2018 • 2 minutes to read
Syntax
Type.TableColumn(**tableType** as type, **column** as text) as type
About
Returns the type of the column column in the table type tableType .
Type.TableKeys
11/5/2018 • 2 minutes to read
About
Returns keys from a table type.
Syntax
Type.TableKeys(tableType as type) as list
Type.TableRow
11/5/2018 • 2 minutes to read
About
Returns a row type from a table type.
Syntax
Type.TableRow(table as type) as type
Example
Type.TableRow(
Value.Type(
Value.ReplaceType(
Table.FromRecords({[A=1]}),
type table [ A = number] ))
)
equals type [ A = number ]
Type.TableSchema
11/5/2018 • 2 minutes to read
Syntax
Type.TableSchema(tableType as type) as table
About
Returns a table describing the columns of tableType .
Type.Union
11/5/2018 • 2 minutes to read
Syntax
Type.Union(**types** as list) as type
About
Uri
FUNCTION DESCRIPTION
Uri.Parts Returns a record value with the fields set to the parts of a Uri
text value.
Uri.BuildQueryString
11/5/2018 • 2 minutes to read
Syntax
Uri.BuildQueryString(**query** as record) as text
About
Assemble the record query into a URI query string, escaping characters as necessary.
Example
Encode a query string which contains some special characters.
Uri.BuildQueryString([a="1", b="+$"])
"a=1&b=%2B%24"
Uri.Combine
11/5/2018 • 2 minutes to read
About
Returns a Uri based on the combination of the base and relative parts.
Syntax
Uri.Combine(baseUri as text, relativeUri as text) as text
Arguments
ARGUMENT DESCRIPTION
Syntax
Uri.EscapeDataString(**data** as text) as text
About
Encodes special characters in the input data according to the rules of RFC 3986.
Example
Encode the special characters in "+money$".
Uri.EscapeDataString("+money$")
"%2Bmoney%24"
Uri.Parts
11/5/2018 • 2 minutes to read
About
Returns a record value with the fields set to the parts of a Uri text value.
Syntax
Uri.Parts(absoluteUri as text) as [Scheme = text, Host = text, Port = number, Path = text, Query =
record, Fragment = text, UserName = text, Password = text]
Arguments
ARGUMENT DESCRIPTION
Example 1
Uri.Parts("http://www.microsoft.com")
equals [
Scheme = "http",
Host = "www.microsoft.com",
Port = 80,
Path = "/",
Query = [],
Fragment = "",
UserName = "",
Password = ""
]
Example 2
Decode a percent-encoded string.
equals "+money$"
Value functions
11/5/2018 • 2 minutes to read
Values
FUNCTION DESCRIPTION
Arithmetic operations
FUNCTION DESCRIPTION
Value.Divide Returns the result of dividing the first value by the second.
Parameter types
TYPE DESCRIPTION
IMPLEMENTATION DESCRIPTION
DirectQueryCapabilities.From DirectQueryCapabilities.From
Value.Firewall Value.Firewall
Variable.Value Variable.Value
SqlExpression.SchemaFrom SqlExpression.SchemaFrom
SqlExpression.ToExpression SqlExpression.ToExpression
Metadata
FUNCTION DESCRIPTION
Value.RemoveMetadata Removes the metadata on the value and returns the original
value.
Syntax
DirectQueryCapabilities.From(**value** as any) as table
About
DirectQueryCapabilities.From
Embedded.Value
11/5/2018 • 2 minutes to read
Syntax
Embedded.Value(**value** as any, **path** as text) as any
About
Accesses a value by name in an embedded mashup.
Precision.Decimal
11/5/2018 • 2 minutes to read
About
An optional parameter for the built-in arithmetic operators to specify decimal precision.
Precision.Double
11/5/2018 • 2 minutes to read
About
An optional parameter for the built-in arithmetic operators to specify double precision.
SqlExpression.SchemaFrom
11/5/2018 • 2 minutes to read
Syntax
SqlExpression.SchemaFrom(**schema** as any) as any
About
SqlExpression.SchemaFrom
SqlExpression.ToExpression
11/5/2018 • 2 minutes to read
Syntax
SqlExpression.ToExpression(**sql** as text, **environment** as record) as text
About
SqlExpression.ToExpression
Value.As
11/5/2018 • 2 minutes to read
About
Value.As is the function corresponding to the as operator in the formula language. The expression value as type
asserts that the value of a value argument is compatible with type as per the is operator. If it is not compatible, an
error is raised.
Syntax
Value.As(value as any, type as type) as any
Arguments
ARGUMENT DESCRIPTION
About
Syntax
Value.Add(value1 as any, value2 as any, optional precision as nullable number) as any
Arguments
ARGUMENT DESCRIPTION
About
Returns 1, 0, or -1 based on value1 being greater than, equal to, or less than the value2. An optional comparer
function can be provided.
Syntax
Value.Compare(value1 as any, value2 as any, optional precision as nullable number) as
Arguments
ARGUMENT DESCRIPTION
Arithmetic operations
The built-in arithmetic operators (+, -, *, /) use Double Precision. The following library functions can be used to
request these operations using a specific precision model.
Value.Divide
11/5/2018 • 2 minutes to read
About
Syntax
Value.Divide(value1 as any, value2 as any, optional precision as nullable number) as any
Arguments
ARGUMENT DESCRIPTION
About
Returns whether two values are equal.
Syntax
Value.Equals(left as any, right as any, equater as record) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
Value.Equals(2,4)
equals false
Value.Equals(2,4,
[
Equals= (x,y) => Number.Mod(x,2)=Number.Mod(y,2),
Hash = (x) => Value.Hash(x)
])equals true
Value.Firewall
11/5/2018 • 2 minutes to read
Syntax
Value.Firewall(**key** as text) as any
About
Value.Firewall
Value.FromText
11/5/2018 • 2 minutes to read
About
Decodes a value from a textual representation, value, and interprets it as a value with an appropriate type.
Value.FromText takes a text value and returns a number, a logical value, a null value, a DateTime value, a Duration
value, or a text value. The empty text value is interpreted as a null value.
Syntax
Value.FromText(value as text, optional culture as nullable text)
Arguments
ARGUMENT DESCRIPTION
Examples
Value.FromText("1") equals 1
About
Value.Is is the function corresponding to the is operator in the formula language. The expression value is type
returns true if the ascribed type of value is compatible with type, and returns false if the ascribed type of value is
incompatible with type.
Syntax
Value.Is(value as any, type as type) as logical
Arguments
ARGUMENT DESCRIPTION
About
Returns a record containing the input’s metadata.
Syntax
Value.Metadata(value as any) as record
Arguments
ARGUMENT DESCRIPTION
Example
Value.Metadata(1 meta [meta = 1]) equals [ meta = 1]
Value.Multiply
11/5/2018 • 2 minutes to read
About
Syntax
Value.Multiply(value1 as any, value2 as any, optional precision as nullable number) as any
Arguments
ARGUMENT DESCRIPTION
Parameter types
Precision specification
Precision.Double = 0,
Precision.Decimal = 1,
Value.NullableEquals
11/5/2018 • 2 minutes to read
About
Returns a logical value or null based on two values .
Syntax
Value.NullableEquals(value1 as any, value2 as any) as any
Arguments
ARGUMENT DESCRIPTION
Remarks
If either of the argument is null, it applies a nullable equality rules; otherwise, the same result as Value.Equals.
Example
Value.NullableEquals(1, null) equals null
Value.NativeQuery
11/5/2018 • 2 minutes to read
Syntax
Value.NativeQuery(target as any, query as text, optional parameters as any, optional options as
nullable record) as any
About
Evaluates query against target using the parameters specified in parameters and the options specified in
options .
About
Removes the metadata on the value and returns the original value.
Syntax
Value.RemoveMetadata(value as any) as any
Arguments
ARGUMENT DESCRIPTION
Example
Value.RemoveMetadata(1 meta [meta = 1]) equals 1
Value.ReplaceMetadata
11/5/2018 • 2 minutes to read
About
Replaces the metadata on a value with the new metadata record provided and returns the original value with the
new metadata attached.
Syntax
Value.ReplaceMetadata(value as any, newMeta as record) as any
Arguments
ARGUMENT DESCRIPTION
Example
Value.ReplaceMetadata(1 meta [meta = 1], [meta=2]) equals 1 meta [meta = 2]
Value.ReplaceType
11/5/2018 • 2 minutes to read
About
A value may be ascribed a type using Value.ReplaceType. Value.ReplaceType either returns a new value with the
type ascribed or raises an error if the new type is incompatible with the value’s native primitive type. In particular,
the function raises an error when an attempt is made to ascribe an abstract type, such as any. When replacing a the
type of a record, the new type must have the same number of fields, and the new fields replace the old fields by
ordinal position, not by name. Similarly, when replacing the type of a table, the new type must have the same
number of columns, and the new columns replace the old columns by ordinal position.
Syntax
Value.Replacetype(value as any, replacedType as type) as any
Arguments
ARGUMENT DESCRIPTION
replacedType As type.
Value.Subtract
11/5/2018 • 2 minutes to read
About
Syntax
Value.Subtract(value1 as any, value2 as any, optional precision as nullable number) as any
Arguments
ARGUMENT DESCRIPTION
Example
Value.Type(Value.ReplaceType( {1}, type {number}) equals type {number}
Variable.Value
11/5/2018 • 2 minutes to read
Syntax
Variable.Value(**identifier** as text) as any
About
Variable.Value
Quick tour of the Power Query M formula language
12/12/2018 • 2 minutes to read
This quick tour describes creating Power Query M formula language queries.
NOTE
M is a case-sensitive language.
let
Variablename = expression,
#"Variable name" = expression2
in
Variablename
To create an M query in the Query Editor, you follow this basic process:
Create a series of query formula steps that start with the let statement. Each step is defined by a step
variable name. An M variable can included spaces by using the # character as #"Step Name". A formula
step can be a custom formula. Please note that the Power Query Formula Language is case sensitive.
Each query formula step builds upon a previous step by referring to a step by its variable name.
Output a query formula step using the in statement. Generally, the last query step is used as the in final
data set result.
To learn more about expressions and values, see Expressions, values, and let expression.
2 1 1 lb. worms 5
3 2 fishing net 25
And, you want to capitalize each word in the Item column to produce the following table:
2 1 1 Lb. Worms 5
3 2 Fishing Net 25
The M formula steps to project the original table into the results table looks like this:
Here's the code you can paste into Query Editor:
See also
Expressions, values, and let expression
Operators
Type conversion
Power Query M language specification
2/25/2019 • 2 minutes to read
The specification describes the values, expressions, environments and variables, identifiers, and the evaluation
model that form the Power Query M language’s basic concepts.
Download Power Query M language specification .pdf.
Power Query M type system
11/5/2018 • 2 minutes to read
The Types in Power Query M formula language document describes the M type system.
Download Types in Power Query M formula language .pdf
Expressions, values, and let expression
11/5/2018 • 5 minutes to read
A Power Query M formula language query is composed of formula expression steps that create a mashup query.
A formula expression can be evaluated (computed), yielding a value. The let expression encapsulates a set of
values to be computed, assigned names, and then used in a subsequent expression that follows the in statement.
For example, a let expression could contain a Source variable that equals the value of Text.Proper() and yields a
text value in proper case.
Let expression
let
Source = Text.Proper("hello world")
in
Source
Primitive value
A primitive value is single-part value, such as a number, logical, text, or null. A null value can be used to indicate
the absence of any data.
Date 5/23/2015
Duration 15:35:00
Null null
Text "abc"
Time 12:34:12 PM
Function value
A Function is a value which, when invoked with arguments, produces a new value. Functions are written by listing
the function’s parameters in parentheses, followed by the goes-to symbol =>, followed by the expression
defining the function. For example, to create a function called “MyFunction” that has two parameters and performs
a calculation on parameter1 and parameter2:
let
MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
MyFunction
let
Source = MyFunction(2, 4)
in
Source
NOTE
Structured data can contain any M value. To see a couple of examples, see Additional structured data examples.
List
A List is a zero-based ordered sequence of values enclosed in curly brace characters { }. The curly brace characters
{ } are also used to retrieve an item from a List by index position. See [List value](#_List_value).
NOTE
Power Query M supports an infinite list size, but if a list is written as a literal, the list has a fixed length. For example, {1, 2, 3}
has a fixed length of 3.
VALUE TYPE
{ List of Records
[CustomerID = 1, Name = "Bob", Phone = "123-4567"],
[CustomerID = 2, Name = "Jim", Phone = "987-6543"]
}
{123, true, "A"}{0} Get the value of the first item in a List. This expression returns
the value 123.
{ Get the value of the second item from the first List element.
{1, 2, 3}, This expression returns the value 2.
{4, 5, 6}
}{0}{1}
Record
A Record is a set of fields. A field is a name/value pair where the name is a text value that is unique within the
field’s record. The syntax for record values allows the names to be written without quotes, a form also referred to
as identifiers. An identifier can take the following two forms:
identifier_name such as OrderID.
#"identifier name" such as #"Today's data is: ".
The following is a record containing fields named "OrderID", "CustomerID", "Item", and "Price" with values 1, 1,
"Fishing rod", and 100.00. Square brace characters [ ] denote the beginning and end of a record expression, and
are used to get a field value from a record. The follow examples show a record and how to get the Item field value.
Here's an example record:
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source
let Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in Source[Item] //equals "Fishing rod"
Table
A Table is a set of values organized into named columns and rows. The column type can be implicit or explicit. You
can use #table to create a list of column names and list of rows. A Table of values is a List in a List. The curly brace
characters { } are also used to retrieve a row from a Table by index position (see Example 3 – Get a row from a
table by index position).
Example 1 - Create a table with implicit column types
let
Source = #table(
{"OrderID", "CustomerID", "Item", "Price"},
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
})
in
Source
let
Source = #table(
type table [OrderID = number, CustomerID = number, Item = text, Price = number],
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
}
)
in
Source
Both of the examples above creates a table with the following shape:
let
Source = #table(
type table [OrderID = number, CustomerID = number, Item = text, Price = number],
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "1 lb. worms", 5.00}
}
)
in
Source{1}
OrderID 2
CustomerID 1
Price 5
let
Source =
{
1,
"Bob",
DateTime.ToText(DateTime.LocalNow(), "yyyy-MM-dd"),
[OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0]
}
in
Source
let
Source = [CustomerID = 1, Name = "Bob", Phone = "123-4567", Orders =
{
[OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0],
[OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0]
}]
in
Source
If expression
The if expression selects between two expressions based on a logical condition. For example:
if 2 > 1 then
2 + 2
else
1 + 1
The first expression (2 + 2) is selected if the logical expression (2 > 1) is true, and the second expression (1 + 1) is
selected if it is false. The selected expression (in this case 2 + 2) is evaluated and becomes the result of the if
expression (4).
Comments
12/12/2018 • 2 minutes to read
You can add comments to your code with single-line comments // or multi-line comments that begin with /*
and end with */ .
Example - Single-line comment
let
//Convert to proper case.
Source = Text.Proper("hello world")
in
Source
/* Capitalize each word in the Item column in the Orders table. Text.Proper
is evaluated for each Item in each table row. */
let
Orders = Table.FromRecords({
[OrderID = 1, CustomerID = 1, Item = "fishing rod", Price = 100.0],
[OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0],
[OrderID = 3, CustomerID = 2, Item = "fishing net", Price = 25.0]}),
#"Capitalized Each Word" = Table.TransformColumns(Orders, {"Item", Text.Proper})
in
#"Capitalized Each Word"
Evaluation model
11/5/2018 • 2 minutes to read
The evaluation model of the Power Query M formula language is modeled after the evaluation model commonly
found in spreadsheets, where the order of calculations can be determined based on dependencies between the
formulas in the cells.
If you have written formulas in a spreadsheet such as Excel, you may recognize the formulas on the left will result
in the values on the right when calculated:
In M, an expression can reference previous expressions by name, and the evaluation process will automatically
determine the order in which referenced expressions are calculated.
Let’s use a record to produce an expression which is equivalent to the above spreadsheet example. When
initializing the value of a field, you refer to other fields within the record by the name of the field, as follows:
[
A1 = A2 * 2,
A2 = A3 + 1,
A3 = 1
]
[
A1 = 4,
A2 = 2,
A3 = 1
]
Records can be contained within, or nested, within other records. You can use the lookup operator ([ ]) to access
the fields of a record by name. For example, the following record has a field named Sales containing a record, and
a field named Total that accesses the FirstHalf and SecondHalf fields of the Sales record:
[
Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
Total = Sales[FirstHalf] + Sales[SecondHalf]
]
You use the positional index operator ({ }) to access an item in a list by its numeric index. The values within a list
are referred to using a zero-based index from the beginning of the list. For example, the indexes 0 and 1 are used
to reference the first and second items in the list below:
[
Sales =
{
[
Year = 2007,
FirstHalf = 1000,
SecondHalf = 1100,
Total = FirstHalf + SecondHalf // equals 2100
],
[
Year = 2008,
FirstHalf = 1200,
SecondHalf = 1300,
Total = FirstHalf + SecondHalf // equals 2500
]
},
#"Total Sales" = Sales{0}[Total] + Sales{1}[Total] // equals 4600
]
The Power Query M formula language includes a set of operators that can be used in an expression. Operators
are applied to operands to form symbolic expressions. For example, in the expression 1 + 2 the numbers 1 and 2
are operands and the operator is the addition operator (+).
The meaning of an operator can vary depending on the type of operand values. The language has the following
operators:
Plus operator (+)
EXPRESSION EQUALS
List of M operators
Common operators which apply to null, logical, number, time, date, datetime, datetimezone, duration, text, binary)
OPERATOR DESCRIPTION
= Equal
OPERATOR DESCRIPTION
or Conditional logical OR
OPERATOR DESCRIPTION
OPERATOR DESCRIPTION
+ Sum
- Difference
* Product
/ Quotient
+x Unary plus
-x Negation
OPERATOR DESCRIPTION
& Concatenation
OPERATOR DESCRIPTION
= Equal
& Concatenation
OPERATOR DESCRIPTION
OPERATOR DESCRIPTION
Date operators
Datetime operators
Datetimezone operators
Duration operators
OPERATOR LEFT OPERAND RIGHT OPERAND MEANING
NOTE
Not all combinations of values may be supported by an operator. Expressions that, when evaluated, encounter undefined
operator conditions evaluate to errors. For more information about errors in M, see Errors
Error example:
FUNCTION EQUALS
The Power Query M formula language has formulas to convert between types. The following is a summary of
conversion formulas in M.
Number
TYPE CONVERSION DESCRIPTION
Int32.From(value as any) as number Returns a 32-bit integer number value from the given value.
Int64.From(value as any) as number Returns a 64-bit integer number value from the given value.
Single.From(value as any) as number Returns a Single number value from the given value.
Double.From(value as any) as number Returns a Double number value from the given value.
Decimal.From(value as any) as number Returns a Decimal number value from the given value.
Currency.From(value as any) as number Returns a Currency number value from the given value.
Text
TYPE CONVERSION DESCRIPTION
Text.From(value as any) as text Returns the text representation of a number, date, time,
datetime, datetimezone, logical, duration or binary value.
Logical
TYPE CONVERSION DESCRIPTION
Logical.FromText(text as text) as logical Returns a logical value of true or false from a text value.
.FromText(text as text) as date, time, datetime, or Returns a date, time, datetime, or datetimezone value from a
datetimezone set of date formats and culture value.
.ToText(date, time, dateTime, or dateTimeZone as Returns a text value from a date, time, datetime, or
date, time, datetime, or datetimezone) as text datetimezone value.
.ToRecord(date, time, dateTime, or dateTimeZone as date, Returns a record containing parts of a date, time, datetime, or
time, datetime, or datetimezone) datetimezone value.
Metadata
Metadata is information about a value that is associated with a value. Metadata is represented as a record value,
called a metadata record. The fields of a metadata record can be used to store the metadata for a value. Every
value has a metadata record. If the value of the metadata record has not been specified, then the metadata record
is empty (has no fields). Associating a metadata record with a value does not change the value’s behavior in
evaluations except for those that explicitly inspect metadata records.
A metadata record value is associated with a value x using the syntax value meta [record]. For example, the
following associates a metadata record with Rating and Tags fields with the text value "Mozart":
A metadata record can be accessed for a value using the Value.Metadata function. In the following example, the
expression in the ComposerRating field accesses the metadata record of the value in the Composer field, and then
accesses the Rating field of the metadata record.
[
Composer = "Mozart" meta [ Rating = 5, Tags = {"Classical"} ],
ComposerRating = Value.Metadata(Composer)[Rating] // 5
]
Metadata records are not preserved when a value is used with an operator or function that constructs a new value.
For example, if two text values are concatenated using the & operator, the metadata of the resulting text value is an
empty record [].
The standard library functions Value.RemoveMetadata and Value.ReplaceMetadata can be used to remove all
metadata from a value and to replace a value’s metadata.
Errors
11/5/2018 • 2 minutes to read
An error in Power Query M formula language is an indication that the process of evaluating an expression could
not produce a value. Errors are raised by operators and functions encountering error conditions or by using the
error expression. Errors are handled using the try expression. When an error is raised, a value is specified that can
be used to indicate why the error occurred.
Try expression
A try expression converts values and errors into a record value that indicates whether the try expression handled
an error, or not, and either the proper value or the error record it extracted when handling the error. For example,
consider the following expression that raises an error and then handles it right away:
This expression evaluates to the following nested record value, explaining the [HasError], [Error] , and
[Message] field lookups in the unit-price example before.
Error record
[
HasError = true,
Error =
[
Reason = "Expression.Error",
Message = "negative unit count",
Detail = null
]
]
A common case is to replace errors with default values. The try expression can be used with an optional otherwise
clause to achieve just that in a compact form:
Error example
let Sales =
[
ProductName = "Fishing rod",
Revenue = 2000,
Units = 1000,
UnitPrice = if Units = 0 then error "No Units"
else Revenue / Units
],
The above example accesses the Sales[UnitPrice] field and formats the value producing the result:
If the Units field had been zero, then the UnitPrice field would have raised an error which would have been
handled by the try. The resulting value would then have been:
"No Units"