Power Query M Function Reference Guide
Power Query M Function Reference Guide
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 = [Link](list, (n) => n> 5),
First = [Link](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
[Link](
[Link]({
[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
[Link] Returns the content of the file at the URL from an Azure Data
Lake Storage filesystem.
[Link] 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.
[Link]
[Link] Returns a table with data relating to the tables in the specified
DB2 Database.
[Link] 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.
[Link] 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.
[Link] 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.
[Link] 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.
[Link] Returns a table with data relating to the tables in the specified
MySQL Database.
[Link] Returns a table of SQL tables and views from the ODBC data
source specified by the connection string connectionString .
[Link] Returns a table of SQL tables and views from the OLE DB data
source specified by the connection string.
[Link] Returns a table with data relating to the tables in the specified
Oracle Database.
[Link] Returns a table with data relating to the tables in the specified
PostgreSQL Database.
[Link] Connects to the Salesforce Objects API and returns the set of
available objects (i.e. Accounts).
[Link] Connects to the Salesforce Reports API and returns the set of
available reports.
[Link] 'Greater than' range operator for SAP HANA input parameters.
[Link] 'Greater than or equals' range operator for SAP HANA input
parameters.
[Link] 'Less than' range operator for SAP HANA input parameters.
[Link] 'Less than or equals' range operator for SAP HANA input
parameters.
[Link] 'Not equals' range operator for SAP HANA input parameters.
[Link] 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.
[Link] Returns a table with data relating to the tables in the specified
Sybase Database.
[Link] Returns a table with data relating to the tables in the specified
Teradata Database.
[Link] Creates an action that, when executed, will return the results
of performing a method request against url using HTTP as a
binary value.
[Link] Returns the HTML for the specified url, as viewed by a web
browser.
Syntax
[Link](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.
[Link]
11/19/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]
12/12/2018 • 2 minutes to read
Syntax
[Link](providerName as text, connectionString as any, optional options as nullable
record) as table
About
Returns the schema collection for the [Link] 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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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 [Link] 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.
[Link]
12/12/2018 • 2 minutes to read
Syntax
[Link](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
[Link]
12/12/2018 • 2 minutes to read
Syntax
[Link](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
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]
12/12/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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 [Link] 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. [Link] (default): Quotes in a field are only
significant immediately following the delimiter. [Link] : Quotes in a field are always significant,
regardless of where they appear.
QuoteStyle : Specifies how quoted line breaks are handled. [Link] (default): All line breaks are treated
as the end of the current row, even when they occur inside a quoted value. [Link] : 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
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link]
About
Quotes in a field are only significant immediately following the delimiter.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link]
About
Quotes in a field are always significant regardless of where they appear.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](cube as table, parameter as any, optional arguments as nullable list) as table
About
Returns a cube after applying parameter with arguments to cube.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](attribute as any) as any
About
Returns the unique member identifier from a member property value. attribute . Returns null for any other
values.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](attribute as any, propertyName as text) as any
About
Returns the property propertyName of dimension attribute attribute .
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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 [Link].
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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 .
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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 [Link].
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](cube as table) as table
About
Returns a table containing the set of available properties for dimensions that are expanded in the cube.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](property as any) as any
About
Returns the key of property property .
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**cube** as table, **dimensions** as table) as table
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**cube** as table, **transforms** as list) as table
About
Applies the list cube functions, transforms , on the cube .
[Link]
1/16/2019 • 2 minutes to read
Syntax
[Link](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.
[Link]
11/5/2018 • 2 minutes to read
About
Returns the tables in the current Excel workbook
Syntax
[Link]() as table
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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
[Link]([Link]("[Link]"))
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
[Link]
11/5/2018 • 2 minutes to read
About
Returns a table of contents from a Microsoft Exchange account.
Syntax
[Link]() as table
[Link]
11/5/2018 • 2 minutes to read
About
Returns a table containing content from the Facebook graph .
Syntax
[Link](url as text) as any
Arguments
ARGUMENT DESCRIPTION
About
Returns the binary contents of the file located at a path.
Syntax
[Link](path as text) as binary
Arguments
ARGUMENT DESCRIPTION
Example
[Link]("c:\users\myuser\Desktop\[Link]")
[Link]
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
[Link](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
[Link](path as text) as table
Arguments
ARGUMENT DESCRIPTION
Syntax
[Link]() as table
About
Returns Google Analytics accounts that are accessible from the current credential.
[Link]
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
[Link](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
[Link](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
[Link](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
[Link](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
[Link](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
[Link](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
/[Link]
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]
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 [Link].
Syntax
[Link](jsonText as any, optional encoding as nullable number) as any
Arguments
ARGUMENT DESCRIPTION
Example
[Link]("{""glossary"": { ""title"": ""Example glossary"" } }")
equals [glossary = [title = "Example glossary"]]
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]
2/12/2019 • 2 minutes to read
Syntax
[Link](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:
[Link] : 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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]
2/12/2019 • 2 minutes to read
Syntax
[Link](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 [Link].
[Link]([Link]("c:\[Link]"))
Syntax
[Link](**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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](stream as binary) as any
About
Returns a record of data frames from the RData file.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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
([Link] 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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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
([Link] 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.
[Link]
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
[Link](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
[Link]("[Link]
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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 [Link].
[Link]
11/5/2018 • 2 minutes to read
About
'All' distribution option for SAP HANA.
[Link]
11/5/2018 • 2 minutes to read
About
'Connection' distribution option for SAP HANA.
[Link]
11/5/2018 • 2 minutes to read
About
'Off' distribution option for SAP HANA.
[Link]
11/5/2018 • 2 minutes to read
About
'DataStream flattening mode' option for MDX execution in SAP Business Warehouse.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link]
About
'Equals' range operator for SAP HANA input parameters.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link]
About
'Greater than' range operator for SAP HANA input parameters.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link]
About
'GreaterThanOrEquals' range operator for SAP HANA input parameters.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link]
About
'LessThan' range operator for SAP HANA input parameters.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link]
About
'LessThanOrEquals' range operator for SAP HANA input parameters.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link]
About
'NotEquals' range operator for SAP HANA input parameters.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]
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
[Link](url as text) as table
Arguments
ARGUMENT DESCRIPTION
Syntax
[Link](**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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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. [Link] should be used instead to run a SQL
query.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]
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
[Link](url as text, optional options as nullable record) as text
Example 1
Returns the HTML for [Link]
[Link]("[Link]
Example 2
Returns the HTML for [Link] after waiting for a CSS selector to exist.
Example 3
Returns the HTML for [Link] after waiting ten seconds.
Example 4
Returns the HTML for [Link] after waiting up to ten seconds for a CSS selector to exist.
[Link]("[Link] [WaitFor = [Selector = "[Link]", Timeout =
#duration(0,0,0,10)]])
About
Returns the contents downloaded from a web url as a binary value.
Syntax
[Link](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
[Link]("[Link]") equals The binary contents from the URL [Link] when accessed via
HTTP
[Link]
11/5/2018 • 2 minutes to read
About
Returns the contents of an HTML webpage as a table.
Syntax
[Link](html as text) as table
Arguments
ARGUMENT DESCRIPTION
About
Specifies the DELETE method for HTTP.
[Link]
11/5/2018 • 2 minutes to read
About
Specifies the GET method for HTTP.
[Link]
11/5/2018 • 2 minutes to read
About
Specifies the HEAD method for HTTP.
[Link]
11/5/2018 • 2 minutes to read
About
Specifies the PATCH method for HTTP.
[Link]
11/5/2018 • 2 minutes to read
About
Specifies the POST method for HTTP.
[Link]
11/5/2018 • 2 minutes to read
About
Specifies the PUT method for HTTP.
[Link]
11/5/2018 • 2 minutes to read
About
Returns the contents of an XML document as a hierarchical table (list of records).
Syntax
[Link](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:
[Link]([Link]("<a></a>")) =
type {[
Name = text,
Namespace = text,
Value = any,
Attributes = {[
Name = text,
Namespace = text,
Value = text
]}
]}
Example
[Link]("<a></a>")
equals { [
Name = "a",
Namespace = "",
Value = {},
Attributes = {}
] }
[Link]
11/5/2018 • 2 minutes to read
About
Returns the contents of an XML document as a nested collection of flattened tables.
Syntax
[Link](contents as any, optional options as nullable record, optional encoding as nullable
number) as table
Arguments
ARGUMENT DESCRIPTION
options Settings
SETTING DESCRIPTION
Example
[Link]("<books>
<book>
<name>Book1</name>
</book>
<book>
<name>Book2</name>
</book>
</books>")
equals
([Link]({ [
Name = "book",
Table = ([Link]({ [
name = "Book1"
], [
name = "Book2"
)
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link] Returns a binary format that chooses the next binary format
based on a value that has already been read.
[Link] Returns a binary format that limits the amount of data that
can be read. Both [Link] and [Link]
can be used to read until end of the data.
[Link] can be used to limit the number of bytes
that are read.
[Link] A binary format that reads zero bytes and returns null.
[Link] Returns a binary format that reads a record. Each field in the
record can have a different binary format.
[Link] Returns a binary format that reads a text value. The optional
encoding value specifies the encoding of the text.
[Link] Returns a binary format that will transform the values read by
another binary format.
Binary
FUNCTION DESCRIPTION
[Link] 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.
[Link] The item is expected to appear zero or one time in the input.
[Link] The item is expected to appear zero or one time in the input.
Syntax
[Link](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.
[Link]([Link]({0..10}))
#binary({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10})
[Link]
12/12/2018 • 2 minutes to read
Syntax
[Link](binaries as list) as binary
About
Combines a list of binaries into a single binary.
[Link]
12/12/2018 • 2 minutes to read
Syntax
[Link](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:
[Link]
[Link]
Example 1
Compress the binary value.
Syntax
[Link](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:
[Link]
[Link]
Example 1
Decompress the binary value.
[Link](#binary({115, 103, 200, 7, 194, 20, 134, 36, 134, 74, 134, 84, 6, 0}), [Link])
Syntax
[Link](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 , [Link] 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 [Link] for details.
If value is of any other type, an error is returned.
Example 1
Get the binary value of "1011" .
[Link]("1011")
[Link]("1011", BinaryEncoding.Base64)
[Link]
12/12/2018 • 2 minutes to read
Syntax
[Link](list as list) as binary
About
Converts a list of numbers into a binary value.
[Link]
12/12/2018 • 2 minutes to read
Syntax
[Link](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
[Link] : Hex encoding
Example 1
Decode "1011" into binary.
[Link]("1011")
[Link]("1011", BinaryEncoding.Base64)
Example 2
Decode "1011" into binary with Hex encoding.
[Link]("1011", [Link])
[Link]("EBE=", BinaryEncoding.Base64)
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](source as binary) as record
About
Returns a record with field [Link] that contains the inferred MIME -type. If the inferred content type is text/*,
and an encoding code page is detected, then additionally returns field [Link] that contains the encoding
of the stream. If the inferred content type is text/csv, and the format is delimited, additionally returns field
[Link] 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 [Link] containing a list for analysis of
potential fixed width column positions.
[Link]
11/5/2018 • 2 minutes to read
About
Returns the length of binary values.
Syntax
[Link](binary as binary) as number
Arguments
ARGUMENT DESCRIPTION
About
Converts a binary value into a list of numbers
Syntax
[Link](binary as binary) as list
Arguments
ARGUMENT DESCRIPTION
About
Encodes binary data into a text form.
Syntax
[Link](binary as binary, encoding as number) as text
Arguments
ARGUMENT DESCRIPTION
Binary encoding
BinaryEncoding.Base64 = 0;
[Link] = 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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link]
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
[Link](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.
[Link]
11/5/2018 • 2 minutes to read
About
A binary format that reads an 8-bit unsigned integer.
Syntax
[Link](binary as binary) as any
Arguments
ARGUMENT DESCRIPTION
About
Returns a binary format with the specified byte order.
Syntax
[Link](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.
[Link] = 0
[Link] = 1
Example
let
binaryData = #binary({0x01, 0x00}),
littleEndianFormat = [Link](
BinaryFormat.UnsignedInteger16, [Link])
in
littleEndianFormat(binaryData)
equals 1
[Link]
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
[Link](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 = [Link](
[Link],
(length) => [Link]([Link], 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 = [Link](
[Link],
(length) => [Link]([
length = length,
list = [Link]([Link], 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 = [Link](
[Link],
(length) => [Link]([Link], length),
type list)
in
listFormat(binaryData)
equals {3, 4}
[Link]
11/5/2018 • 2 minutes to read
About
A binary format that reads a .NET 16-byte decimal value.
Syntax
[Link](binary as binary) as any
Arguments
ARGUMENT DESCRIPTION
About
A binary format that reads an 8-byte IEEE double-precision floating point value.
Syntax
[Link](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
[Link](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 [Link] to specify how many times an item in a group is expected
to appear.
[Link] = 0
[Link] = 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 ([Link]). The value 55 is read and
discarded.
let
b = #binary(
{
1, 11,
2, 22,
2, 22,
5, 55,
1, 11
}),
f = [Link](
[Link],
{
{ 1, [Link], [Link] },
{ 2, [Link], [Link] },
{ 3, [Link], [Link] },
{ 4, [Link], [Link] }
},
(extra) => [Link])
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 [Link]. The optional item with key 2 has a default value of 123 instead of null.
let
b = #binary(
{
1, 101,
1, 102
}),
f = [Link](
[Link],
{
{ 1, [Link], [Link],
0, (list) => [Link](list) },
{ 2, [Link], [Link], 123 }
})
in
f(b)
// { 203, 123 }
[Link]
11/5/2018 • 2 minutes to read
About
Returns a binary format that limits the amount of data that can be read. Both [Link] and
[Link] can be used to read until end of the data. [Link] can be used to limit the
number of bytes that are read.
Syntax
[Link](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 = [Link](
[Link]([Link]), 2)
in
listFormat(binaryData)
equals {1, 2}
[Link]
11/5/2018 • 2 minutes to read
About
Returns a binary format that reads a sequence of items and returns a list.
Syntax
[Link](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 [Link] = #binary({1, 2, 3}),listFormat =
[Link]([Link])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 = [Link]([Link], (x) => x < 2)
in
listFormat(binaryData)
equals {1, 2}
[Link]
11/5/2018 • 2 minutes to read
About
A binary format that reads zero bytes and returns null.
Syntax
[Link](binary as binary) as any
[Link]
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
[Link](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 = [Link]([
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
[Link](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
[Link](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 = [Link](2, [Link])
in
textFormat(binaryData)
equals "AB"
[Link]
11/5/2018 • 2 minutes to read
About
Returns a binary format that will transform the values read by another binary format.
Syntax
[Link](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 = [Link](
[Link],
(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
[Link]
About
The item is expected to appear zero or one time in the input.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link]
About
The item is expected to appear zero or more times in the input.
[Link]
11/5/2018 • 2 minutes to read
About
The item is expected to appear once in the input.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link]
About
A possible value for the byteOrder parameter in [Link] . The most signficant byte appears first in
Big Endian byte order.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link]
About
A possible value for the byteOrder parameter in [Link] . The least signficant byte appears first in
Little Endian byte order.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link]
About
The compressed data is in the Deflate format.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link]
About
The compressed data is in the GZip format.
[Link]
11/5/2018 • 2 minutes to read
About
The item is expected to appear zero or one time in the input.
[Link]
11/5/2018 • 2 minutes to read
About
The item is expected to appear zero or more times in the input.
[Link]
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.
[Link]("012")
Example 2
Create a binary value from a base 64 encoded text value.
#binary("1011")
[Link]("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 [Link] and
[Link]. The function is applied to each row in the table to produce a single value for each row.
Combiner
FUNCTION DESCRIPTION
[Link] Returns a function that merges a list of text into a single text.
[Link] Returns a function that merges a list of text into a single text.
[Link] Returns a function that merges a list of text into a single text.
[Link]
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
[Link](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
[Link] (default) Values containing quotes, line feeds, or the specified delimiter
are escaped to conform to the escaped production of CSV.
[Link]
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
[Link](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
[Link] 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.
[Link]
11/5/2018 • 2 minutes to read
About
Returns a function that merges a list of text into a single text.
Syntax
[Link](lengths as list, optional template as nullable text) as function
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to CombineTextByRanges, except that the lengths are used to
determine the locations of the text.
As in [Link], each length must be non-negative.
As in SplitTextByLengths, CombineTextByLengths works by delegating to CombineTextByRanges.
[Link]
11/5/2018 • 2 minutes to read
About
Returns a function that merges a list of text into a single text.
Syntax
[Link](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 [Link], each position must be non-negative and larger than the
previous position. As in SplitTextByPositions, CombineTextByPositions works by delegating to
CombineTextByRanges.
[Link]
11/5/2018 • 2 minutes to read
About
Returns a function that merges a list of text into a single text.
Syntax
[Link](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
[Link] 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
[Link](comparer as function, x as any, y as any) as logical
Arguments
ARGUMENT DESCRIPTION
Example
let
comparer1 = [Link]("en-us", false),
comparer2 = [Link]("en-us", true)
in
[
Test1 = [Link](comparer1,"a","A"), equals false
Test2 = [Link](comparer2,"a","A") equals true
]
[Link]
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
[Link](culture as text, optional ignoreCase as nullable logical) as function
Arguments
ARGUMENT DESCRIPTION
Example
let
comparer1 = [Link]("en-us", false),
comparer2 = [Link]("en-us", true)
in
[
Test1 = comparer1("a","A"), equals -1
Test2 = comparer2("a","A") equals 0
]
[Link]
11/5/2018 • 2 minutes to read
About
Returns a comparer function which uses Ordinal rules to compare values.
Syntax
[Link](x as any, y as any) as number
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]([Link], "a","A")equals false
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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
[Link] .
[Link]("Abc", "abc")
0
[Link]
11/5/2018 • 2 minutes to read
About
Returns the current culture of the system.
Example
[Link] default equals “en-US”
Date functions
11/5/2018 • 5 minutes to read
Date
FUNCTION DESCRIPTION
[Link] Returns a number that represents the day of the year from a
DateTime value.
[Link] Returns a Date value from a set of date formats and culture
value.
[Link] Returns a number between 1 and 4 for the quarter of the year
from a DateTime value.
[Link] Returns a number for the count of week in the current month.
[Link] 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
[Link](dateTime, days as number)
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]([Link]("2011-02-19"), 5) equals 2011-02-24
About
Returns a DateTime value with the month portion incremented by n months.
Syntax
[Link](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
[Link]([Link]("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
[Link](dateTime, quarters as number)
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]([Link]("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
[Link](dateTime, weeks as number)
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]([Link]("2011-02-19"), 1) equals 2011-02-26
About
Returns a DateTime value with the year portion incremented by n years.
Syntax
[Link](dateTime as datetime, years as number) as datetime
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link]("2011-02-19"), 10) equals 2021-02-19
[Link]
11/5/2018 • 2 minutes to read
About
Returns the day for a DateTime value.
Syntax
[Link](dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link]("2011-02-19")) equals 19
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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 [Link]. Valid values are: [Link], [Link], [Link],
[Link], [Link], [Link], and [Link].
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.
[Link](#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
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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"
[Link]
11/5/2018 • 2 minutes to read
About
Returns a number that represents the day of the year from a DateTime value.
Syntax
[Link](dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]([Link]("2011-03-01")) equals 60
[Link]([Link]("2012-03-01")) equals 61
[Link]
11/5/2018 • 2 minutes to read
About
Returns the number of days in the month from a DateTime value.
Syntax
[Link](dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link]("2012-03-01")) equals 31
[Link]
11/5/2018 • 2 minutes to read
About
Returns a DateTime value for the end of the day.
Syntax
[Link](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 = [Link]("2011-02-21T12:30:00-08:00");
[Link](dateTime) equals 2011-02-21T23:59:590-08:00
Parameter values
The following day values can be used DateTime functions.
Day
DAY VALUE
[Link] 0
[Link] 1
[Link] 2
[Link] 3
[Link] 4
[Link] 5
DAY VALUE
[Link] 6
[Link]
11/5/2018 • 2 minutes to read
About
Returns a DateTime value for the end of the month.
Syntax
[Link](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 = [Link]("2011-02-21T12:30:00-08:00");
[Link](dateTime) equals 2011-02-28T23:59:59-08:00
[Link]
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
[Link](dateTime)
Arguments
ARGUMENT DESCRIPTION
dateTime The DateTime whose date and time portions are to be reset to
their terminating values for the quarter.
[Link]
1/16/2019 • 2 minutes to read
About
Returns a date, datetime, or datetimezone value for the end of the week.
Syntax
[Link](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 [Link].
Remarks
The date and time portions are reset to their initial values for the week.
The timezone information is persisted.
Example
let dateTime = [Link]("2011-02-24T12:30:00-08:00") in
[Link](dateTime, [Link]) equals 2011-02-26T23:59:59.9999999-08:00
[Link]
11/5/2018 • 2 minutes to read
About
Returns a DateTime value for the end of the year.
Syntax
[Link](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 = [Link]("2011-02-21T12:30:00-08:00");
[Link](dateTime) equals 2011-12-31T23:59:59-08:00
[Link]
11/5/2018 • 2 minutes to read
About
Returns a date value from a value.
Syntax
[Link](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
[Link].
datetimezone The Date component of the local date and time equivalent of
a value.
Remarks
If a value is null, [Link] returns null.
If a value is date, the same value is returned.
Examples
[Link](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
[Link](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
[Link]("2010-02-19") equals Date,yyyy-MM-dd
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]([Link]())
true
[Link]
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
[Link](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
[Link](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
[Link](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
[Link](dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
Syntax
[Link](**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.
```[Link]([Link]([Link] (), 1))
`true`
[Link]
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
[Link](dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
dateTime Check whether this DateTime occurred during the next month.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]([Link]([Link](), 1), 2)
true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]([Link]([Link](), 1), 2)
true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]([Link]([Link](), 1), 2)
true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]([Link]([Link](), 7), 2)
true
[Link]
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
[Link]([Link]([Link](), 1), 2)
true
[Link]
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
[Link](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
[Link](dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
dateTime Check whether this DateTime occurred during the next week.
[Link]
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
[Link](dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
dateTime Check whether this DateTime occurred during the next year.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]([Link]([Link](), -1))
true
[Link]
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
[Link](dateTime) as logical
Arguments
ARGUMENT DESCRIPTION
Syntax
[Link](**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.
[Link]([Link]([Link](), -1), 2)
true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]([Link]([Link](), -1), 2)
true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]([Link]([Link](), -1), 2)
true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]([Link]([Link](), -7), 2)
true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]([Link]([Link](), -1), 2)
true
[Link]
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
[Link](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
[Link](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
[Link](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
[Link](dateTime as nullable datetime) as nullable logical
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]([Link]("2011-01-01")) equals false
About
Returns the month from a DateTime value.
Syntax
[Link](dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link]("2011-02-19")) equals 2
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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"
[Link]
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
[Link](dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]([Link]("2011-03-21")) equals 1
[Link]([Link]("2011-11-21")) equals 4
[Link]
11/5/2018 • 2 minutes to read
About
Returns a DateTime value for the start of the day.
Syntax
[Link](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 = [Link]("2011-02-21T12:30:00-08:00");
[Link](dateTime) equals 2011-02-21T00:00:00-08:00
[Link]
11/5/2018 • 2 minutes to read
About
Returns a DateTime value representing the start of the month.
Syntax
[Link](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 = [Link]("2011-02-21T12:30:00-08:00");
[Link](dateTime) equals 2011-02-01T00:00:00-08:00
[Link]
11/5/2018 • 2 minutes to read
About
Returns a DateTime value representing the start of the week.
Syntax
[Link](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
[Link] = 0;
[Link] = 1;
[Link] = 2;
[Link] = 3;
[Link] = 4;
[Link] = 5;
[Link] = 6;
Remarks
The date and time portions are reset to their initial values for the week.
The timezone information is persisted.
Example
dateTime = [Link]("2011-02-24T12:30:00-08:00");
[Link](dateTime, [Link]) equals 2011-02-21T00:00:00-08:00
[Link]
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
[Link](dateTime)
Arguments
ARGUMENT DESCRIPTION
dateTime The DateTime whose date and time portions are to be reset to
their initial values for the quarter.
[Link]
11/5/2018 • 2 minutes to read
About
Returns a DateTime value representing the start of the year.
Syntax
[Link](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=[Link]("2011-02-21T12:30:00-08:00")
[Link](dateTime) equals 2011-01-01T00:00:00-08:00
[Link]
11/5/2018 • 2 minutes to read
About
Returns a record containing parts of a Date value.
Syntax
[Link](date as date) as record
Arguments
ARGUMENT DESCRIPTION
Example
[Link](#date(2013, 1, 1) equals [Year=2013,Month=1,Day=1]
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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"
[Link]
11/5/2018 • 2 minutes to read
About
Returns a number for the count of week in the current month.
Syntax
[Link](dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link]("2011-08-30")) equals 5
[Link]
11/13/2018 • 2 minutes to read
Syntax
[Link](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 [Link] value that indicates which day is considered the start of a new week
(for example, [Link] . 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
[Link]
11/5/2018 • 2 minutes to read
About
Returns the year from a DateTime value.
Syntax
[Link](dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link]("2011-02-19")) equals 2011
[Link]
11/5/2018 • 2 minutes to read
About
Returns 6, the number representing Friday.
[Link]
11/5/2018 • 2 minutes to read
About
Returns 2, the number representing Monday.
[Link]
11/5/2018 • 2 minutes to read
About
Returns 7, the number representing Saturday.
[Link]
11/5/2018 • 2 minutes to read
About
Returns 1, the number representing Sunday.
[Link]
11/5/2018 • 2 minutes to read
About
Returns 5, the number representing Thursday.
[Link]
11/5/2018 • 2 minutes to read
About
Returns 3, the number representing Tuesday.
[Link]
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
[Link] Returns a DateTime value set to the current date and time on
the system.
[Link] Indicates whether the given datetime value occurs during the
current hour, as determined by the current date and time on
the system.
[Link] Indicates whether the given datetime value occurs during the
current minute, as determined by the current date and time
on the system.
[Link] Indicates whether the given datetime value occurs during the
current second, as determined by the current date and time
on the system.
[Link] Indicates whether the given datetime value occurs during the
next hour, as determined by the current date and time on the
system.
[Link] Indicates whether the given datetime value occurs during the
next minute, as determined by the current date and time on
the system.
[Link] Indicates whether the given datetime value occurs during the
next number of hours, as determined by the current date and
time on the system.
[Link] 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
[Link] Indicates whether the given datetime value occurs during the
next number of seconds, as determined by the current date
and time on the system.
[Link] Indicates whether the given datetime value occurs during the
next second, as determined by the current date and time on
the system.
[Link] Indicates whether the given datetime value occurs during the
previous hour, as determined by the current date and time on
the system.
[Link] Indicates whether the given datetime value occurs during the
previous minute, as determined by the current date and time
on the system.
[Link] Indicates whether the given datetime value occurs during the
previous number of hours, as determined by the current date
and time on the system.
[Link] Indicates whether the given datetime value occurs during the
previous number of minutes, as determined by the current
date and time on the system.
[Link] Indicates whether the given datetime value occurs during the
previous number of seconds, as determined by the current
date and time on the system.
[Link] Indicates whether the given datetime value occurs during the
previous second, as determined by the current date and time
on the system.
[Link] 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
[Link](dateTime as nullable datetime, timezoneHours as number, optional timezoneMinutes
as nullable number) as nullable datetimezone
Arguments
ARGUMENT DESCRIPTION
Example
[Link](#datetime(2010, 5, 4, 6, 5, 5), 8) equals #datetimezone(2010, 5, 4, 6, 5, 5, 8, 0)
[Link]
11/5/2018 • 2 minutes to read
About
Returns a date part from a DateTime value
Syntax
[Link](dateTime as datetime) as nullable datetime
Arguments
ARGUMENT DESCRIPTION
Example
[Link](#datetime(2010, 5, 4, 6, 5, 4)) equals #date(2010, 5, 4)
[Link]
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 [Link], which may return different values over the course of execution of
an expression.
Syntax
[Link]() as datetime
[Link]
11/5/2018 • 2 minutes to read
About
Returns a datetime value from a value.
Syntax
[Link](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 [Link].
Remarks
If a value is null, [Link] returns null.
If a value is datetime, the same value is returned.
Examples
[Link](#time(06, 45, 12)) equals #datetime(1899, 12, 30, 06, 45, 12)
About
Returns a DateTime value from the supplied number.
Syntax
[Link](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
[Link](12987640252984224) equals #datetime(2012, 7, 24, 14, 50, 52.9842245)
[Link]
11/5/2018 • 2 minutes to read
About
Returns a DateTime value from a set of date formats and culture value.
Syntax
[Link](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:[Link]
YYYYMMDDThh:mm:[Link]
Terms
Y = years
M = months
D = days
h = hours
m = minutes
s = seconds
n = fractional seconds
Example
[Link]("2010-12-31T01:30:00") equals YYYY-MM-DDThh:mm:ss
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]())
Equals: true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]())
Equals: true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]())
Equals: true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]() + #duration(0,1,0,0))
Equals: true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]() + #duration(0,0,1,0))
Equals: true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]() + #duration(0,2,0,0), 2)
Equals: true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]() + #duration(0,2,0,0), 2)
Equals: true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]() + #duration(0,0,0,2), 2)
Equals: true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]() + #duration(0,0,0,1))
Equals: true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]() - #duration(0,1,0,0))
Equals: true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]() - #duration(0,0,1,0))
Equals: true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]() - #duration(0,2,0,0), 2)
Equals: true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]() - #duration(0,0,2,0), 2)
Equals: true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]() - #duration(0,0,0,2), 2)
Equals: true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]() - #duration(0,0,0,1))
Equals: true
[Link]
11/5/2018 • 2 minutes to read
About
Returns a datetime value set to the current date and time on the system.
Syntax
[Link]() as datetime
Remarks
The returned value does not contain timezone information.
Example
[Link]()equals 2013-03-08T14:22:42
[Link]
11/5/2018 • 2 minutes to read
About
Returns a time part from a DateTime value.
Syntax
[Link](dateTime as datetime) as nullable time
Arguments
ARGUMENT DESCRIPTION
Example
[Link](#datetime(2010, 5, 4, 6, 5, 4)) equals #time(6, 5, 4)
[Link]
11/5/2018 • 2 minutes to read
About
Returns a record containing parts of a DateTime value.
Syntax
[Link](dateTime as datetime) as record
Arguments
ARGUMENT DESCRIPTION
Example
[Link](#datetime(2013,1,3,12,4,5)) equals
[
Year = 2013, Month = 1, Day = 3,
Hour = 12, Minute = 4, Second = 5
]
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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
[Link] Returns the current date and time in UTC (the GMT timezone).
[Link] Returns a DateTime value set to the current system date and
time.
[Link] 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 [Link], which may return different values over the
course of execution of an expression.
Syntax
[Link]() as datetimezone
[Link]
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
[Link]() as datetimezone
[Link]
11/5/2018 • 2 minutes to read
About
Returns a datetimezone value from a value.
Syntax
[Link](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, [Link] returns null.
If a value is datetimezone , the same value is returned.
Example
[Link]("2020-10-30T01:30:00-08:00") equals #datetimezone(2020, 10, 30, 01, 30, 00, -8, 00)
[Link]
11/5/2018 • 2 minutes to read
About
Returns a DateTimeZone from a number value.
Syntax
[Link](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
[Link](12987640252984224) equals #datetimezone(2012, 7, 24, 14, 50, 52.9842245, -7, 0)
[Link]
11/5/2018 • 2 minutes to read
About
Returns a DateTimeZone value from a set of date formats and culture value.
Syntax
[Link](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:[Link]:mm
YYYYMMDDThh:mm:[Link]: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:[Link]-hh:mm
YYYYMMDDThh:mm:[Link]-hh:mm
YYYY -MM -DDThh:mmZ
YYYYMMDDThh:mmZ
YYYY -MM -DDThh:mm:ssZ
YYYYMMDDThh:mm:ssZ
YYYY -MM -DDThh:mm:[Link]
YYYYMMDDThh:mm:[Link]
Terms
Y = years
M = months
D = days
h = hours
m = minutes
s = seconds
n = fractional seconds
TZD = time zone designator
Examples
[Link]("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
[Link]() as datetimezone
Remarks
The return value contains timezone information representing the local timezone.
Example
[Link]() equals 2011-02-20T22:19:38-08:00
[Link]
11/5/2018 • 2 minutes to read
About
Returns a datetime value with the zone information removed from the input datetimezone value.
Syntax
[Link](dateTimeZone as datetimezone) as nullable datetime
Arguments
ARGUMENT DESCRIPTION
Example
[Link](#datetimezone(2010, 5, 4, 14, 5, 5, 8, 0)) equals #datetime(2010, 5, 4, 14, 5, 5)
[Link]
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, [Link] throws [Link].
Examples
[Link](#datetimezone(2010, 5, 4, 6, 5, 5, 0, 0), 8) equals #datetimezone(2010, 5, 4, 14, 5,
5, 8, 0)
[Link](#datetimezone(2010, 12, 31, 11, 56, 02, 7, 30), 0, -30) equals #datetimezone(2010, 12,
31, 3, 56, 2, 0, -30)
[Link]
11/5/2018 • 2 minutes to read
About
Returns a DateTime value from the local time zone.
Syntax
[Link](dateTime as datetimezone) as nullable datetimezone
Arguments
ARGUMENT DESCRIPTION
Example
//assuming local as PST
dateTime = [Link]("2011-02-20T22:19:27+03:00")
localTime=[Link](dateTime) equals 2011-02-20T11:19:27-08:00
[Link]
11/5/2018 • 2 minutes to read
About
Returns a record containing parts of a DateTime value.
Syntax
[Link](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
[Link]([Link]("2011-02-02T11:56:02-08:00")) equals
Year = 2011, Month = 2, Day = 2,
Hour = 11, Minute = 56, Second = 2,
Hours = -8, Minutes = 0
]
[Link]([Link]("11:56:02-05"))
[
Time = [Hour = 11, Minute = 56, Second = 2],
Timezone = [Hours = -5]
]
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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"
[Link]
11/5/2018 • 2 minutes to read
About
Returns a DateTime value to the Utc time zone.
Syntax
[Link](dateTime as datetimezone) as nullable datetimezone
Arguments
ARGUMENT DESCRIPTION
Example
dateTime = [Link]("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
[Link]() as datetimezone
Remarks
The return value contains timezone information for the Utc timezone (00:00).
Example
[Link]() equals 2011-02-21T06:25:51+00:00
[Link]
11/5/2018 • 2 minutes to read
About
Returns a time zone hour value from a DateTime value.
Syntax
[Link](dateTime as datetimezone) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link]("12:56:20-08:00")) equals -8
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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
[Link](duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns a duration value from a value.
Syntax
[Link](value as any) as nullable duration
Arguments
ARGUMENT DESCRIPTION
Remarks
If a value is null, [Link] returns null.
If a value is duration, the same value is returned.
Example
[Link](2.525) equals #duration(2,12,36,0)
[Link]
11/5/2018 • 2 minutes to read
About
Returns a Duration value from a text value.
Syntax
[Link](duration as nullable text) as nullable duration
Arguments
ARGUMENT DESCRIPTION
Duration settings
FORMAT
[-]hh:mm[:ss]
[-][Link]: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
[Link]("15:35") equals 15 hours, 35 minutes
[Link]("2.15:00") equals 2 days, 15 hours
[Link]
11/5/2018 • 2 minutes to read
About
Returns an hour component of a Duration value.
Syntax
[Link](duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns a minute component of a Duration value.
Syntax
[Link](duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns a second component of a Duration value.
Syntax
[Link](duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
duration1 = [Link]("2.05:55:20")
duration2 = [Link]("15:50")
[Link](duration1) equals 2
[Link](duration1) equals 5
[Link](duration1) equals 55
[Link](duration1) equals 20
[Link](duration2) equals 0
[Link]
11/5/2018 • 2 minutes to read
About
Returns a record with parts of a Duration value.
Syntax
[Link](duration as duration) as record
Arguments
ARGUMENT DESCRIPTION
Example
[Link](#duration(2, 5, 55, 20)) equals [Days=2, Hours=5, Minutes=55, Seconds=20]
[Link]
11/5/2018 • 2 minutes to read
About
Returns the total magnitude of days from a Duration value.
Syntax
[Link](duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns the total magnitude of hours from a Duration value.
Syntax
[Link](duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns the total magnitude of minutes from a Duration value.
Syntax
[Link](duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns the total magnitude of seconds from a duration value.
Syntax
[Link](duration as nullable duration) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
let
duration = #duration(2,22,120,20)
in
[
totaldays= [Link](duration) equals 3.0002
totalhours= [Link](duration) equals 72.005
totalminutes= [Link](duration) equals 4320.33
totalseconds=[Link](duration) equals 259220
]
[Link]
1/16/2019 • 2 minutes to read
Syntax
[Link](duration as nullable duration, optional format as nullable text) as nullable text
About
Returns a textual representation in the form "[Link]: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
[Link]() as nullable text
About
Returns an opaque identifier for the currently-running evaluation.
[Link]
1/16/2019 • 2 minutes to read
Syntax
[Link](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:
[Link]
[Link]
[Link]
[Link]
[Link]
Example 1
Trace the message before invoking [Link] function and return the result.
"123"
[Link]
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
[Link](reason as text, message as text, detail as any) as record
Arguments
ARGUMENT DESCRIPTION
Example
error [Link]("InvalidCondition","An error has occured", null)
equals error with Reason: “InvalidCondition” and Message “An error has occurred”
[Link]
11/5/2018 • 2 minutes to read
About
Returns 1, the value for Critical trace level.
[Link]
11/5/2018 • 2 minutes to read
About
Returns 2, the value for Error trace level.
[Link]
11/5/2018 • 2 minutes to read
About
Returns 4, the value for Information trace level.
[Link]
11/5/2018 • 2 minutes to read
About
Returns 5, the value for Verbose trace level.
[Link]
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
[Link](value as any) as text
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](1) equals "1"
About
Evaluates a Text expression and returns the evaluated value.
Syntax
[Link](expression as text, optional environment as [...]) as any
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]("1 + 1")
equals 2
[Link]("1 +")
equals Error
[Link](
"section Section1; shared X = 1;"
)
About
Returns a text value that can be used as an identifier from a text value.
Syntax
[Link](name as text) as text
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]("foo")
equals "foo"
[Link]("10 lbs")
[Link]("try")
equals "#""try"""
[Link]("")
equals "#"""""
[Link](null)
equals Error
equals 1
Function values
11/5/2018 • 2 minutes to read
Function
FUNCTION DESCRIPTION
[Link] Invokes the given function using the specified and returns the
result.
Syntax
[Link](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 [Link] into a two-argument function whose arguments are added together.
Example 2
Converts a function taking a list into a two-argument function.
[Link](type function (a as text, b as text) as text, (list) => list{0} & list{1})("2", "1")
"21"
[Link]
11/5/2018 • 2 minutes to read
About
Invokes the given function using the specified Arguments and returns the result.
Syntax
[Link](function as function, args as list) as any
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link], {[A=1,B=2]}) equals {"A", "B"}
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](function as function, delay as duration) as any
About
Returns the result of invoking function after duration delay has passed.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](function as function) as logical
About
Returns whether or not function is considered a data source.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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 [Link], 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
[Link] Converts a list of text into a binary value using the specified
encoding and [Link] specified lineSeparator is
appended to each line. If not specified then the carriage return
and line feed characters are used.
Syntax
[Link](**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.
[Link]
11/5/2018 • 2 minutes to read
About
Converts a text value to a list of text values split at lines breaks.
Syntax
[Link](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 [Link] specified
lineSeparator is appended to each line. If not specified then the carriage return and line feed characters are used.
Syntax
[Link](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
[Link] includeLineSeparators is true, then the line break
characters are included in the text.
Binary encoding
BinaryEncoding.Base64 = 0;
[Link] = 1;
[Link]
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
[Link] (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
[Link] includeLineSeparators is true, then the line break
characters are included in the text.
Examples
[Link]("A,""B#(cr)C""#(cr)#(lf)1,2", true, null)
{
"A,""B#(cr)",
"C""#(cr)#(lf)",
"1,2"
}
[Link]("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
[Link] Returns a list with the items alternated from the original list
based on a count, optional repeatInterval, and an optional
offset.
[Link] 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.
[Link] 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.
[Link] Returns the first set of items in the list by specifying how
many items to return or a qualifying condition provided by
countOrCondition.
[Link] Inserts items from values at the given index in the input list.
[Link] Returns the last set of items in the list by specifying how many
items to return or a qualifying condition provided by
countOrCondition.
[Link] Returns the last set of items in a list by specifying how many
items to return or a qualifying condition.
[Link] 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
[Link] Accumulates a result from the list. Starting from the initial
value seed this function applies the accumulator function and
returns the final result.
[Link] Returns a list that removes count items starting at offset. The
default count is 1.
[Link] Removes items from list1 that are present in list2, and returns
a new list.
[Link] Returns a list that repeats the contents of an input list count
times.
[Link] Searches a list of values for the value and replaces each
occurrence with the replacement value.
[Link] Splits the specified list into a list of lists using the specified
page size.
[Link] Performs the function on each item in the list and returns the
new list.
[Link] 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
[Link] Finds the first occurrence of a value in a list and returns its
position.
[Link] Finds the first occurrence of any value in values and returns its
position.
Set operations
FUNCTION DESCRIPTION
[Link] Returns a list from a list of lists and intersects common items
in individual lists. Duplicate values are supported.
[Link] 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 [Link] is thrown.
Comparable data types
Number
Duration
DateTime
Text
Logical
Null
FUNCTION DESCRIPTION
[Link] 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
[Link] 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
[Link] Returns a list of date values from size count, starting at start
and adds an increment to every value.
Parameter values
Occurrence specification
[Link] = 0;
[Link] = 1;
[Link] = 2;
Sort order
[Link] = 0;
[Link] = 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 [Link].
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. [Link] is a method that can be used to delegate
this logic.
For more information and examples, see [Link].
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
[Link]
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
[Link](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.
[Link]({1, 2, 3, 4, 5}, 0, (state, current) => state + current) equals 15
[Link]
11/5/2018 • 2 minutes to read
About
Returns true if all expressions in a list are true
Syntax
[Link](list as list) as logical
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({true, 2=2}) equals true
[Link]
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
[Link](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 [Link] is equivalent to [Link].
Example
[Link]({1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 2, 2, 0) equals {3, 4, 7, 8}
[Link]
11/5/2018 • 2 minutes to read
About
Returns true if any expression in a list in true
Syntax
[Link](list as list) as logical
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({2=0, false, 1 < 0 }) equals false
[Link]
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
[Link](list as list) as any
Arguments
ARGUMENT DESCRIPTION
Remarks
If the list is empty, an [Link] is thrown.
Examples
[Link]({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
[Link](list as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link](Sql:Database("localhost","northwind")[Customers]) equals stable copy of table Customers
[Link]
11/5/2018 • 2 minutes to read
About
Merges a list of lists into single list.
Syntax
[Link](list as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({ {1, 2, 3, 4}, {5, 6, 7}, {8, 9} }) equals {1, 2, 3, 4, 5, 6, 7, 8, 9}
[Link]
11/5/2018 • 2 minutes to read
About
Returns true if a value is found in a list.
Syntax
[Link](list as list, value as any, optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]({1, 2, 3}, 2) equals true
About
Returns true if all items in values are found in a list.
Syntax
[Link](list as list, values as list,optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]({1, 2, 3}, {2, 3}) equals true
About
Returns true if any item in values is found in a list.
Syntax
[Link](list as list, values as list,optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]({1, 2, 3}, {2, 4}) equals true
About
Returns the number of items in a list.
Syntax
[Link](list as list) as number
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]({1,2,3}) equals 3
[Link]({}) equals 0
[Link]
11/5/2018 • 2 minutes to read
About
Returns the covariance from two lists as a number.
Syntax
[Link](list1 as list, list2 as list) as number
Arguments
ARGUMENT DESCRIPTION
Syntax
[Link](**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
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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
[Link]
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
[Link](start as datetimezone, count as number, increment as duration) as { datetime }
Arguments
ARGUMENT DESCRIPTION
Example
[Link](#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)
}
[Link]
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
[Link](list1 as list, list2 as list,optional equationCriteria as any) as list
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]({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
[Link](list as list, optional equationCriteria as any, criteria as any) as list
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]({1, 2, 3, 2, 3}) equals {1, 2, 3}
[Link]({[a="a",b=2],[a="b",b=3],[a="A",b=4]},
{ each [a] , [Link]("en", true) } )
equals { [ a = "a", b = 2 ],
// [a = "b", b = 3 ] }
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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
[Link]
11/5/2018 • 2 minutes to read
About
Searches a list of values, including record fields, for a text value.
Syntax
[Link](list as list, text as text) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link](
[field1 = 1, field2 = 2 ]
}, "test")
equals
[Link](
[ Field1 = 1, Field2 = 2 ]
}, "hello")
equals
}
[Link]
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
[Link](list as list, optional defaultValue as any) as any
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]({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
[Link](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
[Link]({3, 4, 5, -1, 7, 8, 2}, 2) equals {3, 4}
Syntax
[Link](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.
[Link](()=> [ x = 1 , y = {}] , each [x] < 10 , each [x = [Link]([y]), y = [y] & {x}] , each [x])
1
9
[Link]
11/5/2018 • 2 minutes to read
About
Inserts items from values at the given index in the input list.
Syntax
[Link](list as list, offset as number, values as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({"A", "B", "D"}, 2, {"C"}) equals {"A", "B", "C", "D"}
[Link]
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
[Link](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
[Link]({ {1..5}, {2..6}, {3..7} }) equals {3..5}
About
Returns whether a list is distinct.
Syntax
[Link](list as list, optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]({1, 2, 3, 2, 3}) equals false
About
Returns whether a list is empty.
Syntax
[Link](list as list) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]({}) 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
[Link](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
[Link]({1, 2, 3}) equals 3
[Link]
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
[Link](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
[Link]({3, 4, 5, -1, 7, 8, 2},1) equals { 2 }
[Link]
11/5/2018 • 2 minutes to read
About
Returns true if all items in a list meet a condition.
Syntax
[Link](list as list, condition as Function) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]({2, 4, 6}, each [Link](_,2) = 0) equals true
About
Returns true if any item in a list meets a condition.
Syntax
[Link](list as list, condition as Function) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]({2, 4, 6}, each [Link](_, 2) = 0) equals true
About
Returns the maximum item in a list, or the optional default value if the list is empty.
Syntax
[Link](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
[Link]({1, 4, 7, 3, -2, 5}, 1) equals 7
[Link]
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
[Link](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
[Link]({3, 4, 5, -1, 7, 8, 2}, 5) equals {8, 7, 5, 4, 3}
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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} .
[Link]({5, 3, 1, 7, 9})
5
[Link]
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
[Link](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
[Link]({1, 4, 7, 3, -2, 5}) equals -2
[Link]
11/5/2018 • 2 minutes to read
About
Returns the minimum values in a list.
Syntax
[Link](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
[Link]({3, 4, 5, -1, 7, 8, 2}, 5) equals {-1, 2, 3, 4, 5}
[Link]
11/5/2018 • 2 minutes to read
About
Returns an item that appears most commonly in a list.
Syntax
[Link](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 [Link] is thrown.
Example
[Link]({"A", 1, 4, 5, 2, "B", 3, 5, 5, 4, 4}) equals 5
[Link]
11/5/2018 • 2 minutes to read
About
Returns all items that appear with the same maximum frequency.
Syntax
[Link](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 [Link] is thrown.
Example
[Link]({"A", 1, 4, 5, 2, "B", 3, 5, 5, "A", 4, 4, "A"}) equals {"A", 4, 5}
[Link]
11/5/2018 • 2 minutes to read
About
Returns the number of items in a list excluding null values
Syntax
[Link](list as list) as number
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({1, null}) equals 1
[Link]
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
[Link](start as number, count as number, optional increment as nullable number) as { Number
}
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](1, 5) equals {1, 2, 3, 4, 5}
About
Finds the first occurrence of a value in a list and returns its position.
Syntax
[Link](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
[Link]({"A", "B", "C", "D"}, "C") equals 2
About
Finds the first occurrence of any value in values and returns its position.
Syntax
[Link](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
[Link]({"A", "B", "C", "D"}, {"B", "C"}) equals 1
About
Returns a list of positions for an input list.
Syntax
[Link](list as list) as list
Arguments
ARGUMENT DESCRIPTION
Remarks
When using [Link] to modify a list, the list of positions can be used to give the transform access to the
positions.
Example
[Link]({4, 5, 6}) equals {0, 1, 2}
[Link]
11/5/2018 • 2 minutes to read
About
Returns the product from a list of numbers.
Syntax
[Link](list as list) as number
Arguments
ARGUMENT DESCRIPTION
Remarks
If the list is empty, an [Link] is thrown.
Examples
[Link]({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
[Link](count as number, optional seed as nullable number) as { Number }
Arguments
ARGUMENT DESCRIPTION
Example
[Link](10) equals { 0.44298228502412434, 0.11142372065755712, 0.81061893087374925, 0.69705957299892773,
0.84984056970562816, 0.45717397865707704, 0.27344677656583805, 0.51387371612427468, 0.14493200795023331,
0.89694489161341684 }
[Link]
11/5/2018 • 2 minutes to read
About
Returns a count items starting at an offset.
Syntax
[Link](list as list, offset as number, optional count as number) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({1..10}, 3, 5) equals {4, 5, 6, 7, 8}
[Link]
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
[Link]( 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
[Link]
{1, 2, 3, 4, 5},
equals {4, 5}
[Link]
{5, 4, 2, 6, 1},
each _ > 3
equals { 2, 6, 1}
[Link]
11/5/2018 • 2 minutes to read
About
Removes items from list1 that are present in list2, and returns a new list.
Syntax
[Link](list1 as list, list2 as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({1, 2, 3, 3}, {3}) equals { 1, 2}
[Link]
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
[Link](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
[Link]
{1, 2, 3, 4, 5},
equals {1, 2}
[Link]
{5, 4, 2, 6, 4},
each _ > 3
equals {5, 4, 2}
[Link]
11/5/2018 • 2 minutes to read
About
Removes all occurrences of the given values in the list.
Syntax
[Link](list as list, values as list, optional equationCriteria as any) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link] ({"A", "B", "C", "B", "A"}, {"A", "C"}) equals {"B", "B"}
[Link]
11/5/2018 • 2 minutes to read
About
Removes null values from a list.
Syntax
[Link](list as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({1, null, 2}) equals {1, 2}
[Link]
11/5/2018 • 2 minutes to read
About
Returns a list that removes count items starting at offset. The default count is 1.
Syntax
[Link](list as list, offset as number, optional count as nullable number) as list
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]({"A", "B", "C", "D"}, 2) equals {"A", "B", "D"}
About
Returns a list that repeats the contents of an input list count times.
Syntax
[Link](list as list, count as number) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({1, 2, 3}, 3) equals {1, 2, 3, 1, 2, 3, 1, 2, 3}
[Link]
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
[Link](list as list, replacements as any ,optional equationCriteria as any) as
list
Arguments
ARGUMENT DESCRIPTION
Examples
[Link] ({1, 2, 3, 4, 5}, {{2, -2}}) equals { 1, -2, 3, 4, 5}
[Link] ({1, 2, 3, 4, 5}, {{2, -2}, {3, -3}}) equals { 1, -2, -3, 4, 5}
[Link]
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
[Link](list as list, index as number, count as number, replaceWith as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({1, 2, 7, 8, 9, 5}, 2, 3, {3, 4}) equals {1, 2, 3, 4, 5}
[Link]
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
[Link](list as list, oldValue as any, newValue as any, replacer as function) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({"a", "B", "a", "a"}, "a", "A", [Link]) equals {"A", "B", "A", "A"}
[Link]
11/5/2018 • 2 minutes to read
About
Returns a list that reverses the items in a list.
Syntax
[Link](list as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({1, 2, 3, 4, 5}) equals {5, 4, 3, 2, 1}
[Link]
11/5/2018 • 2 minutes to read
About
Selects the items that match a condition.
Syntax
[Link](list as list, condition as function) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({1, 3, 5}, each _ > 2) equals {3 ,5}
[Link]
11/5/2018 • 2 minutes to read
About
Returns the single item of the list or throws an [Link] if the list has more than one item.
Syntax
[Link](list as list) as any
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]({1}) equals 1
About
Returns a single item from a list.
Syntax
[Link](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
[Link]({1}) equals 1
[Link]({}, 0) equals 0
[Link]
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
[Link](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
[Link]({3, 4, 5, -1, 7, 8, 2}) equals {4, 5, -1, 7, 8, 2}
[Link]({}) equals {}
About
Returns a sorted list using comparison criterion.
Syntax
[Link](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. [Link] is a method that can be used to
delegate this logic.
Examples
[Link]({2, 1}) equals {1, 2}
About
Returns the standard deviation from a list of values. [Link] performs a sample based estimate. The
result is a number for numbers, and a duration for DateTimes and Durations.
Syntax
[Link](list as list) as any
Arguments
ARGUMENT DESCRIPTION
Remarks
If the list is empty, an [Link] is thrown.
Example
[Link]({1..5}) equals 1.5811388300841898
[Link]
11/5/2018 • 2 minutes to read
About
Returns the sum from a list.
Syntax
[Link](list as list) as any
Arguments
ARGUMENT DESCRIPTION
Remarks
If the list is empty, an [Link] is thrown.
Examples
[Link]({1, 2, 3}) equals 6
Syntax
[Link](**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
[Link]
11/5/2018 • 2 minutes to read
About
Performs the function on each item in the list and returns the new list.
Syntax
[Link](list as list, transform as function) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({1, 2}, each _ + 1) equals { 2, 3 }
[Link]
11/5/2018 • 2 minutes to read
About
Returns a list whose elements are projected from the input list.
Syntax
[Link](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
[Link]({1, 2}, (value) => {value + 1}, (oldValue, newValue) => oldValue * newValue) equals { 2, 6
}
[Link]
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
[Link](list as list,optional equationCriteria as any) as list
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]({ {1..5}, {2..6}, {3..7} }) equals {1..7}
Syntax
[Link](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
[Link](value as any) as nullable logical
About
Returns a logical value from the given value . If the given value is null , [Link] 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 [Link] 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.
[Link](2)
true
[Link]
11/5/2018 • 2 minutes to read
About
Returns a logical value of true or false from a text value.
Syntax
[Link](text as nullable text) as nullable logical
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]("true") equals true
About
Returns a text value from a logical value.
Syntax
[Link](logical as nullable logical) as nullable text
Arguments
ARGUMENT DESCRIPTION
Example
[Link](true) equals "true"
Number functions
11/5/2018 • 3 minutes to read
Number
Constants
FUNCTION DESCRIPTION
Information
FUNCTION DESCRIPTION
[Link] Returns a 8-bit integer number value from the given value.
[Link] Returns a signed 8-bit integer number value from the given
value.
[Link] Returns a 16-bit integer number value from the given value.
FUNCTION DESCRIPTION
[Link] Returns a 32-bit integer number value from the given value.
[Link] Returns a 64-bit integer number value from the given value.
Rounding
FUNCTION DESCRIPTION
Operations
FUNCTION DESCRIPTION
[Link] Divides two numbers and returns the whole part of the
resulting number.
Random
FUNCTION DESCRIPTION
Trigonometry
FUNCTION DESCRIPTION
Bytes
FUNCTION DESCRIPTION
[Link] [Link]
[Link] [Link]
[Link] [Link]
[Link] [Link]
[Link] [Link]
[Link]
11/5/2018 • 2 minutes to read
About
Returns a 8-bit integer number value from the given value.
Syntax
[Link](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, [Link] 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 [Link]. If the given value is of any other type, see
[Link] for converting it to number value, then the previous statement about converting number value
to 8-bit integer number value applies. See [Link] for the available rounding modes.
Examples
[Link]("4") equals 4
About
Returns a currency value from the given value.
Syntax
[Link](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, [Link] 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
[Link] for converting it to a number value, then convert from a number to a 64-bit integer. See
[Link] for the available rounding modes, the default is [Link].
Examples
[Link]("1.23455") equals 1.2346
About
Returns a decimal number value from the given value.
Syntax
[Link](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, [Link] 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 [Link] for converting it to number value, then the previous statement
about converting number value to Decimal number value applies.
Examples
[Link]("4.5") equals 4.5
[Link]
11/5/2018 • 2 minutes to read
About
Returns a Double number value from the given value.
Syntax
[Link](value as any, optional culture as nullable text) as nullable number
Arguments
ARGUMENT DESCRIPTION
Remarks
If the given value is null, [Link] 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 [Link] for
converting it to number value, then the previous statement about converting number value to Double number
value applies.
Examples
[Link]("4.5") equals 4.5
[Link]
11/5/2018 • 2 minutes to read
About
Returns a signed 8-bit integer number value from the given value.
Syntax
[Link](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, [Link] 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
[Link]. If the given value is of any other type, see [Link] for converting it to number
value, then the previous statement about converting number value to signed 8-bit integer number value applies.
See [Link] for the available rounding modes.
Examples
[Link]("4") equals 4
About
Returns a 16-bit integer number value from the given value
Syntax
[Link](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, [Link] 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 [Link]. If the given value is of any other type, see
[Link] for converting it to number value, then the previous statement about converting number value
to 16-bit integer number value applies. See [Link] for the available rounding modes.
Examples
[Link]("4") equals 4
About
Returns a 32-bit integer number value from the given value
Syntax
[Link](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, [Link] 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 [Link]. If the given value is of any other type, see
[Link] for converting it to number value, then the previous statement about converting number value
to 32-bit integer number value applies. See [Link] for the available rounding modes.
Examples
[Link]("4") equals 4
About
Returns a 64-bit integer number value from the given value
Syntax
[Link](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, [Link] 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 [Link]. If the given value is of any other type, see
[Link] for converting it to number value, then the previous statement about converting number value
to 64-bit integer number value applies. See [Link] for the available rounding modes.
Examples
[Link]("4") equals 4
About
Returns the absolute value of a number.
Syntax
[Link](number as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link](-1) equals 1
[Link]
11/5/2018 • 2 minutes to read
About
Returns the arccosine of a number.
Syntax
[Link](angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns the arcsine of a number.
Syntax
[Link](angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns the arctangent of a number.
Syntax
[Link](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
[Link]
2/5/2019 • 2 minutes to read
About
Returns the result of performing a bitwise And operation between number1 and number2 .
Syntax
[Link](number1 as nullable number, number2 as nullable number) as nullable number
[Link]
2/5/2019 • 2 minutes to read
About
Returns the result of performing a bitwise Not operation on number .
Syntax
[Link](number as any) as any
[Link]
2/5/2019 • 2 minutes to read
About
Returns the result of performing a bitwise Or between number1 and number2 .
Syntax
[Link](number1 as nullable number, number2 as nullable number) as nullable number
[Link]
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
[Link](number1 as nullable number, number2 as nullable number) as nullable number
[Link]
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
[Link](number1 as nullable number, number2 as nullable number) as nullable
number
[Link]
2/5/2019 • 2 minutes to read
About
Returns the result of performing a bitwise XOR (Exclusive-OR ) between number1 and number2 .
Syntax
[Link](number1 as nullable number, number2 as nullable number) as nullable number
[Link]
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
[Link] (setSize as nullable number, combinationSize as nullable number) as nullable
number
Arguments
ARGUMENT DESCRIPTION
Example
[Link](5, 3) equals 10
[Link]
11/5/2018 • 2 minutes to read
About
Returns the cosine of a number.
Syntax
[Link] (angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link](0) equals 1
[Link]
11/5/2018 • 2 minutes to read
About
Returns the hyperbolic cosine of a number.
Syntax
[Link](angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns 2.7182818284590451, the value of e up to 16 decimal digits.
[Link]
11/5/2018 • 2 minutes to read
About
Returns the smallest possible number.
[Link]
11/5/2018 • 2 minutes to read
About
Returns a number representing e raised to a power.
Syntax
[Link](number as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](0) equals 1
About
Returns the factorial of a number.
Syntax
[Link](number as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link](3) equals 6
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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 , [Link] 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 [Link] 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" .
[Link]("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%" .
[Link]("12.3%")
0.123
[Link]
11/5/2018 • 2 minutes to read
About
Returns a number value from a text value.
Syntax
[Link](text as nullable text, optional culture as nullable text) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]("1") equals 1
About
Divides two numbers and returns the whole part of the resulting number.
Syntax
[Link] (number1 as nullable number, number2 as nullable number, optional precision
as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link](9.2, 3.1) equals 2
[Link]
11/5/2018 • 2 minutes to read
About
Returns true if a value is an even number.
Syntax
[Link](value as number) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](3) equals false
About
Returns true if a value is [Link].
Syntax
[Link](value as number) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](1) equals false
About
Returns true if a value is an odd number.
Syntax
[Link](value as number) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](3) equals true
About
Returns the natural logarithm of a number.
Syntax
[Link](number as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link](1) equals 0
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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 [Link] returns null.
Example 1
Get the base 10 logarithm of 2.
[Link](2, 10)
0.3010299956639812
Example 2
Get the base e logarithm of 2.
[Link](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
[Link]
11/5/2018 • 2 minutes to read
About
Divides two numbers and returns the remainder of the resulting number.
Syntax
[Link](number as nullable number, divisor as nullable number, optional precision as nullable
number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link](83, 9) equals 2
[Link]
11/5/2018 • 2 minutes to read
About
Represents 0/0.
[Link]
11/5/2018 • 2 minutes to read
About
Represents -1/0.
[Link]
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
[Link](setSize as nullable number, permutationSize as nullable number) as nullable
number
Arguments
ARGUMENT DESCRIPTION
Example
[Link](5, 3) equals 60
[Link]
11/5/2018 • 2 minutes to read
About
Returns 3.1415926535897931, the value for Pi up to 16 decimal digits.
[Link]
11/5/2018 • 2 minutes to read
About
Represents 1/0.
[Link]
11/5/2018 • 2 minutes to read
About
Returns a number raised by a power.
Syntax
[Link](number as nullable number, power as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link](9, 3) equals 729
[Link]
11/5/2018 • 2 minutes to read
About
Returns a random fractional number between 0 and 1.
Syntax
[Link]() as number
[Link]
11/5/2018 • 2 minutes to read
About
Returns a random number between the two given number values.
Syntax
[Link](bottom as number, top as number) as number
Arguments
ARGUMENT DESCRIPTION
About
Returns a nullable number (n) if value is an integer.
Syntax
[Link](value as nullable number, digits as nullable number, roundingMode as nullable
number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Settings
ROUNDING MODE DESCRIPTION
[Link].
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, [Link] is used.
Examples
[Link](-1.249, 2) equals -1.25
About
Returns [Link](value) when value >= 0 and [Link](value) when value < 0.
Syntax
[Link](value as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](-1.2) equals -2
[Link](1.2) equals 2
[Link]
11/5/2018 • 2 minutes to read
About
Returns the largest integer less than or equal to a number value.
Syntax
[Link](value as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](-1.2) equals -2
[Link](1.2) equals 1
[Link]
11/5/2018 • 2 minutes to read
About
Returns [Link](x) when x >= 0 and [Link](x) when x < 0.
Syntax
[Link](value as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](-1.2) equals -1
[Link](1.2) equals 1
[Link]
11/5/2018 • 2 minutes to read
About
Returns the larger integer greater than or equal to a number value.
Syntax
[Link](value as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](-1.2) equals -1
[Link](1.2) equals 2
[Link]
11/5/2018 • 2 minutes to read
About
Returns 1 for positive numbers, -1 for negative numbers or 0 for zero.
Syntax
[Link](number as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](-1) equals -1
[Link](1) equals 1
[Link]
11/5/2018 • 2 minutes to read
About
Returns the sine of a number.
Syntax
[Link] (angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link](0) equals 0
[Link]
11/5/2018 • 2 minutes to read
About
Returns the hyperbolic sine of a number.
Syntax
[Link](angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns the square root of a number.
Syntax
[Link](number as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link](16) equals 4
[Link]
11/5/2018 • 2 minutes to read
About
Returns the tangent of a number.
Syntax
[Link] (angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link](1) equals 1.557
[Link]
11/5/2018 • 2 minutes to read
About
Returns the hyperbolic tangent of a number.
Syntax
[Link](angle as nullable number) as nullable number
Arguments
ARGUMENT DESCRIPTION
About
Returns a text value from a number value.
Syntax
[Link](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
[Link](**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 , [Link] returns null . If
the given value is text with a trailing percent symbol, then the converted decimal number will be returned.
Otherwise, see [Link] for converting it to number value.
Example 1
Get the percentage value of "12.3%" .
[Link]("12.3%")
0.123
[Link]
11/5/2018 • 2 minutes to read
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
About
Returns a Single number value from the given value.
Syntax
[Link](value as any, optional culture as nullable text) as nullable number
Arguments
ARGUMENT DESCRIPTION
Remarks
If the given value is null, [Link] 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 [Link] for
converting it to number value, then the previous statement about converting number value to Single number
value applies.
Examples
[Link]("1.5") equals 1.5
Record functions
11/5/2018 • 2 minutes to read
Record
Information
FUNCTION DESCRIPTION
[Link] Returns true if the field name or field names are present in a
record.
Transformations
FUNCTION DESCRIPTION
[Link] Returns a new record that reorders the given fields with
respect to each other. Any fields not specified remain in their
original locations.
[Link] 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
[Link] 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.
[Link] Returns the value of a field from a record, or the default value
if the field does not exist.
FUNCTION DESCRIPTION
[Link] Returns a new record that contains the fields selected from
the input record. The original order of the fields is maintained.
Serialization
FUNCTION DESCRIPTION
[Link] Returns a record given a list of field values and a set of fields.
[Link] 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.
[Link] = 1;
[Link] = 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.)
[Link]
11/5/2018 • 2 minutes to read
About
An optional parameter in record and table functions indicating that missing fields should be ignored.
[Link]
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.
[Link]
11/5/2018 • 2 minutes to read
About
Adds a field from a field name and value.
Syntax
[Link] (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
[Link]( [CustomerID = 1, Name = "Bob", Phone = "123-4567"] , "Address", "123 Main St.")
CustomerID 1
Phone 123-4567
About
Combines the records in a list.
Syntax
[Link](list as list) as record
Arguments
ARGUMENT DESCRIPTION
Remarks
If the list contains non-record values, an error is returned.
Example
[Link]({ [CustomerID =1], [Name ="Bob"] , [Phone = "123-4567"] })
CustomerID 1
Name Bob
Phone 123-4567
[Link]
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
[Link](record as record, field as text) as any
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([CustomerID = 1, Name = "Bob", Phone = "123-4567"], "CustomerID") equals 1
[Link]
11/5/2018 • 2 minutes to read
About
Returns the number of fields in a record.
Syntax
[Link](record as record) as number
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([A=1, B=2]) equals 2
[Link]
11/5/2018 • 2 minutes to read
About
Returns a list of field names in order of the record's fields.
Syntax
[Link](record as record) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]( [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
[Link](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
[Link]([CustomerID =1, Name="Bob"], "Phone") equals null
About
Returns a list of field values in order of the record's fields.
Syntax
[Link](record as record) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]( [CustomerID = 1, Name = "Bob", Phone = "123-4567"] ) equals {1, "Bob", "123-4567"}
[Link]
11/5/2018 • 2 minutes to read
About
Returns a record from a list of field values and a set of field names.
Syntax
[Link](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 [Link] is thrown if the fields are not unique.
Examples
[Link]
OrderID 1
Name Bob
Phone 123-4567
[Link]
11/5/2018 • 2 minutes to read
About
Returns a record from a table of records containing field names and values.
Syntax
[Link](list as table) as record
Arguments
ARGUMENT DESCRIPTION
Remarks
An [Link] is thrown if the fields are not unique.
Example
let
in
[Link](input)
OrderID 1
CustomerID 1
Price 100
[Link]
11/5/2018 • 2 minutes to read
About
Returns true if the field name or field names are present in a record.
Syntax
[Link](record as record, fields as any) as logical
Arguments
ARGUMENT DESCRIPTION
Examples:
[Link]([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
[Link](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
[Link] = 0;
[Link] = 1;
[Link] = 2;
Examples
[Link]([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
[Link](record as record, renames as list, optional missingField as nullable number)
as record
Arguments
ARGUMENT DESCRIPTION
MissingField enum
[Link] = 0;
[Link] = 1;
[Link] = 2;
Remarks
[Link] swaps and chains field names. If all target names plus remaining field names are not a
unique set, an [Link] is thrown
Examples
[Link]([OrderID = 1, CustomerID = 1, Item = "Fishing rod", UnitPrice = 100.0],
{"UnitPrice","Price"})
OrderID 1
CustomerID 1
Price 100
[Link]
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
[Link](record as record, fieldOrder as list, optional missingField as nullable
number) as record
Arguments
ARGUMENT DESCRIPTION
MissingField enum
[Link] = 0;
[Link] = 1;
[Link] = 2;
Examples
[Link]( [CustomerID= 1, OrderID = 1, Item = "Fishing rod", Price = 100.0], { "OrderID",
"CustomerID" })
OrderID 1
CustomerID 1
Price 100
[Link]
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
[Link](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
[Link].|
- [Link] = 0;
- [Link] = 1;
- [Link] = 2;
## Remarks
## Examples
```powerquery-m
[Link]([A=1, B=2], "B") equals [B=2]
Syntax
[Link](**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.
[Link]([A = 1, B = 2, C = 3])
1
2
3
[Link]
11/5/2018 • 2 minutes to read
About
Returns a table of records containing field names and values from an input record.
Syntax
[Link](record as record) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
The type of the return value of this function is {[Name = text, Value = any ]}.
Example
[Link]([OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0] )
equals
OrderID 1
CustomerID 1
Price 100
[Link]
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
[Link](record as record, transformOperations as list, optional missingField as
nullable number) as record
Arguments
ARGUMENT DESCRIPTION
MissingField enum
[Link] = 0;
[Link] = 1;
[Link] = 2;
Examples
[Link]([OrderID = 1, CustomerID= 1, Item = "Fishing rod", Price = "100.0"], {"Price",
[Link]})
OrderID 1
CustomerID 1
Price 100
[Link](
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 [Link] or [Link] to do replace of text values in list and table
values respectively.
Syntax
[Link] (text as nullable text, old as text, new as text) as nullable text
Arguments
ARGUMENT DESCRIPTION
About
This function be provided to [Link] or [Link] to do replace values in list and table values
respectively.
Syntax
[Link](value as any, old as any, new as any) as any
Arguments
ARGUMENT DESCRIPTION
Splitter
FUNCTION DESCRIPTION
[Link] Returns a function that splits text into a list of text according
to a transition from one kind of character to another.
[Link] 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.
[Link]
11/5/2018 • 2 minutes to read
About
Quote characters have no significance.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link]() as function
About
Returns a function that does no splitting, returning its argument as a single element.
[Link]
11/5/2018 • 2 minutes to read
About
Returns a function that splits text by any supported delimiter.
Syntax
[Link](delimiters as list, optional quoteStyle as nullable number) as
function
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] except that multiple delimiters may
be used to specify the points at which to break the text.
[Link]
11/5/2018 • 2 minutes to read
About
Returns a function that will split text according to a delimiter.
Syntax
[Link](delimiter as text, optional quoteStyle as nullable number) as
function
Arguments
ARGUMENT DESCRIPTION
Quote styles
[Link] = 0;
[Link] = 1;
[Link]
11/5/2018 • 2 minutes to read
About
Returns a function that splits text by each delimiter in turn.
Syntax
[Link](delimiters as list, optional quoteStyle as nullable number) as
function
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] except that each delimiter is used
once in order to determine the points at which to break the text.
[Link]
11/5/2018 • 2 minutes to read
About
Returns a function that splits text according to the specified lengths.
Syntax
[Link](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.
[Link]
11/5/2018 • 2 minutes to read
About
Returns a function that splits text according to the specified positions.
Syntax
[Link](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.
[Link]
11/5/2018 • 2 minutes to read
About
Returns a function that splits text according to the specified ranges.
Syntax
[Link](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.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]
11/5/2018 • 2 minutes to read
About
Returns a function that splits text according to whitespace.
Syntax
[Link](optional quoteStyle as nullable number) as function
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to SplitTextByAnyDelimiter where the delimiters provided are all
characters for which [Link] 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
[Link] Returns a table from a list containing nested lists with the
column names and values.
[Link] Creates a table from the list where each element of the list is a
list that contains the column values for a single row.
[Link] Splits the specified table into a list of tables using the specified
page size.
Conversions
FUNCTION DESCRIPTION
Information
FUNCTION DESCRIPTION
[Link] Returns true if the table does not contain any rows.
Row operations
FUNCTION DESCRIPTION
[Link] Returns a table containing only the rows that have the
specified text within one of their cells or any part thereof.
[Link] Returns the first column of the first row of the table or a
specified default value.
[Link] 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..
[Link] Returns a table with all rows removed from the table that
contain an error in at least one of the cells in a row.
[Link] Returns a table containing the rows of the table repeated the
count number of times.
[Link] Returns a table with only the rows from table that contain an
error in at least one of the cells in a row.
[Link] Returns a table that does not contain the first row or rows of
the table.
Column operations
FUNCTION DESCRIPTION
[Link] Returns a list with the names of the columns that match the
specified types.
[Link] Demotes the header row down into the first row of a table.
[Link] Duplicates a column with the specified name. Values and type
are copied from the source column.
[Link] Returns a table where the columns have all been prefixed with
a text value.
[Link] Promotes the first row of the table into its header or column
names.
[Link] 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
[Link] = 0;
[Link] = 1;
Parameters for Join kinds
[Link] = 0;
[Link] = 1;
[Link] = 2;
[Link] = 3;
[Link] = 4;
[Link] = 5
Join Algorithm
The following JoinAlgorithm values can be specified to [Link]
[Link] 0,
[Link] 1,
[Link] 2,
[Link] 3,
[Link] 4,
[Link] 5,
[Link] 6,
Example data
The following tables are used by the examples in this section.
Customers table
Customers = [Link]({
Orders table
Orders = [Link]({
})
FUNCTION DESCRIPTION
[Link] Returns a table with a new column with a specific name that,
for each row, contains an index of the row in the table.
[Link] 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.
[Link]
[Link] Groups table rows by the values of key columns for each row.
[Link] 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.
[Link] Joins the rows of the tables based on the equality of the keys.
The results are entered into a new column.
[Link] Replaces the error values in the specified columns with the
corresponding specified value.
[Link] Returns a new table with new key information set in the keys
argument.
[Link]
Membership
Parameters for membership checks
Occurrence specification
[Link] = 0
[Link] = 1
[Link] = 2
FUNCTION DESCRIPTION
[Link] 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 = [Link](
type table [
Name = text,
Level = number,
Salary = number
])
FUNCTION DESCRIPTION
[Link] Returns the largest N rows from a table. After the rows are
sorted, the countOrCondition parameter must be specified to
further filter the result.
[Link] 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 [Link] and [Link].
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. [Link] is a method that can be used to delegate
this logic.
For examples, see description of [Link].
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 [Link] or [Link].
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.
[Link] = 0
[Link] = 1
[Link] = 2
[Link] = 0;
[Link] = 1;
[Link] = 2;
[Link] = 0
[Link] = 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 [Link].
[Link]
11/5/2018 • 2 minutes to read
About
If the splitter function returns more columns than the table expects, an error should be raised.
[Link]
11/5/2018 • 2 minutes to read
About
If the splitter function returns more columns than the table expects, they should be ignored.
[Link]
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.
[Link]
11/5/2018 • 2 minutes to read
About
Syntax
[Link]
[Link]
11/5/2018 • 2 minutes to read
About
Syntax
[Link]
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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 [Link] .
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]
[Link]
11/5/2018 • 2 minutes to read
About
An AST node representing the item in an item expression.
[Link]
11/5/2018 • 2 minutes to read
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
About
A possible value for the optional JoinKind parameter in [Link] . 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.
[Link]
11/5/2018 • 2 minutes to read
About
A possible value for the optional JoinKind parameter in [Link] . 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.
[Link]
11/5/2018 • 2 minutes to read
About
A possible value for the optional JoinKind parameter in [Link] . A left anti join returns that all rows from the
first table which do not have a match in the second table.
[Link]
11/5/2018 • 2 minutes to read
About
A possible value for the optional JoinKind parameter in [Link] . A left outer join ensures that all rows of the
first table appear in the result.
[Link]
11/5/2018 • 2 minutes to read
About
A possible value for the optional JoinKind parameter in [Link] . A right anti join returns that all rows from the
second table which do not have a match in the first table.
[Link]
11/5/2018 • 2 minutes to read
About
A possible value for the optional JoinKind parameter in [Link] . A right outer join ensures that all rows of the
second table appear in the result.
[Link]
11/5/2018 • 2 minutes to read
About
Specifies the left table of a join.
[Link]
11/5/2018 • 2 minutes to read
About
Specifies the right table of a join.
[Link]
11/5/2018 • 2 minutes to read
About
A list of positions of all occurrences of the found values is returned.
[Link]
11/5/2018 • 2 minutes to read
About
The position of the first occurrence of the found value is returned.
[Link]
11/5/2018 • 2 minutes to read
About
The position of the last occurrence of the found value is returned.
[Link]
11/5/2018 • 2 minutes to read
About
Function type which sorts the list in ascending order.
[Link]
11/5/2018 • 2 minutes to read
About
Function type which sorts the list in descending order.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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".
[Link]("CustomerName")
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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 [Link] .
All references to columns are replaced with [Link](*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
[Link](function as function) as record
About
An AST node representing the row in a row expression.
[Link]
11/5/2018 • 2 minutes to read
About
Adds a column named newColumnName to a table.
Syntax
[Link](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
[Link]([Link](
[OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0, Shipping = 15.00],
[Link]([Link](
[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
[Link]
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
[Link](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
[Link]([Link](
), "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
[Link]([Link](
), "Index", 1, 2)
1 Bob 123-4567 1
2 Jim 987-6543 3
3 Paul 543-7890 5
4 Ringo 232-1550 7
[Link]
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
[Link](table1 as table, key1 as any, table2 as function, key2 as any, newColumnName
as text) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] except that the join results are presented in a nested rather
than flattened table.
[Link] performs a left outer join by default, other join types are supported in [Link] or
[Link]
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 [Link].
Example
let
Query = let
Customers = [Link]({
}),
Orders = [Link]({
})
in
[Link](
Customers, {"CustomerID"},
Orders, {"CustomerID"},
"Orders"
),
in
#"Expand Orders"
[Link] [Link]
CUSTOMERID NAME PHONE RID MERID [Link] [Link]
4 Ringo 232-1550
[Link]
11/5/2018 • 2 minutes to read
About
Add a key to table.
Syntax
[Link](table as table, columns as list, isPrimary as logical) as table
Arguments
ARGUMENT DESCRIPTION
Example
let
table = [Link](
),
in
resultTable
1 Bob 123-4567
CUSTOMERID NAME PHONE
2 Jim 987-6543
3 Paul 543-7890
4 Ringo 232-1550
[Link]
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
[Link](table as table, column as text, aggregations as list) as table
Arguments
ARGUMENT DESCRIPTION
Example
[Link](
[Link](
{[t = [Link]({[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
[Link]
11/5/2018 • 2 minutes to read
About
Returns a table containing an alternating pattern of the rows from a table.
Syntax
[Link]( table as table, offset as number, skip as number, take as number) as table
Remarks
[Link] is similar to [Link] but requires a table as input.
Example
[Link]([Link]({
1 Bob 123-4567
3 Paul 543-7890
[Link]
11/5/2018 • 2 minutes to read
About
Buffers a table into memory, isolating it from external changes during evaluation.
Syntax
[Link](table as table) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] but requires a table as input.
Example
[Link]([Link]("localhost", "Northwind")[Customers]) equals Buffered copy of the Customers table
[Link]
11/5/2018 • 2 minutes to read
About
Returns the values from a column in a table.
Syntax
[Link](table as table, column as text) as list
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] but requires a table as input.
Example
[Link]([Link](
), "Name")
About
Returns the number of columns in a table.
Syntax
[Link](table as table) as number
Arguments
ARGUMENT DESCRIPTION
Example
let
emptyTable = [Link]({}),
in
IsEmptyTest1 = [Link](emptyTable),
IsEmptyTest2 = [Link](tableValue),
RowCount = [Link](tableValue),
ColumnCount = [Link](tableValue)
equals
IsEmptyTest1 true
IsEmptyTest2 false
RowCount 2
ColumnCount 3
[Link]
11/5/2018 • 2 minutes to read
About
Returns the names of columns from a table.
Syntax
[Link](table as table) as {Text}
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] but requires a table as input.
Example
[Link]([Link](
))
About
Returns a list with the names of the columns that match the specified types.
Syntax
[Link](table as table, listOfTypes as list) as list
Arguments
ARGUMENT DESCRIPTION
Example
let
in
equals {"a"}
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]({[Link]({[Name="Bob",Phone="123-4567"]}), [Link]({[Fax="987-6543",
Phone="838-7171"] }),[Link]({[Cell = "543-7890"]})})
Bob 123-4567
838-7171 987-6543
543-7890
Example 3
Merge two tables and project onto the given type.
[Link]({[Link]({[Name="Bob",Phone="123-4567"]}), [Link]({[Fax="987-6543",
Phone="838-7171"] }),[Link]({[Cell = "543-7890"]})}, {"CustomerID", "Name"})
CUSTOMERID NAME
Bob
[Link]
11/5/2018 • 2 minutes to read
About
The inverse of [Link], [Link] merge columns using a combiner function to produce
a new column.
Syntax
[Link](table as table, sourceColumns as list, combiner as function, column as text)
as table
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link](
{"A.1","A.2","B"}),{"A.1", "A.2"},[Link](","),"Merged")
MERGED B
a,b c
b,c d
[Link]
11/5/2018 • 2 minutes to read
About
Determines whether the a record appears as a row in the table.
Syntax
[Link](table as table, row as record, optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] but requires a table as input.
Example
[Link](
[Link](
),
[Name="Bob"])
equals true
[Link]
11/5/2018 • 2 minutes to read
About
Determines whether all of the specified records appear as rows in the table.
Syntax
[Link](table as table, rows as list, optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] but requires a table as input.
Example
[Link](
[Link](
),
"CustomerID")
equals true
[Link]
11/5/2018 • 2 minutes to read
About
Determines whether any of the specified records appear as rows in the table.
Syntax
[Link](table as table, rows as list, optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] but requires a table as input.
Example
[Link](
About
Demotes the header row down into the first row of a table.
Syntax
[Link](table as table) as table
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link](
))
1 Bob 123-4567
[Link]
11/5/2018 • 2 minutes to read
About
Removes duplicate rows from a table, ensuring that all remaining rows are distinct.
Syntax
[Link](table as table, optional equationCriteria as any) as table
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](
[Link](
), "CustomerID")
ORDERID CUSTOMERID ITEM PRICE
3 2 Fishing net 25
7 5 Bait 3.25
9 6 Bait 3.25
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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
[Link]
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
[Link](table as table, column as text) as table
Arguments
ARGUMENT DESCRIPTION
Example
[Link](
[Link](
}), "Name")
NAME DISCOUNT
Bob 0.15
Jim 0.15
Paul 0.15
[Link]
11/5/2018 • 2 minutes to read
About
Expands a column of records into columns with each of the values.
Syntax
[Link](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
[Link](table as table, column as text, columnNames as list, optional
newColumnNames as nullable list) as table
Arguments
ARGUMENT DESCRIPTION
Syntax
[Link](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
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**table** as table, **dataTableIdentifier** as text) as any
About
[Link]
[Link]
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
[Link] (table as table, text as text) as table
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link](
), "Bob")
1 Bob 123-4567
[Link]
11/5/2018 • 2 minutes to read
About
Returns the first row from a table.
Syntax
[Link](table as table, optional default as any) as any
Arguments
ARGUMENT DESCRIPTION
Remarks
If the table is empty, [Link] returns null.
Example
[Link]([Link]({
}))
NAME VALUE
CustomerID 1
Name Bob
Phone 123-4567
[Link]
11/5/2018 • 2 minutes to read
About
Returns the first row (s) of a table, depending on the countOrCondition parameter.
Syntax
[Link]( 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
[Link]([Link]({
}), 2)
1 Bob 123-4567
2 Jim 987-6543
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]
11/5/2018 • 2 minutes to read
About
Returns a table from a list containing nested lists with the column names and values.
Syntax
[Link](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
[Link]({
1 2 3
About
Converts a list into a table by applying the specified splitting function to each item in the list.
Syntax
[Link](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
[Link](
1 Bob 123-4567
2 Jim 987-6543
[Link]
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
[Link] ( 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
[Link]("Year",
{{1994, [Link]("Month", {
{"Jan", [Link]("Day", {
{"Feb", [Link]("Day",
})}})}})}})
equals
Syntax
[Link](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
[Link]
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
[Link](rows as list, optional columns as any) as table
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({{1, "Bob", "123-4567"} , {2, "Jim", "987-6543"}}, {"CustomerID ", "Name", "Phone"})
1 Bob 123-4567
2 Jim 987-6543
[Link]
11/5/2018 • 2 minutes to read
About
Returns a table with a column containing the provided value or list of values.
Syntax
[Link] (value as any) as table
Arguments
ARGUMENT DESCRIPTION
Example
[Link]({1, "Bob", "123-4567"}) equals
VALUE
Bob
132-4567
[Link]
11/5/2018 • 2 minutes to read
About
Groups table rows by the values of key columns for each row.
Syntax
[Link](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 ([Link]) or global ([Link]). 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 [Link].
The [Link] function may also be used to nest the rows in a group.
Example
let
Orders = [Link]({
})
in
CUSTOMERID TOTAL
1 125
2 25
3 202
5 103.25
6 3.25
[Link]
11/5/2018 • 2 minutes to read
About
Returns true if a table has the specified column or columns.
Syntax
[Link](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
[Link] is similar to [Link] but requires a table as input.
Examples
[Link]([Link](
),"Name")
equals true
[Link]
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
[Link](table as table, offset as number, rows as list) as table
Arguments
ARGUMENT DESCRIPTION
Remark
[Link] is similar to [Link] but requires a table as input.
Example
[Link]([Link]({
2,
[Link]([Link]({
2,
1 Bob 123-4567
2 Jim 987-6543
3 Paul 543-7890
[Link]
11/5/2018 • 2 minutes to read
About
Determines whether a table contains only distinct rows.
Syntax
[Link](table as table, optional equationCriteria as any) as logical
Arguments
ARGUMENT DESCRIPTION
Example
[Link]
[Link](
))
equals true
[Link]
11/5/2018 • 2 minutes to read
About
Returns true if the table does not contain any rows.
Syntax
[Link](table as table) as logical
Arguments
ARGUMENT DESCRIPTION
Example
let
emptyTable = [Link]({}),
in
IsEmptyTest1 = [Link](emptyTable),
IsEmptyTest2 = [Link](tableValue),
RowCount = [Link](tableValue),
ColumnCount = [Link](tableValue)
equals
IsEmptyTest1 true
IsEmptyTest2 false
RowCount 2
ColumnCount 3
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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:
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
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 ]
[Link]
([Link]({
[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", [Link]({ [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
[Link](table as table) as list
Arguments
ARGUMENT DESCRIPTION
Example
let
table = [Link](
}),
keys = [Link](resultTable),
in
#"Expand [Link]"
[Link] [Link]
CustomerID 1
[Link]
11/5/2018 • 2 minutes to read
About
Returns the last row of a table.
Syntax
[Link](table as table, optional default as) as any
Arguments
ARGUMENT DESCRIPTION
Remark
If the table is empty, [Link] returns null.
Example
[Link]([Link]({
}))
NAME VALUE
CustomerID 3
Name Paul
Phone 543-7890
[Link]
11/5/2018 • 2 minutes to read
About
Returns the last row (s) from a table, depending on the countOrCondition parameter.
Syntax
[Link](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
[Link]([Link]({
}), 1)
3 Paul 543-7890
[Link]
11/5/2018 • 2 minutes to read
About
Returns true if all of the rows in a table meet a condition.
Syntax
[Link](table as table, condition as function) as logical
Arguments
ARGUMENT DESCRIPTION
Remark
[Link] is similar to [Link] but requires a table argument.
Example
[Link]([Link] (
equals false
[Link]
11/5/2018 • 2 minutes to read
About
Returns true if any of the rows in a table meet a condition.
Syntax
[Link]( table as table, condition as function) as logical
Arguments
ARGUMENT DESCRIPTION
Remark
[Link] is similar to [Link] but requires a table argument.
Example
[Link]([Link] (
equals true
[Link]
11/5/2018 • 2 minutes to read
About
Returns the largest row or rows from a table using a comparisonCriteria.
Syntax
[Link](table as table, comparisonCriteria as any, optional default as any) as any
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] but requires a table as input.
Example
[Link](Employees, "Salary") equals [Name="Jeff", Level=10, Salary=200000]
Name Jeff
Level 10
Salary 200000
[Link]
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
[Link](table as table, comparisonCriteria as any, countOrCondition as any) as table
Arguments
ARGUMENT DESCRIPTION
ARGUMENT DESCRIPTION
Examples
[Link](Employees, "Salary", 3)
equals [Link]({[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
[Link](table as table, comparisonCriteria as any, optional default as any) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] but requires a table as input.
Example
let
Employees = [Link](
type table [
Name = text,
Level = number,
Salary = number
])
in
[Link](Employees, "Salary")
Name Margo
Level 3
Salary 45000
[Link]
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
[Link](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
[Link](Employees, "Salary", 3) equals
Margo 3 45000
Nikki 5 75000
Andrew 6 85000
[Link](Employees, "Salary", each [Level] < 6) equals
Margo 3 45000
Nikki 5 75000
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]
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
[Link] ( table as table, column as text, groups as number, hash as function) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link]({[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
[Link](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.
[Link]
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
[Link](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.
[Link](
[Link]({
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.
[Link](
[Link]({
key2 2 4 null
[Link]
11/5/2018 • 2 minutes to read
About
Determines the position or positions of a row within a table.
Syntax
[Link](table as table, row as record, optional occurrence as nullable number, optional
equationCriteria as any) as any
Arguments
ARGUMENT DESCRIPTION
Occurrence specification
[Link] = 0
[Link] = 1
[Link] = 2
Remarks
[Link] is similar to [Link] but requires a table as input.
Examples
[Link](
[Link]({
[A=1, B=2], [A=3, B=4], [A=1 B=6]}),
[A=3,B=4])
equals 1
[Link](
[Link]({
[A=1, B=2], [A=3, B=4], [A=1, B=6]}),
[A=1],
[Link], "A")
equals {0, 2}
[Link]
11/5/2018 • 2 minutes to read
About
Determines the position or positions of any of the specified rows within the table.
Syntax
[Link](table as table, rows as list, optional occurrence as nullable number, optional
equationCriteria as any) as any
Arguments
ARGUMENT DESCRIPTION
Occurrence specification
[Link] = 0
[Link] = 1
[Link] = 2
Remarks
[Link] is similar to [Link] but requires a table as input.
Examples
[Link](
[Link]({[A=1, B=2],[A=3, B=4],[A=1, B=6]}),
{[A=2, B=6],[A=3, B=4]})
equals 1
[Link](
[Link]({[A=1, B=2],[A=3, B=4],[A=1, B=6]}),
{[A=3, B=7],[A=1, B=6]},
[Link], "A")
equals {0, 1, 2}
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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
[Link]
11/5/2018 • 2 minutes to read
About
Returns a table where the columns have all been prefixed with a text value.
Syntax
[Link](table as table, prefix as text) as table
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link](
), "MyTable")
1 Bob 123-4567
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]([Link]({[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
[Link]( table as table, offset as number, optional count as nullable number) as table
Arguments
ARGUMENT DESCRIPTION
Remark
[Link] is similar to [Link] but requires a table as input.
Example
[Link]([Link]({
}), 1, 2)
2 Jim 987-6543
3 Paul 543-7890
[Link]
11/5/2018 • 2 minutes to read
About
Returns a table without a specific column or columns.
Syntax
[Link](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
[Link] is similar to [Link] applied to every row in a table.
Examples
[Link]([Link]({[CustomerID=1, Name="Bob", Phone = "123-4567"]}), "Phone")
CUSTOMERID NAME
1 Bob
[Link]
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
[Link]( 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
[Link](
[Link](
), 2)
CUSTOMERID NAME PHONE
3 Paul 543-7890
4 Ringo 232-1550
[Link](
[Link](
3 Paul 543-7890
4 Ringo 232-1550
[Link]
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
[Link]( 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
[Link](
[Link](
), 2)
CUSTOMERID NAME PHONE
1 Bob 123-4567
2 Jim 987-6543
3 Paul 543-7890
[Link](
[Link](
1 Bob 123-4567
2 Jim 987-6543
[Link]
11/5/2018 • 2 minutes to read
About
Removes all occurrences of rows from a table.
Syntax
[Link](table as table, rows as list, optional equationCriteria as any) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] but requires a table as input.
Example
[Link]([Link](
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
[Link]
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
[Link]( table as table, offset as number, optional count as nullable number) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] but requires a table as input.
Example
[Link]([Link]({
}), 2)
1 Bob 123-4567
2 Jim 987-6543
4 Ringo 232-1550
[Link]
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
[Link](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
[Link](
[Link]({[Column1=...],[Column1=2], [Column1=3]}))
equals
COLUMN1
3
[Link]
11/5/2018 • 2 minutes to read
About
Returns a table with the columns renamed as specified.
Syntax
[Link](table as table, renames as list, optional missingField as nullable number) as
table
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] applied to every row in a table.
Examples
[Link]([Link]({
{"CustomerNum", "CustomerID"})
1 Bob 123-4567
[Link]([Link]({
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
[Link](table as table, columnOrder as list, optional missingField as nullable
number) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] 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
[Link]([Link]({[CustomerID=1, Phone = "123-4567", Name ="Bob"] }), {"Name","Phone"})
1 Bob 123-4567
1 Bob 123-4567
[Link]([Link]({
[Link]([Link]({
ddress1 Address2
1 Bob 123-4567
[Link]
11/5/2018 • 2 minutes to read
About
Returns a table containing the rows of the table repeated the count number of times.
Syntax
[Link](table as table, count as number) as table
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link]({[Column1=1], [Column1=2]}), 2)
COLUMN1
2
[Link]
11/5/2018 • 2 minutes to read
About
Replaces the error values in the specified columns with the corresponding specified value.
Syntax
[Link](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
[Link](
[Link]({{1,"hello"},{3,...}}, {"Column1","Column2"}),
{"Column2", "world"})
COLUMN1 COLUMN2
1 hello
2 world
[Link]
11/5/2018 • 2 minutes to read
About
Returns a new table with new key information set in the keys argument.
Syntax
[Link](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
[Link]([Link]({[A={[B=1], [B=2]}, C=1]}), {[Columns = {"C"}, Primary = true]})
[Link]
11/5/2018 • 2 minutes to read
About
Replaces specific rows from a table with the new rows.
Syntax
[Link](table as table, replacements as list, optional equationCriteria as any)
as table
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] but requires a table as input.
The new rows must be compatible with the type of the table .
Example
[Link](
[Link](
[Column1 = 1, Column2 = 2]
}),{
COLUMN1 COLUMN2
-1 -2
-2 -3
3 4
-1 -2
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**value** as any, **identity** as text) as any
About
[Link]
[Link]
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
[Link](table as table, offset as number, count as number, rows as list) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] but requires a table as input.
Example
[Link]([Link]({[Column1=1], [Column1=2], [Column1=3], [Column1=4], [Column1=5]}), 1, 3,
{[Column1=6], [Column1=7]})
COLUMN1
5
[Link]
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
[Link] or [Link].
Syntax
[Link](table as table, oldValue as any, newValue as any,replacer as function,
columnsToSearch as {Text}) as table
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](
[Link](
),
"Bob",
[Link], {"Name"})
2 Jim 987-6543
3 Paul 543-7890
4 Ringo 232-1550
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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
[Link]
11/5/2018 • 2 minutes to read
About
Returns the number of rows in a table.
Syntax
[Link](table as table) as number
Arguments
ARGUMENT DESCRIPTION
Example
let
emptyTable = [Link]({}),
in
IsEmptyTest1 = [Link](emptyTable),
IsEmptyTest2 = [Link](tableValue),
RowCount = [Link](tableValue),
ColumnCount = [Link](tableValue)
equals
IsEmptyTest1 true
IsEmptyTest2 false
RowCount 2
ColumnCount 3
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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
[Link](table as table, columns as any, optional missingField as any) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] applied to every row in a table.
Examples
[Link]([Link](
), "Name")
NAME
Bob
Jim
NAME
Paul
Ringo
[Link]([Link]({
CUSTOMERID NAME
1 Bob
[Link]([Link]({
CUSTOMERID NEWCOLUMN
1 null
[Link]
11/5/2018 • 2 minutes to read
About
Returns a table containing only the rows that match a condition.
Syntax
[Link](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
[Link]([Link](
3 Paul 543-7890
4 Ringo 232-1550
[Link]
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
[Link](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
[Link]([Link](
))
About
Returns a single row from a table.
Syntax
[Link](table as table) as record
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] but requires a table as input.
Example
[Link]([Link](
))
CustomerID 1
Name Bob
Phone 123-4567
[Link]
11/5/2018 • 2 minutes to read
About
Returns a table that does not contain the first row or rows of the table.
Syntax
[Link](table as table, optional countOrCondition as any) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] 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
[Link]([Link](
), 2)
3 Paul 543-7890
CUSTOMERID NAME PHONE
4 Ringo 232-1550
[Link]
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
[Link](table as table, optional comparisonCriteria as any) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] but requires a table as input.
Examples
[Link](
[Link](
),
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
[Link]
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
[Link](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 = [Link]({
})
in
[Link](Customers,"Name",[Link]("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
[Link]
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
[Link](table as table) as list
Arguments
ARGUMENT DESCRIPTION
Example
let
Source = [Link]([Link](
}))
in
Source
equals
{1, 2},
{"Bob", "Jim"},
{ "123-4567", "987-6543"}
}
[Link]
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
[Link](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 = [Link]({
{[Link](1),"Bob", "123-4567" },
in
[Link](input, [Link](","))
equals
"1,Bob,123-4567",
"2,Jim,987-6543",
"3,Paul,543-7890"
}
[Link]
11/5/2018 • 2 minutes to read
About
Returns a list of records from an input table.
Syntax
[Link](table as table) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link]({{"1", "2"}},{"a", "b"})) equals {[a = "1", b = "2"]}
[Link]
11/5/2018 • 2 minutes to read
About
Returns a nested list of row values from an input table.
Syntax
[Link](table as table) as list
Arguments
ARGUMENT DESCRIPTION
Example
let
Source = [Link]([Link]({
}))
in
Source
equals
}
[Link]
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:
[Link] : Used to perform an exact ordinal comparison
[Link] : Used to perform an exact ordinal case-insensitive comparison
[Link] : Used to perform a culture aware comparison
Syntax
[Link](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|
[Link]
11/5/2018 • 2 minutes to read
About
Transforms columns from a table using a function.
Syntax
[Link](table as table, transformOperations as list, optional defaultTransformation
as nullable function, optional missingField as nullable number) as table
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] applied to every row in a table.
Examples
[Link](
[Link]({[A="1", B=2], [A="5", B=10]}),
{"A", [Link]})
equals [Link]({[A=1,B=2], [A=5,B=10]})
[Link](
[Link]({[A="1",B=2], [A="5", B=10]}),
{{"A", [Link]},
{"B", each _ + 1}})
equals [Link]({[A=1,B=3], [A=5,B=11]})
[Link](
[Link]({[A="1",B=2], [A="5", B=10]}),
{"X", [Link]})
equals [Link]
[Link](
[Link]({[A="1",B=2], [A="5", B=10]}),
{"X", [Link]},
[Link])
equals [Link]({[A="1",B=2], [A="5",B=10]})
[Link](
[Link]({[A="1",B=2], [A="5", B=10]}),
{"X", [Link]},
[Link])
equals [Link]({[A="1",B=2,X=/* [Link]*/],
[A="5",B=10,X=/* [Link] error*/]})
[Link]
11/5/2018 • 2 minutes to read
About
Transforms the column types from a table using a type.
Syntax
[Link](table as table, typeTransformations as list, optional culture as
nullable text) as table
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](
[Link]({
[A="1",B=2], [A="5", B=10]}),
{"A", type number})
equals [Link]({
[A=1,B=2], [A=5,B=10]})
[Link](
[Link]({
[A="1",B=2],
[A="5", B=10]}),
{"X", type number})
equals [Link]
[Link](
[Link]({
[A="1/10/1990",B="29,000"],
[A="2/10/1990", B="29.000"]}),
{{"A", type date}, {"B", type number}}, "en-US")
equals [Link]({
[A=#date(1990, 10, 1),B=29000],
[A=#date(1990, 10, 2),B=29]})
[Link]
11/5/2018 • 2 minutes to read
About
Transforms the rows from a table using a transform function.
Syntax
[Link](table as table, transform as function) as list
Arguments
ARGUMENT DESCRIPTION
Remarks
[Link] is similar to [Link] but requires a table as input.
Example
[Link]( [Link]({[A=1], [A=2], [A=3], [A=4], [A=5]}), each [A]) equals {1, 2, 3,
4, 5}
[Link]
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
[Link](table as table, optional columns as any) as table
Arguments
ARGUMENT DESCRIPTION
Example
[Link](
[Link](
[Link](
[Link]({
})
Value Fred 42 UK
[Link]
11/5/2018 • 2 minutes to read
About
Given a list of table columns, transforms those columns into attribute-value pairs.
Syntax
[Link](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
[Link]([Link]({
key1 attribute1 1
key1 attribute3 3
[Link]
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
[Link](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
[Link]([Link]({ [ 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
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link] 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 [Link] .
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](function as function) as function
About
Creates a view function based on function that can be handled in a view created by [Link] .
The OnInvoke handler of [Link] 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 [Link] and custom view
functions.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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
[Link] Returns the count of characters from the start of a text value.
FUNCTION DESCRIPTION
[Link] Returns the number of characters from the end of a text value.
Modification
FUNCTION DESCRIPTION
[Link] Returns a text value with newValue inserted into a text value
starting at a zero-based offset.
Membership
FUNCTION DESCRIPTION
[Link] Returns true if a text value substring was found within a text
value string; otherwise, false.
[Link] Returns the first occurrence of a text value in list and returns
its position starting at startOffset.
Transformations
FUNCTION DESCRIPTION
[Link] Returns a text value that is the result of joining all text values
with each value separated by a separator.
[Link] Returns a text value padded at the end with pad to make it at
least length characters.
[Link] Returns a text value with first letters of all words converted to
uppercase.
Parameters
PARAMETER VALUES DESCRIPTION
[Link] Indicates indexing should be done from the end of the input.
[Link] Indicates indexing should be done from the start of the input.
About
Returns a number to its character value.
Syntax
[Link](number as nullable number) as nullable text
Arguments
ARGUMENT DESCRIPTION
About
Returns a character to its number value.
Syntax
[Link](character as nullable text) as nullable number
Arguments
ARGUMENT DESCRIPTION
Syntax
[Link](value as nullable text) as nullable text
About
Returns a [Link] value from the given value . If the given value is null , [Link] 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.
[Link]("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.
[Link]("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.
[Link]("{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.
[Link]("(05FE1DAD-C8C2-4F3B-A4C2-D194116B4967)")
"05fe1dad-c8c2-4f3b-a4c2-d194116b4967"
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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""}"
[Link]
11/5/2018 • 2 minutes to read
About
Indicates indexing should be done from the end of the input.
[Link]
11/5/2018 • 2 minutes to read
About
Indicates indexing should be done from the start of the input.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]("111-222-333", "-")
"222-333"
Example 2
Get the portion of "111-222-333" after the second hyphen.
[Link]("111-222-333", "-", 1)
"333"
Example 3
Get the portion of "111-222-333" after the second hyphen from the end.
"222-333"
[Link]
11/5/2018 • 2 minutes to read
About
Returns a character starting at a zero-based offset.
Syntax
[Link](value as nullable text, index as number) as nullable text
Arguments
ARGUMENT DESCRIPTION
Remarks
If the offset is greater than index, an [Link] is thrown.
Examples
[Link]("abcd", 0) equals "a"
Syntax
[Link](**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.
[Link]("111-222-333", "-")
"111"
Example 2
Get the portion of "111-222-333" before the second hyphen.
[Link]("111-222-333", "-", 1)
"111-222"
Example 3
Get the portion of "111-222-333" before the second hyphen from the end.
"111"
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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
[Link](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
[Link](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
[Link]({"a", "b", "c"}, ",") equals "a,b,c"
[Link]
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
[Link](string as nullable text, substring as text, optional comparer as nullable function)
as nullable logical
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]("abc", "a") equals true
About
Returns the number of characters from the end of a text value.
Syntax
[Link](string as nullable text, numChars as number) as nullable text
Arguments
ARGUMENT DESCRIPTION
Example
[Link]("abcd", 2) equals "cd"
[Link]
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
[Link](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 ([Link]) are supported.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]("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."
[Link]
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, [Link] returns null. The optional culture parameter is used to format the text value according to
the given culture.
Syntax
[Link](value as any, optional culture as nullable text) as nullable text
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](1) equals "1"
About
Decodes data from a binary value in to a text value using an encoding.
Syntax
[Link](binary as nullable binary, optional encoding as nullable number) as nullable text
Arguments
ARGUMENT DESCRIPTION
Text encoding
TextEncoding.Utf8 = 65001;
TextEncoding.Utf16 = 1200;
[Link] = 20127;
[Link] = 1200;
[Link] = 1201,
[Link] = 1252;
[Link]
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
[Link](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 [Link] is thrown.
Example
[Link]("abcdef",2,"X") equals "abXcdef"
[Link]
11/5/2018 • 2 minutes to read
About
Returns the number of characters in a text value.
Syntax
[Link](text as nullable text) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link]("abc") equals 3
Text Comparisons
Text comparisons are performed by obtaining a comparer from [Link]. The comparer returns 0,
a negative number, or a positive number based on the result of the comparison. The [Link] function is
used to compare two text values.
Example
let
comparer = [Link]("en-US", false)
in
[
comparisonResult = comparer("a","b"),
equalityResult = [Link](comparer,"a","b")
]
[Link]
11/13/2018 • 2 minutes to read
About
Returns the result of converting all characters in text to lowercase.
Syntax
[Link](text as nullable text, optional culture as nullable text) as nullable text
Example
Get the lowercase version of "AbCd".
[Link]("AbCd")
"abcd"
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]("Hello World", 6, 5)
Equals: "World"
[Link]
11/5/2018 • 2 minutes to read
About
Returns a Guid value as a text value.
Syntax
[Link]() as text
Example
[Link]() equals "b5f92cce-04d5-4cd5-be90-ee97a1070e84"
[Link]
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
[Link](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
[Link]("abc", 5, "a") equals "abcaa"
[Link]
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
[Link](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
[Link]("xyz", 5, "a") equals "aaxyz"
Syntax
[Link](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:
[Link] : Used to perform an exact ordinal comparison
[Link] : Used to perform an exact ordinal case-insensitive comparison
[Link] : 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
[Link]
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
[Link](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
[Link]("ABCD", {"B","C"}) equals 1
About
Returns a text value with first letters of all words converted to uppercase.
Syntax
[Link](string as nullable text) as nullable text
Example
Use [Link] 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
[Link](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
[Link](text as nullable text, removeChars as any) as nullable text
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]("a,b,;c",",")equals "ab;c"
About
Removes count characters at a zero-based offset from a text value.
Syntax
[Link](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
[Link] is thrown.
Examples
[Link]("abcdef", 2) equals "abdef"
About
Returns a text value composed of the input text value repeated a number of times.
Syntax
[Link](string as text, repeatCount as number) as text
Arguments
ARGUMENT DESCRIPTION
Example
[Link]("a",5) equals "aaaaa"
[Link]
11/5/2018 • 2 minutes to read
About
Replaces all occurrences of a substring with a new text value.
Syntax
[Link] (text as nullable text, old as text, new as text) as nullable text
Arguments
ARGUMENT DESCRIPTION
Example
[Link]("Thisisanorange", "orange", "apple") equals "Thisisanapple"
[Link]
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
[Link](text as nullable text, offset as number, length as number, newText as text) as
nullable text
Arguments
ARGUMENT DESCRIPTION
Example
[Link]("abcdef", 2, 3, "xyz") equals "abxyzf"
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](text as nullable text) as nullable text
About
Reverses the provided text .
Example 1
Reverse the text "123".
[Link]("123")
"321"
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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.
[Link]("a,b;c", {"a".."z"})
"abc"
[Link]
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
[Link](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.
[Link]
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
[Link](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
[Link](string as nullable text, count as number) as nullable text
Arguments
ARGUMENT DESCRIPTION
Example
[Link]("abcd", 2) equals "ab"
[Link]
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 ([Link]) are supported.
Syntax
[Link](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
[Link](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
[Link](text as text) as list
Arguments
ARGUMENT DESCRIPTION
Example
[Link]("abc") equals {"a","b","c"}
[Link]
11/5/2018 • 2 minutes to read
About
Removes any occurrence of character pattern in trimChars from text.
Syntax
[Link](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
[Link]("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
[Link](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
[Link](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.
[Link]
11/13/2018 • 2 minutes to read
About
Returns the result of converting all characters in text to uppercase.
Syntax
[Link](text as nullable text, optional culture as nullable text) as nullable text
Example
Get the uppercase version of "aBcD".
[Link]("aBcD")
"ABCD"
[Link]
11/5/2018 • 2 minutes to read
About
Use to choose the ASCII binary form.
[Link]
11/5/2018 • 2 minutes to read
About
Use to choose the UTF16 big endian binary form.
[Link]
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.
[Link]
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
[Link] Returns the first value of the hour from a time value.
About
Returns a DateTime value from the end of the hour.
Syntax
[Link](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 = [Link]("2011-02-21T12:30:00-08:00");
[Link](dateTime) equals 2011-02-21T12:59:59-08:00
[Link]
11/5/2018 • 2 minutes to read
About
Returns a time value from a value.
Syntax
[Link](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
[Link].
datetimezone The time component of the local date and time equivalent of
value.
Remarks
If value is null, [Link] returns null.
If value is time, the same value is returned.
Examples
[Link](0.7575) equals #time(18,10,48)
About
Returns a Time value from a set of date formats.
Syntax
[Link](time as nullable text, optional culture as nullable text) as nullable date
Arguments
ARGUMENT DESCRIPTION
Time formats
hh:mm
hh:mm:ss
hh:mm:[Link]
Terms
h = hours
m = minutes
s = seconds
n = fractional seconds
Examples
[Link]("12:34:12") equals Time,hh:mm:ss
About
Returns an hour value from a DateTime value.
Syntax
[Link](dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link]("12:56:20")) equals 12
[Link]
11/5/2018 • 2 minutes to read
About
Returns a minute value from a DateTime value.
Syntax
[Link](dateTime as datetime) as nullable number
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link]("12:56:20")) equals 56
[Link]
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
[Link]
11/5/2018 • 2 minutes to read
About
Returns the first value of the hour from a time value.
Syntax
[Link](datetime as datetime) as nullable datetime
Arguments
ARGUMENT DESCRIPTION
Example
[Link](#datetime(2013, 4, 5, 1, 3, 45)) equals #datetime(2013, 4, 5, 1, 0, 0)
[Link]
11/5/2018 • 2 minutes to read
About
Returns a record containing parts of a Date value.
Syntax
[Link](time as time) as record
Arguments
ARGUMENT DESCRIPTION
Example
[Link](#time(12, 1, 2)) equals [Hour=12, Minute=1, Second=2]
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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
[Link] 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)
[Link] 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.
[Link] [Link]
About
Add a key to a table type.
Syntax
[Link] (table as type, columns as list, isPrimary as logical) as type
Arguments
ARGUMENT DESCRIPTION
Example
[Link](tableType, {"A", "B"}, false) equals add a non-primary key that combines values from columns
A and B
[Link]
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
[Link](#"type" as type) as type
Example
[Link]( type [ A = number,…] ) equals type [A=number]
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](type as type) as record
About
Returns a record containing the facets of type.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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
[Link](fields as record, open as logical) as type
Arguments
ARGUMENT DESCRIPTION
Example
[Link](
[
X = [Type = type number, Optional = false],
Y = [Type = type number, Optional = true]], true)
equals type [ X = number, optional Y = number,...
]
[Link]
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
[Link](functionType as type) as record
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](type function () as any) equals []
About
Returns a number indicating the minimum number of parameters required to invoke the a type of function.
Syntax
[Link](#"type" as type) as number
Examples
[Link]( type function () as any) equals 0
About
Returns a type returned by a function type.
Syntax
[Link](type as type) as type
Examples
[Link](type function () as any) equals type any
Syntax
[Link](**type1** as type, **type2** as type) as logical
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
About
Returns true if a type is a nullable type; otherwise, false.
Syntax
[Link](#"type" as type) as logical
Examples
[Link](type nullable number) equals true
About
Returns whether a record type is open.
Syntax
[Link](#"type" as type) as logical
Examples
[Link](type [ A = number,…]) equals true
About
Returns an item type from a list type.
Syntax
[Link](#"type" as type) as type
Example
[Link] (type { number }) equals type number
[Link]
11/5/2018 • 2 minutes to read
About
Returns the non nullable type from a type.
Syntax
[Link](#"type" as type) as type
Example
[Link](type nullable number) equals type number
[Link]
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
[Link](#"type" as type) as type
Example
[Link]( type [ A = number] ) equals type [ A = number, …]
[Link]
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
[Link](#"type" as type) as record
Example
[Link](type [ A = number, optional B = any])
equals [
A = [Type = number, Optional = false],
B = [Type = any, Optional = true]
]
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](type as type, facets as record) as type
About
Replaces the facets of type with the facets contained in the record facets.
[Link]
11/5/2018 • 2 minutes to read
About
Replaces the keys in a table type.
Syntax
[Link](tableType as type, keys as list) as type
Arguments
ARGUMENT DESCRIPTION
Example
[Link](tableType, {}) equals returns type value with all keys removed
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**tableType** as type, **column** as text) as type
About
Returns the type of the column column in the table type tableType .
[Link]
11/5/2018 • 2 minutes to read
About
Returns keys from a table type.
Syntax
[Link](tableType as type) as list
[Link]
11/5/2018 • 2 minutes to read
About
Returns a row type from a table type.
Syntax
[Link](table as type) as type
Example
[Link](
[Link](
[Link](
[Link]({[A=1]}),
type table [ A = number] ))
)
equals type [ A = number ]
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](tableType as type) as table
About
Returns a table describing the columns of tableType .
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**types** as list) as type
About
Uri
FUNCTION DESCRIPTION
[Link] Returns a record value with the fields set to the parts of a Uri
text value.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**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.
[Link]([a="1", b="+$"])
"a=1&b=%2B%24"
[Link]
11/5/2018 • 2 minutes to read
About
Returns a Uri based on the combination of the base and relative parts.
Syntax
[Link](baseUri as text, relativeUri as text) as text
Arguments
ARGUMENT DESCRIPTION
Syntax
[Link](**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$".
[Link]("+money$")
"%2Bmoney%24"
[Link]
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
[Link](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
[Link]("[Link]
equals [
Scheme = "http",
Host = "[Link]",
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
[Link] Returns the result of dividing the first value by the second.
Parameter types
TYPE DESCRIPTION
IMPLEMENTATION DESCRIPTION
[Link] [Link]
[Link] [Link]
[Link] [Link]
[Link] [Link]
[Link] [Link]
Metadata
FUNCTION DESCRIPTION
[Link] Removes the metadata on the value and returns the original
value.
Syntax
[Link](**value** as any) as table
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**value** as any, **path** as text) as any
About
Accesses a value by name in an embedded mashup.
[Link]
11/5/2018 • 2 minutes to read
About
An optional parameter for the built-in arithmetic operators to specify decimal precision.
[Link]
11/5/2018 • 2 minutes to read
About
An optional parameter for the built-in arithmetic operators to specify double precision.
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**schema** as any) as any
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**sql** as text, **environment** as record) as text
About
[Link]
[Link]
11/5/2018 • 2 minutes to read
About
[Link] 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
[Link](value as any, type as type) as any
Arguments
ARGUMENT DESCRIPTION
About
Syntax
[Link](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
[Link](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.
[Link]
11/5/2018 • 2 minutes to read
About
Syntax
[Link](value1 as any, value2 as any, optional precision as nullable number) as any
Arguments
ARGUMENT DESCRIPTION
About
Returns whether two values are equal.
Syntax
[Link](left as any, right as any, equater as record) as logical
Arguments
ARGUMENT DESCRIPTION
Examples
[Link](2,4)
equals false
[Link](2,4,
[
Equals= (x,y) => [Link](x,2)=[Link](y,2),
Hash = (x) => [Link](x)
])equals true
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**key** as text) as any
About
[Link]
[Link]
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.
[Link] 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
[Link](value as text, optional culture as nullable text)
Arguments
ARGUMENT DESCRIPTION
Examples
[Link]("1") equals 1
About
[Link] 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
[Link](value as any, type as type) as logical
Arguments
ARGUMENT DESCRIPTION
About
Returns a record containing the input’s metadata.
Syntax
[Link](value as any) as record
Arguments
ARGUMENT DESCRIPTION
Example
[Link](1 meta [meta = 1]) equals [ meta = 1]
[Link]
11/5/2018 • 2 minutes to read
About
Syntax
[Link](value1 as any, value2 as any, optional precision as nullable number) as any
Arguments
ARGUMENT DESCRIPTION
Parameter types
Precision specification
[Link] = 0,
[Link] = 1,
[Link]
11/5/2018 • 2 minutes to read
About
Returns a logical value or null based on two values .
Syntax
[Link](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 [Link].
Example
[Link](1, null) equals null
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](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
[Link](value as any) as any
Arguments
ARGUMENT DESCRIPTION
Example
[Link](1 meta [meta = 1]) equals 1
[Link]
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
[Link](value as any, newMeta as record) as any
Arguments
ARGUMENT DESCRIPTION
Example
[Link](1 meta [meta = 1], [meta=2]) equals 1 meta [meta = 2]
[Link]
11/5/2018 • 2 minutes to read
About
A value may be ascribed a type using [Link]. [Link] 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
[Link](value as any, replacedType as type) as any
Arguments
ARGUMENT DESCRIPTION
replacedType As type.
[Link]
11/5/2018 • 2 minutes to read
About
Syntax
[Link](value1 as any, value2 as any, optional precision as nullable number) as any
Arguments
ARGUMENT DESCRIPTION
Example
[Link]([Link]( {1}, type {number}) equals type {number}
[Link]
11/5/2018 • 2 minutes to read
Syntax
[Link](**identifier** as text) as any
About
[Link]
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 [Link]() and yields a
text value in proper case.
Let expression
let
Source = [Link]("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",
[Link]([Link](), "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 = [Link]("hello world")
in
Source
/* Capitalize each word in the Item column in the Orders table. [Link]
is evaluated for each Item in each table row. */
let
Orders = [Link]({
[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" = [Link](Orders, {"Item", [Link]})
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
[Link](value as any) as number Returns a 32-bit integer number value from the given value.
[Link](value as any) as number Returns a 64-bit integer number value from the given value.
[Link](value as any) as number Returns a Single number value from the given value.
[Link](value as any) as number Returns a Double number value from the given value.
[Link](value as any) as number Returns a Decimal number value from the given value.
[Link](value as any) as number Returns a Currency number value from the given value.
Text
TYPE CONVERSION DESCRIPTION
[Link](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
[Link](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 [Link] 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 = [Link](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 [Link] and [Link] 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 = "[Link]",
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"









