0% found this document useful (0 votes)
509 views866 pages

Power Query M Function Reference Guide

The document provides an overview of the various functions available in Power Query M, which is the query language used in Power Query. It lists over 150 functions organized into categories like accessing data functions, binary functions, date functions, list functions, record functions, and table functions. The functions can be used to access, transform, and combine data from various sources.

Uploaded by

HamdiThabet
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
0% found this document useful (0 votes)
509 views866 pages

Power Query M Function Reference Guide

The document provides an overview of the various functions available in Power Query M, which is the query language used in Power Query. It lists over 150 functions organized into categories like accessing data functions, binary functions, date functions, list functions, record functions, and table functions. The functions can be used to access, transform, and combine data from various sources.

Uploaded by

HamdiThabet
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.

Contents

Power Query M Reference


Power Query M functions
Power Query M functions overview
Understanding Power Query M functions
Accessing data functions
Accessing data functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Binary functions
Binary functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
BinaryEncoding.Base64
[Link]
BinaryFormat.7BitEncodedSignedInteger
BinaryFormat.7BitEncodedUnsignedInteger
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
BinaryFormat.SignedInteger16
BinaryFormat.SignedInteger32
BinaryFormat.SignedInteger64
[Link]
[Link]
[Link]
BinaryFormat.UnsignedInteger16
BinaryFormat.UnsignedInteger32
BinaryFormat.UnsignedInteger64
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
#binary
Combiner functions
Combiner functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
Comparer functions
Comparer functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
Date functions
Date functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
#date
DateTime functions
DateTime functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
#datetime
DateTimeZone functions
DateTimeZone functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
#datetimezone
Duration functions
Duration functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
#duration
Error handling
Error handling overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Expression functions
Expression functions overview
[Link]
[Link]
[Link]
Function values
Function values overview
[Link]
[Link]
[Link]
[Link]
[Link]
Lines functions
Lines functions overview
[Link]
[Link]
[Link]
[Link]
List functions
List functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Logical functions
Logical functions overview
[Link]
[Link]
[Link]
Number functions
Number functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Number.Atan2
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Number.E
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Number.Log10
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Record functions
Record functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Replacer functions
Replacer functions overview
[Link]
[Link]
Splitter functions
Splitter functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Table functions
Table functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
#table
Text functions
Text functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
TextEncoding.Utf8
TextEncoding.Utf16
[Link]
Time functions
Time functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
#time
Type functions
Type functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Uri functions
Uri functions overview
[Link]
[Link]
[Link]
[Link]
Value functions
Value functions overview
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Quick tour of the Power Query M formula language
Power Query M language specification
Power Query M type system
Expressions, values, and let expression
Comments
Evaluation model
Operators
Type conversion
Metadata
Errors
Power Query M Reference
11/8/2018 • 2 minutes to read

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#.

Sections and articles in this reference


Power Query M functions
Quick tour of the Power Query M formula language
Power Query M language specification
Power Query M type system
Expressions, values, and let expression
Comments
Evaluation model
Operators
Type conversion
Metadata
Errors
Power Query M function reference
11/5/2018 • 2 minutes to read

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

Example – Implicit parameters and return value

let
Add = (x, y) => x + y,
AddResults =
[
OnePlusOne = Add(1, 1), // equals 2
OnePlusTwo = Add(1, 2) // equals 3
]
in
AddResults

Find the first element of a list greater than 5, or null otherwise

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 a structural representation of an Microsoft Access


database.

[Link] Returns a table with Domain information available in the


current domain or optional Active Directory forest.

[Link] Returns a table of multidimensional packages from Adobe


Analyics.

[Link] Returns the schema collection for an [Link] data source.

[Link] Returns the result of running a native query on an [Link]


data source.

[Link] Returns a table of multidimensional cubes or tabular models


from the Analysis Services database.

[Link] Returns the Analysis Services databases on a particular host.

[Link] Returns the content of the specified blob from an Azure


storage vault.

[Link] Returns a navigational table containing all containers found in


the Azure Storage account. Each row has the container name
and a link to the container blobs.

[Link] Returns a navigational table containing a row for each table


found at the account URL from an Azure storage vault. Each
row contains a link to the azure table.

[Link] Returns the content of the file at the URL from an Azure Data
Lake Storage filesystem.

[Link] Returns the contents of a CSV document as a table using the


specified encoding.

[Link] Quotes in a field are only significant immediately following the


delimiter.
FUNCTION DESCRIPTION

[Link] Quotes in a field are always significant regardless of where


they appear.

[Link] 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.

[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] Returns a cube after applying parameter with arguments to


cube.

[Link] Returns the unique member identifier from a member


property value.

[Link] Returns the property propertyName of dimension attribute


attribute .

[Link] Changes the dimensional granularity of the filter context for


the cube by collapsing the attributes mapped to the specified
columns columnNames.

[Link] Returns a table containing the set of available dimensions


within the cube.

[Link] 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] Returns a table containing the set of available measures within


the cube.

[Link] Returns a table containing the set of available properties for


measures that are expanded in the cube.

[Link] Returns the property of a measure.

[Link] Returns a table containing the set of parameters that can be


applied to cube.

[Link] Returns a table containing the set of available properties for


dimensions that are expanded in the cube.

[Link] Returns the key of property property .

[Link]

[Link] Applies the list cube functions, transforms, on the cube.


FUNCTION DESCRIPTION

[Link] Returns a table with data relating to the tables in the specified
DB2 Database.

[Link] Returns the tables in the current Excel workbook

[Link] Returns a table representing sheets in the given excel


workbook.

[Link] Returns a table of contents from a Microsoft Exchange


account.

[Link] Returns a table containing content from the Facebook graph .

[Link] Returns the binary contents of the file located at a path.

[Link] Returns a table containing the properties and contents of the


files and folders found at path.

[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 the Google Analytics accounts for the current


credential.

[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 navigational table containing all containers found in


the HDInsight account. Each row has the container name and
table containing its files.

[Link] Returns a navigational table containing all containers found in


the HDInsight account. Each row has the container name and
table containing its files.

[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 containing the results of running the specified


CSS selectors against the provided html

[Link] Returns a table of SQL tables and views available in an


Informix database on server server in the database instance
named database .
FUNCTION DESCRIPTION

[Link] 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].

[Link] Produces a JSON representation of a given value value with a


text encoding specified by encoding.

[Link] Returns a table with data relating to the tables in the specified
MySQL Database.

[Link] Returns a table of OData feeds offered by an OData


serviceUri.

[Link] Allows the OData service to omit null values.

[Link] Returns a table of SQL tables and views from the ODBC data
source specified by the connection string connectionString .

[Link] Returns the result of trying to infer SQL capabilities for an


ODBC driver.

[Link] Connects to a generic provider with the given connection


string and returns the result of evaluating the query.

[Link] Returns a table of SQL tables and views from the OLE DB data
source specified by the connection string.

[Link] Returns the result of running a native query on an OLE DB


data source.

[Link] Returns a table with data relating to the tables in the specified
Oracle Database.

[Link] Returns any tables found in pdf.

[Link] Returns a table with data relating to the tables in the specified
PostgreSQL Database.

[Link] Returns a record of data frames from the RData file.

[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] Connects to the SAP BusinessObjects BI Universe at the


specified URL and returns the set of available universes.

[Link] Returns the InfoCubes and queries in an SAP Business


Warehouse system grouped by InfoArea.
FUNCTION DESCRIPTION

[Link] 'DataStream flattening mode' option for MDX execution in


SAP Business Warehouse.

[Link] 'bXML flattening mode' option for MDX execution in SAP


Business Warehouse.

[Link] 'Gzip compressed bXML flattening mode' option for MDX


execution in SAP Business Warehouse. Recommended for low
latency or high volume queries.

[Link] Returns the packages in an SAP HANA database.

[Link] Returns the packages in an SAP HANA database.

[Link] 'Connection' distribution option for SAP HANA.

[Link] 'Off' distribution option for SAP HANA.

[Link] 'Statement' distribution option for SAP HANA.

[Link] 'Equals' range operator for SAP HANA input parameters.

[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 a table containing a row for each folder and


document found at the SharePoint site url. Each row contains
properties of the folder or file and a link to its content.

[Link] Returns a table containing a row for each document found at


the SharePoint site url, and subfolders. Each row contains
properties of the folder or file and a link to its content.

[Link] Returns a table containing the result of a SharePoint List as an


OData feed.

[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 containing SQL tables located on a SQL Server


instance database.
FUNCTION DESCRIPTION

[Link] Returns a table with references to databases located on a SQL


Server instance. Returns a navigation table.

[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.

[Link] Returns the contents downloaded from a web url as a binary


value.

[Link] Returns the contents of an HTML webpage as a table.

[Link] Specifies the DELETE method for HTTP.

[Link] Specifies the GET method for HTTP.

[Link] Specifies the HEAD method for HTTP.

[Link] Specifies the PATCH method for HTTP.

[Link] Specifies the POST method for HTTP.

[Link] Specifies the PUT method for HTTP.

[Link] Returns the contents of an XML document as a hierarchical


table (list of records).

[Link] Returns the contents of an XML document as a nested


collection of flattened tables.
[Link]
12/12/2018 • 2 minutes to read

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.

[Link]([Link]("OrderID,Item 1,Fishing rod 2,1 lb. worms"))

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

workbook The workbook to retrieve the sheets for.

optional useHeaders Use the first row of the excel sheets as table headers.

Example
[Link]([Link]("[Link]"))

let

Source = [Link]([Link]("C:\Projects\Examples\Customers and [Link]"), true),

Customers_Sheet = Source{[Item="Customers",Kind="Sheet"]}[Data]

in

Customers_Sheet

CUSTOMERID NAME PHONE

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

url The text that represents URL.


[Link]
11/5/2018 • 2 minutes to read

About
Returns the binary contents of the file located at a path.

Syntax
[Link](path as text) as binary

Arguments
ARGUMENT DESCRIPTION

path The path to the file to retrieve contents for.

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

path The path to the folder to retrieve contents for.


[Link]
11/5/2018 • 2 minutes to read

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

path The path to the folder to retrieve files for.


[Link]
11/5/2018 • 2 minutes to read

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

url The URL to check the contents of.


[Link]
11/5/2018 • 2 minutes to read

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

accountName The name of the HDInsight account to check.

containerName The name of the table.


[Link]
11/5/2018 • 2 minutes to read

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

accountName The name of the HDInsight account to check.


[Link]
11/5/2018 • 2 minutes to read

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

accountName The name of the HDInsight account to check.


[Link]
11/5/2018 • 2 minutes to read

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

url The URL to check the files of.


[Link]
11/13/2018 • 2 minutes to read

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.

[Link]("<div class=""name"">Jo</div><span>Manager</span>", {{"Name", ".name"}, {"Title", "span"}},


[RowSelector=".name"])

NAME TITLE

Jo Manager

Example 2
Extracts all the hrefs from a sample html text value.

[Link]("<a href=""/[Link]"">Test</a>", {{"Link", "a", each [Attributes][href]}})

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

jsonText Json formatted text.

optional encoding The encoding value.

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]"))

#table({"Name", "Kind", "Data"}, ...)


[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 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

url The URL of the SAP BusinessObjects BI Universe to connect


to.

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

url The URL pointing to the SODA compliant .csv source


[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 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]

"<!DOCTYPE html><html xmlns=..."

Example 2
Returns the HTML for [Link] after waiting for a CSS selector to exist.

[Link]("[Link] [WaitFor = [Selector = "[Link]"]])

"<!DOCTYPE html><html xmlns=..."

Example 3
Returns the HTML for [Link] after waiting ten seconds.

[Link]("[Link] [WaitFor = [Timeout = #duration(0,0,0,10)]])

"<!DOCTYPE html><html xmlns=..."

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)]])

"<!DOCTYPE html><html xmlns=..."


[Link]
11/5/2018 • 2 minutes to read

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

url The URL for the Web site.

options An options record to control the behavior of this function.

options Field
FIELD DESCRIPTION

Query Programmatically add query parameters to the URL.

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).

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.

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

html HTML elements.


[Link]
11/5/2018 • 2 minutes to read

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

contents The contents may be directly passed to the function as text, or


it may be the binary value returned by a function like
[Link] or [Link].

options Xml document options.

encoding Encoding value.

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

Contents The contents may be directly passed to the function as text, or


it may be the binary value returned by a function like
[Link] or [Link].

optional options Control the behavior of this function.

encoding Encoding value.

options Settings
SETTING DESCRIPTION

NavigationTable If true, output tables are navigation tables. Default value is


true.

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 reads a binary value.

[Link] A binary format that reads an 8-bit unsigned integer.

[Link] Returns a binary format that chooses the next binary format
based on a value that has already been read.

[Link] A binary format that reads a .NET 16-byte decimal value.

[Link] A binary format that reads an 8-byte IEEE double-precision


floating point value.

[Link] 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.

[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] Returns a binary format that reads a sequence of items and


returns a list.

[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.

BinaryFormat.SignedInteger16 A binary format that reads a 16-bit signed integer.

BinaryFormat.SignedInteger32 A binary format that reads a 32-bit signed integer.

BinaryFormat.SignedInteger64 A binary format that reads a 64-bit signed integer.


FUNCTION DESCRIPTION

[Link] A binary format that reads a 4-byte IEEE single-precision


floating point value.

[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.

BinaryFormat.UnsignedInteger16 A binary format that reads a 16-bit unsigned integer.

BinaryFormat.UnsignedInteger32 A binary format that reads a 32-bit unsigned integer.

BinaryFormat.UnsignedInteger64 A binary format that reads a 64-bit unsigned integer.

CONTROLLING BYTE ORDER DESCRIPTION

[Link] Returns a binary format with the byte order specified by a


function.

[Link] Returns information about how a table is partitioned.

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] Combines a list of binaries into a single binary.

[Link] Compresses a binary value using the given compression type.

[Link] Decompresses a binary value using the given compression


type.

[Link] Returns a binary value from the given value.

[Link] Converts a list of numbers into a binary value

[Link] Decodes data from a text form into binary.

[Link] Returns a record with field [Link] that contains the


inferred MIME-type.

[Link] Returns the length of binary values.

[Link] Converts a binary value into a list of numbers

[Link] Encodes binary data into a text form.


FUNCTION DESCRIPTION

BinaryEncoding.Base64 Constant to use as the encoding type when base-64 encoding


is required.

[Link] Constant to use as the encoding type when hexadecimal


encoding is required.

[Link] The item is expected to appear zero or one time in the input.

[Link] The item is expected to appear zero or more times in the


input.

[Link] The item is expected to appear once in the input.

[Link] A possible value for the parameter in


byteOrder
[Link] . The most signficant byte appears
first in Big Endian byte order.

[Link] A possible value for the byteOrderparameter in


[Link] . The least signficant byte appears
first in Little Endian byte order.

[Link] The compressed data is in the 'Deflate' format.

[Link] The compressed data is in the 'GZip' format.

[Link] The item is expected to appear zero or one time in the input.

[Link] The item is expected to appear zero or more times in the


input.

[Link] The item is expected to appear once in the input.


[Link]
12/12/2018 • 2 minutes to read

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.

[Link]([Link]([Link]({10}, 1000)), [Link])

#binary({227, 226, 26, 5, 163, 96, 20, 12, 119, 0, 0})


[Link]
12/12/2018 • 2 minutes to read

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])

#binary({71, 0, 111, 0, 111, 0, 100, 0, 98, 0, 121, 0, 101, 0})


[Link]
12/12/2018 • 2 minutes to read

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

binary The binary value to check.


[Link]
11/5/2018 • 2 minutes to read

About
Converts a binary value into a list of numbers

Syntax
[Link](binary as binary) as list

Arguments
ARGUMENT DESCRIPTION

binary The binary value to convert.


[Link]
11/5/2018 • 2 minutes to read

About
Encodes binary data into a text form.

Syntax
[Link](binary as binary, encoding as number) as text

Arguments
ARGUMENT DESCRIPTION

binary The binary data to encode.

encoding The encoding option to apply.

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

binary A 64-bit signed integer that was encoded using a 7-bit


variable-length encoding.
BinaryFormat.7BitEncodedUnsignedInteger
11/5/2018 • 2 minutes to read

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

binary A 64-bit unsigned integer that was encoded using a 7-bit


variable-length encoding.

Controlling byte order


The default byte order for binary formats is [Link]. To change this use the [Link]
function.
[Link]
11/5/2018 • 2 minutes to read

About
Returns a binary format that reads a binary value.

Syntax
[Link](optional length as nullable number) as function

Arguments
ARGUMENT DESCRIPTION

optional length Length of bytes.

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

binary An 8-bit unsigned integer


[Link]
11/5/2018 • 2 minutes to read

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.

choice Choice for the next binary format.

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

binary A .NET 16-byte decimal value


[Link]
11/5/2018 • 2 minutes to read

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

binary An 8-byte IEEE double-precision floating point value


[Link]
11/5/2018 • 3 minutes to read

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

binaryFormat The binary format of a key value.

group Provides information about a group of known items.

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

binaryFormat The binary format to limit.

length The number of bytes to read

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

binaryFormat The binary format of each item.

optional countOrCondition See Remarks

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 two bytes.


letbinaryData = #binary({1, 2, 3}),
listFormat = [Link]([Link], 2)
in
listFormat(binaryData)
equals {1, 2}

// 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

record The format of the record

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

binary A 16-bit signed integer


BinaryFormat.SignedInteger32
11/5/2018 • 2 minutes to read

About
A binary format that reads a 32-bit signed integer.

Syntax
BinaryFormat.SignedInteger32(binary as binary) as any

Arguments
ARGUMENT DESCRIPTION

binary A 32-bit signed integer


BinaryFormat.SignedInteger64
11/5/2018 • 2 minutes to read

About
A binary format that reads a 64-bit signed integer.

Syntax
BinaryFormat.SignedInteger64(binary as binary) as any

Arguments
ARGUMENT DESCRIPTION

binary A 64-bit signed integer


[Link]
11/5/2018 • 2 minutes to read

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

binary A 4-byte IEEE single-precision floating point value


[Link]
11/5/2018 • 2 minutes to read

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

length The number of bytes to decode.

optional encoding The encoding of the text.

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

binary A 16-bit unsigned integer


BinaryFormat.UnsignedInteger32
11/5/2018 • 2 minutes to read

About
A binary format that reads a 32-bit unsigned integer.

Syntax
BinaryFormat.UnsignedInteger32(binary as binary) as any

Arguments
ARGUMENT DESCRIPTION

binary A 32-bit unsigned integer


BinaryFormat.UnsignedInteger64
11/5/2018 • 2 minutes to read

About
A binary format that reads a 64-bit unsigned integer.

Syntax
BinaryFormat.UnsignedInteger64(binary as binary) as any

Arguments
ARGUMENT DESCRIPTION

binary A 64-bit unsigned integer


[Link]
11/5/2018 • 2 minutes to read

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.

#binary({0x30, 0x31, 0x32})

[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 combines a list of text into a single


text using the specified delimiter.

[Link] Returns a function that combines a list of text into a single


text using each specified delimiter in sequence.

[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

delimiters Separates the values.

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] The text in the list is concatenated.

[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

delimiters The delimiter characters are used to identify at what points to


split the string. The delimiter character is not included in the
split values. A trailing delimiter character will yield an
additional empty text value. The split values contain all
characters between the delimiters. This function will always
produce at least one value.

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

lengths The lengths to combine on.

optional template The Combiner template.

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

positions The positions to combine at.

optional template The Combiner template.

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

ranges The ranges to combine at.

optional template The Combiner template.

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.

[Link] 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.

[Link] Returns a comparer function which uses Ordinal rules to


compare values.

[Link] Returns a case-insensitive comparer function which uses


Ordinal rules to compare the provided values x and y.

[Link] Returns the current culture of the system.


[Link]
11/5/2018 • 2 minutes to read

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

comparer The comparer function is used to perform the operation.

x The left value to compare.

y The right value to compare.

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

culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

optional ignoreCase Logical value whether or not to ignore the case.

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

x The left value to compare.

y The right value to compare.

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 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.

[Link] Returns a DateTime value with the month portion


incremented by n months.

[Link] 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.

[Link] 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.

[Link] Returns a DateTime value with the year portion incremented


by n years.

[Link] Returns the day for a DateTime value.

[Link] Returns a number between 0 and 6 representing the day of


the week from a DateTime value.

[Link] Returns the day of the week name.

[Link] Returns a number that represents the day of the year from a
DateTime value.

[Link] Returns the number of days in the month from a DateTime


value.

[Link] Returns a DateTime value for the end of the day.

[Link] Returns a DateTime value for the end of the month.

[Link] 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.

[Link] Returns a DateTime value for the end of the week.


FUNCTION DESCRIPTION

[Link] Returns a DateTime value for the end of the year.

[Link] Returns a date value from a value.

[Link] Returns a Date value from a set of date formats and culture
value.

[Link] Indicates whether the given datetime value dateTime occurs


during the current day, as determined by the current date and
time on the system.

[Link] 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.

[Link] 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.

[Link] 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.

[Link] 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.

[Link] Indicates whether the given datetime value dateTime occurs


during the next day, as determined by the current date and
time on the system.

[Link] Returns a logical value indicating whether the given


Date/DateTime/DateTimeZone occurred during the next
month, as determined by the current date and time on the
system.

[Link] 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.

[Link] 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.

[Link] 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.

[Link] 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.
FUNCTION DESCRIPTION

[Link] 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.

[Link] Returns a logical value indicating whether the given


Date/DateTime/DateTimeZone occurred during the next
quarter, as determined by the current date and time on the
system.

[Link] Returns a logical value indicating whether the given


Date/DateTime/DateTimeZone occurred during the next week,
as determined by the current date and time on the system.

[Link] Returns a logical value indicating whether the given


Date/DateTime/DateTimeZone occurred during the next year,
as determined by the current date and time on the system.

[Link] Indicates whether the given datetime value dateTime occurs


during the previous day, as determined by the current date
and time on the system.

[Link] 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.

[Link] 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.

[Link] 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.

[Link] 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.

[Link] 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.

[Link] 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.

[Link] 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.

[Link] 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.
FUNCTION DESCRIPTION

[Link] 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.

[Link] 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.

[Link] Returns a logical value indicating whether the year portion of


a DateTime value is a leap year.

[Link] Returns the month from a DateTime value.

[Link] Returns the name of the month component.

[Link] Returns a number between 1 and 4 for the quarter of the year
from a DateTime value.

[Link] Returns a DateTime value for the start of the day.

[Link] Returns a DateTime value representing the start of the month.

[Link] Returns a DateTime value representing the start of the


quarter.

[Link] Returns a DateTime value representing the start of the week.

[Link] Returns a DateTime value representing the start of the year.

[Link] Returns a record containing parts of a Date value.

[Link] Returns a text value from a Date 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.

[Link] Returns the year from a DateTime value.

PARAMETER VALUES DESCRIPTION

[Link] Represents Sunday.

[Link] Represents Monday.

[Link] Represents Tuesday.

[Link] Represents Wednesday.


PARAMETER VALUES DESCRIPTION

[Link] Represents Thursday.

[Link] Represents Friday.

[Link] Represents Saturday.


[Link]
11/5/2018 • 2 minutes to read

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

dateTime The DateTime to add days to.

days The number of days to add.

Examples
[Link]([Link]("2011-02-19"), 5) equals 2011-02-24

[Link]([Link]("2011-02-19"), -2) equals 2011-02-17

[Link]([Link]("2011-12-31"), 1) equals 2012-01-01


[Link]
11/5/2018 • 2 minutes to read

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

dateTime The DateTime to add months to.

numberOfMonths The number of months to add.

Remarks
It also handles incrementing the year portion of the value as appropriate.

Examples
[Link]([Link]("2011-02-19"), 5) equals 2011-07-19

[Link]([Link]("2010-12-01"), 2) equals 2011-02-01


[Link]
11/5/2018 • 2 minutes to read

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

dateTime The DateTime to add quarters to.

quarters The number of quarters to add.

Examples
[Link]([Link]("2011-02-19"), 1) equals 2011-05-19

[Link]([Link]("2011-11-30"), 1) equals 2012-02-29


[Link]
11/5/2018 • 2 minutes to read

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

dateTime The DateTime to add weeks to.

weeks The number of weeks to add.

Examples
[Link]([Link]("2011-02-19"), 1) equals 2011-02-26

[Link]([Link]("2011-02-19"), -2) equals 2011-02-05

[Link]([Link]("2011-12-31"), 1) equals 2012-01-07


[Link]
11/5/2018 • 2 minutes to read

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

dateTime The DateTime to add years to.

years The number of years to add.

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

date The Date to retrieve the day for.

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.

[Link](#date(2011, 02, 21), [Link])

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.

[Link](#date(2011, 12, 31), "en-US")

"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

dateTime The DateTime to check against.

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

dateTime The DateTime to check against.

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

dateTime The DateTime to check against.

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.

- The timezone information is persisted.

## 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

dateTime The date, datetime, or datetimezone to check against.

optional firstDayOfWeek A number value as an enum value to set the last day of the
week. The default value for firstDayOfWeek is [Link].

Day 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
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

dateTime The DateTime to check against.

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

value Value to convert.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

Values of the following types can be converted to a date value:

TYPE DESCRIPTION

text Returns a Date value from a text value. For more details, see
[Link].

datetime The Date component of a value.

datetimezone The Date component of the local date and time equivalent of
a value.

number The Date component of the datetime equivalent of the OLE


Automation Date of a value.

any other type An [Link] is thrown.

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)

[Link](#datetime(1899, 12, 30, 6, 45, 12)) equals #date(1899,12,30)


[Link]
11/5/2018 • 2 minutes to read

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

date A string value to transorm.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

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

dateTime Check whether this DateTime occurred during the current


month.
[Link]
11/5/2018 • 2 minutes to read

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

dateTime Check whether this DateTime occurred during the current


quarter.
[Link]
11/5/2018 • 2 minutes to read

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

dateTime Check whether this DateTime occurred during the current


week.
[Link]
11/5/2018 • 2 minutes to read

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

dateTime Check whether this DateTime occurred during the current


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 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

[Link](**dateTime** as any, **years** as number) as nullable logical


</pre>

## 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

dateTime Check whether this DateTime occurred during the next


quarter.
[Link]
11/5/2018 • 2 minutes to read

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

dateTime Check whether this DateTime occurred during the previous


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 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

dateTime Check whether this DateTime occurred during the previous


quarter.
[Link]
11/5/2018 • 2 minutes to read

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

dateTime Check whether this DateTime occurred during the previous


week
[Link]
11/5/2018 • 2 minutes to read

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

dateTime Check whether this DateTime occurred during the previous


year.
[Link]
11/5/2018 • 2 minutes to read

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

dateTime Check whether this DateTime occurred in the period starting


January 1st of the current year and ending on the current day.
[Link]
11/5/2018 • 2 minutes to read

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

dateTime The DateTime to check.

Examples
[Link]([Link]("2011-01-01")) equals false

[Link]([Link]("2012-01-01")) equals true


[Link]
11/5/2018 • 2 minutes to read

About
Returns the month from a DateTime value.

Syntax
[Link](dateTime as datetime) as nullable number

Arguments
ARGUMENT DESCRIPTION

date The Date to retrieve the month for.

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.

[Link](#datetime(2011, 12, 31, 5, 0, 0), "en-US")

"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

dateTime The DateTime to check against.

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

dateTime The DateTime to check against.

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

dateTime The DateTime to check against.

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

dateTime The DateTime to check against.

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

dateTime The DateTime to check against.

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

date The Date to parse.

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).

[Link](#date(2010, 12, 31))

"12/31/2010"

Example 2
Get a textual representation of #date(2010, 12, 31) with format option.

[Link](#date(2010, 12, 31), "yyyy/MM/dd")

"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

dateTime The DateTime to check against.

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) ).

[Link](#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.

[Link](#date(2011, 03, 27), [Link])

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

date The Date to retrieve the year for.

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] Adds the timezonehours as an offset to the input datetime


value and returns a new datetimezone value.

[Link] Returns a date part from a DateTime value

[Link] Returns a DateTime value set to the current date and time on
the system.

[Link] Returns a datetime value from a value.

[Link] Returns a DateTime value from the supplied number.

[Link] Returns a DateTime value from a set of date formats and


culture value.

[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.

[Link] Returns a time part from a DateTime value.

[Link] Returns a record containing parts of a DateTime value.

[Link] Returns a text value from a DateTime value.


[Link]
11/5/2018 • 2 minutes to read

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

dateTime A DateTime to modify.

timezoneHours The hours to add.

optional timezoneMinutes The minuts to add.

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

dateTime The DateTime to parse.

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

value Value to convert.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

Type to convert
TYPE DESCRIPTION

text Returns a datetime value from a text value. For more details,
see [Link].

date A datetime with value as the date component and 12:0:00 AM


as the time component.

datetimezone The local date and time equivalent of value.

time A datetime with the date equivalent to the OLE Automation


Date of 0 as the date component and value as the time
component.

number A datetime equivalent the OLE Automation Date expressed by


value.

any other type An [Link] is thrown.

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)

[Link](#date(1975, 4, 4)) equals #datetime(1975, 4, 4, 0, 0, 0)


[Link]
11/5/2018 • 2 minutes to read

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 The text value to convert.

Culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

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

dateTime: A datetime, or datetimezone value to be evaluated.

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

dateTime: A datetime, or datetimezone value to be evaluated.

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

dateTime: A datetime, or datetimezone value to be evaluated.

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

dateTime: A datetime, or datetimezone value to be evaluated.

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

dateTime: A datetime, or datetimezone value to be evaluated.

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

dateTime: A datetime, or datetimezone value to be evaluated.

hours: The number of hours.

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

dateTime: A datetime, or datetimezone value to be evaluated.

minutes: The number of minutes.

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

dateTime: A datetime, or datetimezone value to be evaluated.

seconds: The number of seconds.

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

dateTime: A datetime, or datetimezone value to be evaluated.

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

dateTime: A datetime, or datetimezone value to be evaluated.

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

dateTime: A datetime, or datetimezone value to be evaluated.

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

dateTime: A datetime, or datetimezone value to be evaluated.

hours: The number of hours.

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

dateTime: A datetime, or datetimezone value to be evaluated.

minutes: The number of minutes.

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

dateTime: A datetime, or datetimezone value to be evaluated.

seconds: The number of seconds.

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

dateTime: A datetime, or datetimezone value to be evaluated.

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

dateTime The DateTime to parse.

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

dateTime The DateTime to parse.

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).

[Link](#datetime(2010, 12, 31, 11, 56, 2))

"12/31/2010 11:56:02 AM"

Example 2
Get a textual representation of #datetime(2011, 12, 31, 11, 56, 2) with format option.

[Link](#datetime(2010, 12, 31, 11, 56, 2), "yyyy/MM/ddThh:mm:ss")

"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 a DateTimeZone value set to the current date, time,


and timezone offset on the system.

[Link] Returns the current date and time in UTC (the GMT timezone).

[Link] Returns a datetimezone value from a value.

[Link] Returns a DateTimeZone from a number value.

[Link] Returns a DateTimeZone value from a set of date formats and


culture value.

[Link] Returns a DateTime value set to the current system date and
time.

[Link] Returns a datetime value with the zone information removed


from the input datetimezone value.

[Link] Changes the timezone information for the input


DateTimeZone.

[Link] Returns a DateTime value from the local time zone.

[Link] Returns a record containing parts of a DateTime value.

[Link] Returns a text value from a DateTime value.

[Link] Returns a DateTime value to the Utc time zone.

[Link] Returns a DateTime value set to the current system date and
time in the Utc timezone.

[Link] Returns a time zone hour value from a DateTime value.

[Link] Returns a time zone minute value from a DateTime value.


[Link]
11/5/2018 • 2 minutes to read

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

value Value to convert.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

Type to convert
TYPE DESCRIPTION

text Returns a datetimezone value from a text value. For more


details, see [Link].

date A datetimezone with value as the date component, 12:0:00


AM as the time component and the offset corresponding the
local time zone.

datetime A datetimezone with value as the datetime and the offset


corresponding the local time zone.

time A datetimezone with the date equivalent of the OLE


Automation Date of 0 as the date component, value as the
time component and the offset corresponding the local time
zone.

number A datetimezone with the datetime equivalent the OLE


Automation Date expressed by value and the offset
corresponding the local time zone.

any other type An [Link] is thrown.

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

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

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

[Link]("2010-12-31T01:30:00Z") equals 2010-12-31T01:30:00+00:00


[Link]
11/5/2018 • 2 minutes to read

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

dateTimeZone The DateTimeZone to modify.

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

dateTimeZone The DateTimeZone to modify.

timezoneHours The house to add.

optional timezoneMinutes The minuts to add.

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

dateTime The DateTimeZone to convert.

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

dateTimeZone The DateTimeZone to convert.

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).

[Link](#datetimezone(2010, 12, 31, 11, 56, 2, 8, 0))

"12/31/2010 11:56:02 AM +08:00"

Example 2
Get a textual representation of #datetimezone(2010, 12, 31, 11, 56, 2, 10, 12) with format option.

[Link](#datetimezone(2010, 12, 31, 11, 56, 2, 10, 12), "yyyy/MM/ddThh:mm:sszzz")

"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

dateTime The DateTimeZone to convert.

Example
dateTime = [Link]("2011-02-20T22:19:27+03:00")

utcTime = [Link](dateTime)equals 2011-02-20T19:19:27+00:00


[Link]
11/5/2018 • 2 minutes to read

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

dateTime The DateTimeZone to check against.

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

[Link] Returns the day component of a Duration value.

[Link] Returns a duration value from a value.

[Link] Returns a Duration value from a text value.

[Link] Returns an hour component of a Duration value.

[Link] Returns a minute component of a Duration value.

[Link] Returns a second component of a Duration value.

[Link] Returns a record with parts of a Duration value.

[Link] Returns the total magnitude of days from a Duration value.

[Link] Returns the total magnitude of hours from a Duration value.

[Link] Returns the total magnitude of minutes from a Duration


value.

[Link] Returns the total magnitude of seconds from a duration value.

[Link] Returns a text value from a Duration value.


[Link]
11/5/2018 • 2 minutes to read

About
Returns the day component of a Duration value.

Syntax
[Link](duration as nullable duration) as nullable number

Arguments
ARGUMENT DESCRIPTION

duration The Duration to parse.


[Link]
11/5/2018 • 2 minutes to read

About
Returns a duration value from a value.

Syntax
[Link](value as any) as nullable duration

Arguments
ARGUMENT DESCRIPTION

value Value to convert.

Values of the following types can be converted to a duration value:

TYPE TO CONVERT DESCRIPTION

text Returns a duration value from a text value in a elapsed time


format of d.hⓂ s. For more details, see [Link].

number A duration equivalent to the number of whole and fractional


days expressed by value.

Any other type An error is returned

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 The text to convert.

Duration settings
FORMAT

[-]hh:mm[:ss]

[-][Link]:mm[:ss]

Note: The values within brackets [] are optional.


Format parts
PART DESCRIPTION

[-] 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

duration The Duration to parse.


[Link]
11/5/2018 • 2 minutes to read

About
Returns a minute component of a Duration value.

Syntax
[Link](duration as nullable duration) as nullable number

Arguments
ARGUMENT DESCRIPTION

duration The Duration to parse.


[Link]
11/5/2018 • 2 minutes to read

About
Returns a second component of a Duration value.

Syntax
[Link](duration as nullable duration) as nullable number

Arguments
ARGUMENT DESCRIPTION

duration The Duration to parse.

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

duration The Duration to parse.

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

duration The Duration to parse.


[Link]
11/5/2018 • 2 minutes to read

About
Returns the total magnitude of hours from a Duration value.

Syntax
[Link](duration as nullable duration) as nullable number

Arguments
ARGUMENT DESCRIPTION

duration The Duration to parse.


[Link]
11/5/2018 • 2 minutes to read

About
Returns the total magnitude of minutes from a Duration value.

Syntax
[Link](duration as nullable duration) as nullable number

Arguments
ARGUMENT DESCRIPTION

duration The Duration to parse.


[Link]
11/5/2018 • 2 minutes to read

About
Returns the total magnitude of seconds from a duration value.

Syntax
[Link](duration as nullable duration) as nullable number

Arguments
ARGUMENT DESCRIPTION

duration The Duration to parse.

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.

[Link](#duration(2, 5, 55, 20))

"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

[Link] Returns an opaque identifier for the currently-running


evaluation.

[Link] Writes a trace message, if tracing is enabled, and returns


value.

[Link] 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.

[Link] Returns 1, the value for Critical trace level.

[Link] Returns 2, the value for Error trace level.

[Link] Returns 4, the value for Information trace level.

[Link] Returns 5, the value for Verbose trace level.

[Link] Returns 3, the value for Warning trace level.


[Link]
11/5/2018 • 2 minutes to read

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.

[Link]([Link], "TextValueFromNumber", () => [Link](123), true)

"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

reason The value to set the Reason as.

message The value to set the Message as.

detail The value to set the Detail as.

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

[Link] Evaluates a Text expression and returns the evaluated value.

[Link] Returns a constant text literal from a value.

[Link] Returns a text value that can be used as an identifier from a


text value.
[Link]
11/5/2018 • 2 minutes to read

About
Returns a constant text literal from a value.

Syntax
[Link](value as any) as text

Arguments
ARGUMENT DESCRIPTION

value Text literal value.

Examples
[Link](1) equals "1"

[Link](1 + 1) equals "2"

[Link](true) equals "true"

[Link]("abc") equals """abc"""

[Link]("#(tab)") equals """#(#)(tab)"""

[Link](#date(2011, 1, 1)) equals "#date(2011, 1, 1)"

[Link]((x) =&gt; x) equals Error: Functions not supported

[Link]({1, 2, 3}) equals Error: Lists not supported

[Link]([a = 1 + 1]) equals Error: Records not supported


[Link]
11/5/2018 • 2 minutes to read

About
Evaluates a Text expression and returns the evaluated value.

Syntax
[Link](expression as text, optional environment as [...]) as any

Arguments
ARGUMENT DESCRIPTION

expression The expression to evaluate.

optional environment The expression environment.

Examples
[Link]("1 + 1")

equals 2

[Link]("1 +")

equals Error

[Link](
"section Section1; shared X = 1;"
)

equals Error, only expressions are supported


[Link]
11/5/2018 • 2 minutes to read

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

name The text to identify.

Examples
[Link]("foo")

equals "foo"

[Link]("10 lbs")

equals "#""10 lbs"""

[Link]("try")

equals "#""try"""

[Link]("")

equals "#"""""

[Link](null)

equals Error

Example of combined use


[Link](
// "let x = 1 in x"
"let " &
[Link]("x") & " = " & [Link](1) &
" in " &
[Link]("x")
)

equals 1
Function values
11/5/2018 • 2 minutes to read

Function
FUNCTION DESCRIPTION

[Link] 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 .

[Link] Invokes the given function using the specified and returns the
result.

[Link] Returns the result of invoking function after duration delay


has passed.

[Link] Returns whether or not function is considered a data source.

[Link] Returns a scalar function of type scalarFunctionType that


invokes vectorFunction with a single row of arguments and
returns its single output.
[Link]
11/5/2018 • 2 minutes to read

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.

[Link](type function (a as number, b as number) as number, [Link])(2, 1)

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

function The function to invoke.

args The list of required Arguments.

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 binary value to a list of text values split at lines


breaks.

[Link] Converts a text value to a list of text values split at lines


breaks.

[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.

[Link] 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.
[Link]
11/5/2018 • 2 minutes to read

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

text The text to parse.

optional quoteStyle Style of quote.

optional includeLineSeparators If includeLineSeparators is true, then the line break characters


are included in the text. If a delimiter is specified, then line
breaks may appear within quotes
[Link]
11/5/2018 • 2 minutes to read

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

lines The list of lines to convert.

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.

optional encoding The encoding option to apply.

optional includeByteOrderMark The byte order mark to include.

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

lines The list of lines to convert.

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"
}

[Link]("A,""B#(cr)C""#(cr)#(lf)1,2", null, ",")


{
"A,""B#(cr)C""",
"1,2"
}
List functions
11/5/2018 • 8 minutes to read

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

[Link] Returns the number of items in a list.

[Link] Returns the number of items in a list excluding null values

[Link] Returns whether a list is empty.

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] 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.

[Link] Searches a list of values, including record fields, for a text


value.

[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 whether a list is distinct.


FUNCTION DESCRIPTION

[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] Returns true if all items in a list meet a condition.

[Link] Returns true if any item in a list meets a condition.

[Link] Returns a list of positions for an input list.

[Link] Returns a count items starting at an offset.

[Link] Selects the items that match a condition.

[Link] Returns the single item of the list or throws an


[Link] if the list has more than one item.

[Link] Returns a single item from a list.

[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] Merges a list of lists into single list.

[Link] Returns a list that removes count items starting at offset. The
default count is 1.

[Link] 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.

[Link] Removes items from list1 that are present in list2, and returns
a new list.

[Link] 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.
FUNCTION DESCRIPTION

[Link] Returns a list that repeats the contents of an input list count
times.

[Link] Returns a list that replaces count values in a list with a


replaceWith list starting at an index.

[Link] Removes all occurrences of the given values in the list.

[Link] Removes null values from a list.

[Link] 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.

[Link] Searches a list of values for the value and replaces each
occurrence with the replacement value.

[Link] Returns a list that reverses the items in a list.

[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] Returns true if all expressions in a list are true

[Link] Returns true if any expression in a list in true

[Link] Returns true if a value is found in a list.

[Link] Returns true if all items in values are found in a list.

[Link] Returns true if any item in values is found in a list.

[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 the items in list 1 that do not appear in list 2.


Duplicate values are supported.

[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.

[Link] Returns a list of lists combining items at the same position.

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 item in a list, or the optional default


value if the list is empty.

[Link] Returns the maximum values in the list. After the rows are
sorted, optional parameters may be specified to further filter
the result

[Link] Returns the median item from a list.

[Link] Returns the minimum item in a list, or the optional default


value if the list is empty.

[Link] Returns the minimum values in a list.

[Link] Returns a sorted list using comparison criterion.

Averages
These functions operate over homogeneous lists of Numbers, DateTimes, and Durations.
FUNCTION DESCRIPTION

[Link] Returns an average value from a list in the datatype of the


values in the list.

[Link] Returns an item that appears most commonly in a list.

[Link] Returns all items that appear with the same maximum
frequency.

[Link] 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.

Addition
These functions work over homogeneous lists of Numbers or Durations.

FUNCTION DESCRIPTION

[Link] Returns the sum from a list.

Numerics
These functions only work over numbers.

FUNCTION DESCRIPTION

[Link] Returns the covariance from two lists as a number.

[Link] Returns the product from a list of numbers.

Generators
These functions generate list of values.

FUNCTION DESCRIPTION

[Link] Returns a list of datetime values from size count, starting at


start and adds an increment to every value.

[Link] Returns a list of date values from size count, starting at start
and adds an increment to every value.

[Link] Returns a list of of datetimezone values from size count,


starting at start and adds an increment to every value.

[Link] Returns a list of durations values from size count, starting at


start and adds an increment to every value.

[Link] Generates a list from a value function, a condition function, a


next function, and an optional transformation function on the
values.

[Link] Returns a list of numbers from size count starting at initial,


and adds an increment. The increment defaults to 1.
FUNCTION DESCRIPTION

[Link] Returns a list of count random numbers, with an optional seed


parameter.

[Link] Returns a list of time values of size count, starting at start.

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

list The List to check.

seed The initial value seed.

accumulator The value accumulator function.

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

list The List to check.

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

list The List to modify.

count Alternate count.

optional repeatInterval Alternate repeat interval.

optional offset Alternation offset.

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

list The List to check.

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

list The List to check.

Remarks
If the list is empty, an [Link] is thrown.

Examples
[Link]({1, 2, 3}) equals 2

[Link]({#duration(0, 0, 30, 0), #duration(0, 0, 40, 0)}) equals #duration(0, 0, 35, 0)

[Link]({#date(2011,1,1), #date(2011,1,2), #date(2011,1,3)}) equals #datetime(2011,1,2)

[Link]({}) equals null


[Link]
11/5/2018 • 2 minutes to read

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

list The List to buffer.

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

list The List of lists to merge.

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

list The List to check.

value The value to check for.

optional equationCriteria An optional equation criteria value to control equality testing.

Examples
[Link]({1, 2, 3}, 2) equals true

[Link]({1, 2, 3}, 4) equals false


[Link]
11/5/2018 • 2 minutes to read

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

list The List to check.

values The list of values to check for.

optional equationCriteria An optional equation criteria value to control equality


comparisons. For more information about equality
comparisons, see Parameter Values.

Examples
[Link]({1, 2, 3}, {2, 3}) equals true

[Link]({1, 2, 3}, {2, 4}) equals false


[Link]
11/5/2018 • 2 minutes to read

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

list The List to check.

values The list of values to check for.

optional equationCriteria An optional equation criteria value to control equality


comparisons. For more information about equality
comparisons, see Parameter Values.

Examples
[Link]({1, 2, 3}, {2, 4}) equals true

[Link]({1, 2, 3}, {4, 5}) equals false


[Link]
11/5/2018 • 2 minutes to read

About
Returns the number of items in a list.

Syntax
[Link](list as list) as number

Arguments
ARGUMENT DESCRIPTION

list The List to check.

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

list1 The List to compare with.

list2 The List to compare against.


[Link]
11/5/2018 • 2 minutes to read

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)).

[Link](#date(2011, 12, 31), 5, #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)).

[Link](#datetime(2011, 12, 31, 23, 55, 0), 10, #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

start The DateTimeZone to start at.

count The number of values to return.

increment The increment to add.

Example
[Link](#datetimezone(2011, 12, 31, 23, 55, 0, -8, 0), 10, #duration(0, 0, 1, 0))

equals

#datetimezone(2011, 12, 31, 23, 55, 0, -8, 0),

#datetimezone(2011, 12, 31, 23, 56, 0, -8, 0),

#datetimezone(2011, 12, 31, 23, 57, 0, -8, 0),

#datetimezone(2011, 12, 31, 23, 58, 0, -8, 0),

#datetimezone(2011, 12, 31, 23, 59, 0, -8, 0),

#datetimezone(2012, 1, 1, 0, 0, 0, -8, 0),

#datetimezone(2012, 1, 1, 0, 1, 0, -8, 0),

#datetimezone(2012, 1, 1, 0, 2, 0, -8, 0),

#datetimezone(2012, 1, 1, 0, 3, 0, -8, 0),

#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

list1 The List to check with.

list2 The List to check against.

optional equationCriteria An optional equation criteria value to control equality


comparisons. For more information about equality
comparisons, see Parameter Values.

Examples
[Link]({1..10}, {2..3,5..7}) equals {1,4,8,9,10}

[Link]({1}, {1,2,3}) equals {}

[Link]({1, 1, 1}, {1}) equals {1, 1}


[Link]
11/5/2018 • 2 minutes to read

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

list The List to check.

optional equationCriteria An equality group equation.

criteria Filter criteria.

Examples
[Link]({1, 2, 3, 2, 3}) equals {1, 2, 3}

[Link]({"a","b","A"}, each _) equals {"a", "b", "A"}

[Link]({"a","b","A"}, [Link]("en",true)) equals {"a", "b"}

[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.

[Link](#duration(0, 1, 0, 0), 5, #duration(0, 1, 0, 0))

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

list The List to search.

text The value to search for.

Example
[Link](

[field1 = "t1", field2 = "t2" ],

[field1 = "test1", field2 = "test2" ],

[field1 = "another test", field2 = 5 ],

[field1 = 1, field2 = 2 ]

}, "test")

equals

[field1 = "test1", field2 = "test2" ],

[field1 = "another test", field2 = 5 ]

[Link](

[ Field1 = "hello", Field2 = "world" ],

[ Field1 = "hello1", Field2 = "hello2" ],

[ Field1 = "another test", Field2 = 5 ],

[ Field1 = 1, Field2 = 2 ]

}, "hello")

equals

[Field1="hello", Field2 = "world"],

[Field1 = "hello1", Field2 = "hello2"]

}
[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

list The List to check.

optional defaultValue Default value if list is empty.

Examples
[Link]({1, 2, 3}) equals 1

[Link]({}) equals null


[Link]
11/5/2018 • 2 minutes to read

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

list The List to check.

countOrCondition The number or condition to qualify against.

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}

[Link]({3, 4, 5, -1 ,7, 8, 2}, each_ > 2) equals {3, 4, 5}


[Link]
11/5/2018 • 2 minutes to read

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.

[Link](()=>10, each _ > 0, each _ - 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

list The List to modify.

offset The index to insert at.

values The values to insert.

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

list The List of lists to check.

optional equationCriteria An optional equation criteria value to control equality


comparisons. For more information about equality
comparisons, see Parameter Values.

Remarks
If nothing is common in all lists, an empty list is returned.

Examples
[Link]({ {1..5}, {2..6}, {3..7} }) equals {3..5}

[Link]({ {1..5}, {4..8}, {7..11} }) equals {}

[Link]({ {1, 1, 1, 2}, {1, 1, 2, 2} }) equals {1, 1, 2}


[Link]
11/5/2018 • 2 minutes to read

About
Returns whether a list is distinct.

Syntax
[Link](list as list, optional equationCriteria as any) as logical

Arguments
ARGUMENT DESCRIPTION

list The List to check.

optional equationCriteria Equation criteria value used to control equality comparison.


For more information about equationCriteria, see Parameter
Values.

Examples
[Link]({1, 2, 3, 2, 3}) equals false

[Link]({"a","b","A"}, [Link]("en",false) equals true

[Link]({"a","b","A"}, [Link]("en",true) equals false


[Link]
11/5/2018 • 2 minutes to read

About
Returns whether a list is empty.

Syntax
[Link](list as list) as logical

Arguments
ARGUMENT DESCRIPTION

list The List to check.

Examples
[Link]({}) equals true

[Link]({1, 2, 3}) equals false


[Link]
11/5/2018 • 2 minutes to read

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

list The List to check.

optional defaultValue Default value if list is empty.

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

list The List to check.

optional countOrCondition Number items to return or a qualifying condition.

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

list The List to check.

condition The condition to qualify against.

Examples
[Link]({2, 4, 6}, each [Link](_,2) = 0) equals true

[Link]({2, 4, 5}, each [Link](_,2) = 0) equals false


[Link]
11/5/2018 • 2 minutes to read

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

list The List to check.

condition The condition to qualify against.

Examples
[Link]({2, 4, 6}, each [Link](_, 2) = 0) equals true

[Link]({1, 3, 5}, each [Link](_, 2) = 0) equals false


[Link]
11/5/2018 • 2 minutes to read

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

list The List to check.

optional default The default value to return.

optional comparisonCriteria An optional comparison criteria value to control equality


testing. 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}, 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

list The List to check.

countOrCondition Specifies the number of values to return or a filtering


condition.

optional comparisonCriteria Specifies how to compare values in the list.

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

list The List to check.

optional default The default value to return.

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

list The List to check.

countOrCondition Specifies the number of values to return or a filtering


condition.

optional comparisonCriteria Specifies how to compare values in the list.

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

list The List to check.

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

list The List to check.

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

list The List to check.

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

start The first number in the sequence.

count How many numbers to return.

optional increment The number to increment each number.

Examples
[Link](1, 5) equals {1, 2, 3, 4, 5}

[Link](1, 8, 3) equals {1, 4, 7, 10, 13, 16, 19, 22}


[Link]
11/5/2018 • 2 minutes to read

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

list The List to check.

value The value to check for.

optional occurrence An enum that controls the scope of operation.

optional equationCriteria An optional equation criteria value to control equality


comparisons. For more information about equality
comparisons, see Parameter Values.

Occurrence settings
SETTING DESCRIPTION

[Link] and [Link] Returns a single position.

[Link] Returns a list of positions with all occurrences.

Remarks
If the value is not found in the list, -1 is returned

Examples
[Link]({"A", "B", "C", "D"}, "C") equals 2

[Link]({"A", "B", "C", "B", "A"}, "A", [Link]) equals 0

[Link]({"A", "B", "C", "B", "A"}, "A", [Link]) equals 4


[Link]({"A", "B", "C", "B", "A"}, "A", [Link]) equals {0, 4}
[Link]
11/5/2018 • 2 minutes to read

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

list The List to check.

values The list of values to check for.

optional occurrence An enum that controls the scope of operation.

optional equationCriteria An optional equation criteria value to control equality


comparisons. For more information about equality
comparisons, see Parameter Values .

Occurrence settings
SETTING DESCRIPTION

[Link] and [Link] Returns a single position.

[Link] Returns a list of positions with all occurrences.

Remarks
If the value is not found in the list, -1 is returned

Examples
[Link]({"A", "B", "C", "D"}, {"B", "C"}) equals 1

[Link]({"A", "B", "C", "B", "A"}, {"A", "B"}, [Link]) equals 0

[Link]({"A", "B", "C", "B", "A"}, {"A", "B"}, [Link]) equals 4


[Link]({"A", "B", "C", "B", "A"}, {"A", "B"}, [Link]) equals {0, 1, 3, 4}
[Link]
11/5/2018 • 2 minutes to read

About
Returns a list of positions for an input list.

Syntax
[Link](list as list) as list

Arguments
ARGUMENT DESCRIPTION

list The List to check.

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

list The List to check.

Remarks
If the list is empty, an [Link] is thrown.

Examples
[Link]({2, 3, 4}) equals 24

[Link]({}) equals error


[Link]
11/5/2018 • 2 minutes to read

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

count How many random numbers to return.

optional seed Randomization seed value.

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

list The List to check.

offset The index to start at.

optional count Count of items to return.

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

list The List to remove items from.

optional countOrCondition Optional number of elements or condition to remove


elements, default is 1

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

list1 The List to modify.

list2 The list of items to remove.

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

list The List to remove items from.

optional countOrCondition Optional number of elements or condition to remove


elements, default is 1

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

list The List to modify.

values The list of values to remove.

optional equationCriteria An optional equation criteria value to control equality


comparison. For more information about the equationCriteria,
see Parameter Values.

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

list The List to modify.

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

list The List to remove items from.

offset The index to start at.

optional count The number of items to remove.

Examples
[Link]({"A", "B", "C", "D"}, 2) equals {"A", "B", "D"}

[Link]({"A", "B", "C", "D"}, 1, 2) equals {"A", "D"}


[Link]
11/5/2018 • 2 minutes to read

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

list The List to repeat.

count The number of times to repeat.

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

list The List to modify.

replacements The replacements to make.

optional equationCriteria An optional equation criteria value to control equality testing.

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

list The List to modify.

index The index to start at.

count The number of values to replace.

replaceWith The value to replace with.

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

list The List to modify.

oldValue The value to replace.

newValue The new value to replace with.

replacer A function provided as replacer determines the kind of values


that are being replaced. Built-in functions be be used such as
[Link] and [Link].

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

list The List to modify.

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

list The List to check.

condition The condition to match against.

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

list The List to check.

Examples
[Link]({1}) equals 1

[Link]({1, 2, 3}) equals error


[Link]
11/5/2018 • 2 minutes to read

About
Returns a single item from a list.

Syntax
[Link](list as list, optional default as any) as any

Arguments
ARGUMENT DESCRIPTION

List The List to check.

optional default Specifies a default value to be returned.

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]({1, 2, 3}) equals error

[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

list The List to check.

optional countOrCondition An optional parameter that skips multiple values.

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 {}

[Link]({3, 4, 5, -1, 7, 8, 2}, 5) equals {8, 2}

[Link]({3, 4, 5}, 5) equals {}

[Link]({3, 4, 5, -1, 7, 8, 2}, each _ > 0) equals {-1, 7, 8, 2}

[Link]({3, 4, 5}, each _ > 0) equals {}


[Link]({3, 4, 5, -1, 7, 8, 2}, null) equals {4, 5, -1, 7, 8, 2}
[Link]
11/5/2018 • 2 minutes to read

About
Returns a sorted list using comparison criterion.

Syntax
[Link](list as list, optional comparisonCriteria as any ) as list

Arguments
ARGUMENT DESCRIPTION

list The List to modify.

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}

[Link]({1, 2}, [Link]) equals {2, 1}

[Link]({1, 2}, [Link]) equals {1, 2}

[Link]({1, 2}, each 1/_) equals{2, 1}

[Link]({2, 1}, {each 1/_, [Link]}) equals {1, 2}


[Link]({1, 2}, (x, y) => [Link](1/x, 1/y)) equals {2, 1}
[Link]
11/5/2018 • 2 minutes to read

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

list The List to check. If List is a list of numbers, a number is


returned. An exception is thrown on an empty list or a list of
items that is not type number.

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

list The List to check.

Remarks
If the list is empty, an [Link] is thrown.

Examples
[Link]({1, 2, 3}) equals 6

[Link]({#duration(0, 0, 0, 15), #duration(0, 0, 0, 30)}) equals #duration(0, 0, 0, 45)

[Link]({}) equals error


[Link]
11/5/2018 • 2 minutes to read

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)).

[Link](#time(12, 0, 0), 4, #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

list The List to modify.

transform The transform to apply.

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

list The List to modify.

collectionTransform The collectionTransform function is applied to each element,


and the resultTransform function is invoked to construct the
resulting list. The collectionSelector has the signature (x as
any) => … where x is an element in list.

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

list The List of lists to check.

optional equationCriteria An optional equation criteria value to control equality


comparisons. For more information about equality
comparisons, see Parameter Values.

Examples
[Link]({ {1..5}, {2..6}, {3..7} }) equals {1..7}

[Link]({ {1..5}, {4..8}, {7..11} }) equals {1..11}

[Link]({ {1, 1, 1, 2}, {1, 1, 2, 2} }) equals {1, 1, 1, 2, 2}


[Link]
11/5/2018 • 2 minutes to read

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}.

[Link]({{1, 2}, {3, 4}})

[List]

[List]

Example 2
Zips the two simple lists of different lengths {1, 2} and {3}.

[Link]({{1, 2}, {3}})

[List]

[List]
Logical functions
11/5/2018 • 2 minutes to read

Logical
FUNCTION DESCRIPTION

[Link] Returns a logical value from a value.

[Link] Returns a logical value of true or false from a text value.

[Link] Returns a text value from a logical value.


[Link]
11/5/2018 • 2 minutes to read

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

text The text to evaluate.

Examples
[Link]("true") equals true

[Link]("a") equals error


[Link]
11/5/2018 • 2 minutes to read

About
Returns a text value from a logical value.

Syntax
[Link](logical as nullable logical) as nullable text

Arguments
ARGUMENT DESCRIPTION

logical The logical value to evaluate.

Example
[Link](true) equals "true"
Number functions
11/5/2018 • 3 minutes to read

Number
Constants
FUNCTION DESCRIPTION

Number.E Returns 2.7182818284590451, the value of e up to 16


decimal digits.

[Link] Returns the smallest possible number.

[Link] Represents 0/0.

[Link] Represents -1/0.

[Link] Returns 3.1415926535897931, the value for Pi up to 16


decimal digits.

[Link] Represents 1/0.

Information
FUNCTION DESCRIPTION

[Link] Returns true if a value is an even number.

[Link] Returns true if a value is [Link].

[Link] Returns true if a value is an odd number.

Conversion and formatting


FUNCTION DESCRIPTION

[Link] Returns a 8-bit integer number value from the given value.

[Link] Returns a currency value from the given value.

[Link] Returns a decimal number value from the given value.

[Link] Returns a Double 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.

[Link] Returns a number value from a value.

[Link] Returns a number value from a text value.

[Link] Returns a text value from a number value.

[Link] Returns a percentage value from the given value.

[Link] Returns a Single number value from the given value.

Rounding
FUNCTION DESCRIPTION

[Link] Returns a nullable number (n) if value is an integer.

[Link] Returns [Link](value) when value >= 0 and


[Link](value) when value < 0.

[Link] Returns the largest integer less than or equal to a number


value.

[Link] Returns [Link](x) when x >= 0 and


[Link](x) when x < 0.

[Link] Returns the larger integer greater than or equal to a number


value.

Operations
FUNCTION DESCRIPTION

[Link] Returns the absolute value of a number.

[Link] Returns the number of combinations of a given number of


items for the optional combination size.

[Link] Returns a number representing e raised to a power.

[Link] Returns the factorial of a number.

[Link] Divides two numbers and returns the whole part of the
resulting number.

[Link] Returns the natural logarithm of a number.

[Link] Returns the logarithm of a number to the base.


FUNCTION DESCRIPTION

Number.Log10 Returns the base-10 logarithm of a number.

[Link] Divides two numbers and returns the remainder of the


resulting number.

[Link] Returns the number of total permutatons of a given number


of items for the optional permutation size.

[Link] Returns a number raised by a power.

[Link] Returns 1 for positive numbers, -1 for negative numbers or 0


for zero.

[Link] Returns the square root of a number.

Random
FUNCTION DESCRIPTION

[Link] Returns a random fractional number between 0 and 1.

[Link] Returns a random number between the two given number


values.

Trigonometry
FUNCTION DESCRIPTION

[Link] Returns the arccosine of a number.

[Link] Returns the arcsine of a number.

[Link] Returns the arctangent of a number.

Number.Atan2 Returns the arctangent of the division of two numbers.

[Link] Returns the cosine of a number.

[Link] Returns the hyperbolic cosine of a number.

[Link] Returns the sine of a number.

[Link] Returns the hyperbolic sine of a number.

[Link] Returns the tangent of a number.

[Link] Returns the hyperbolic tangent of a number.

Bytes
FUNCTION DESCRIPTION

[Link] Returns the result of a bitwise AND operation on the provided


operands.

[Link] Returns the result of a bitwise NOT operation on the provided


operands.

[Link] Returns the result of a bitwise OR operation on the provided


operands.

[Link] Returns the result of a bitwise shift left operation on the


operands.

[Link] Returns the result of a bitwise shift right operation on the


operands.

[Link] Returns the result of a bitwise XOR operation on the provided


operands.

PARAMETER VALUES 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

value Value to convert.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

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

[Link]("4.5", null, [Link]) equals 5


[Link]
11/5/2018 • 2 minutes to read

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

value Value to convert.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

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

[Link]("1.23455", "en-Us", [Link]) equals 1.2345


[Link]
11/5/2018 • 2 minutes to read

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

value Value to convert.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

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

value Value to convert.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

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

value Value to convert.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

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

[Link]("4.5", null, [Link]) equals 5


[Link]
11/5/2018 • 2 minutes to read

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

value Value to convert.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

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

[Link]("4.5", null, [Link]) equals 5


[Link]
11/5/2018 • 2 minutes to read

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

value Value to convert.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

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

[Link]("4.5", null, [Link]) equals 5


[Link]
11/5/2018 • 2 minutes to read

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

value Value to convert.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

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

[Link]("4.5", null, [Link]) equals 5


[Link]
11/5/2018 • 2 minutes to read

About
Returns the absolute value of a number.

Syntax
[Link](number as nullable number) as nullable number

Arguments
ARGUMENT DESCRIPTION

number A number for which the absolute value is to be calculated.

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

angle The angle to calculate.


[Link]
11/5/2018 • 2 minutes to read

About
Returns the arcsine of a number.

Syntax
[Link](angle as nullable number) as nullable number

Arguments
ARGUMENT DESCRIPTION

angle The angle to calculate.


[Link]
11/5/2018 • 2 minutes to read

About
Returns the arctangent of a number.

Syntax
[Link](angle as nullable number) as nullable number

Arguments
ARGUMENT DESCRIPTION

angle The angle to calculate.


Number.Atan2
11/5/2018 • 2 minutes to read

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

setSize Number of combination items.

combinationSize Size of combinations.

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

angle The angle to calculate.

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

angle The angle to calculate.


Number.E
11/5/2018 • 2 minutes to read

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

number A number for which the exponential function is to be


calculated. If number is null, [Link] returns null.

Examples
[Link](0) equals 1

[Link](3) equals 20.085536923187668


[Link]
11/5/2018 • 2 minutes to read

About
Returns the factorial of a number.

Syntax
[Link](number as nullable number) as nullable number

Arguments
ARGUMENT DESCRIPTION

number The number to calculate.

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.

If value is of any other type, an error is returned.

Example 1
Get the number value of "4" .

[Link]("4")

Example 2
Get the number value of #datetime(2020, 3, 20, 6, 0, 0) .

[Link](#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

text Text value to convert to a number. If text does not represent a


valid number, [Link] is thrown.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

Examples
[Link]("1") equals 1

[Link]("a") equals error


[Link]
11/5/2018 • 2 minutes to read

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

number1 The Dividend.

number2 The Divisor.

optional precision Precision of the result.

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

value Value to evaluate.

Examples
[Link](3) equals false

[Link](4) equals true


[Link]
11/5/2018 • 2 minutes to read

About
Returns true if a value is [Link].

Syntax
[Link](value as number) as logical

Arguments
ARGUMENT DESCRIPTION

value Value to evaluate.

Examples
[Link](1) equals false

[Link](0/0) equals true


[Link]
11/5/2018 • 2 minutes to read

About
Returns true if a value is an odd number.

Syntax
[Link](value as number) as logical

Arguments
ARGUMENT DESCRIPTION

value Value to evaluate.

Examples
[Link](3) equals true

[Link](4) equals false


[Link]
11/5/2018 • 2 minutes to read

About
Returns the natural logarithm of a number.

Syntax
[Link](number as nullable number) as nullable number

Arguments
ARGUMENT DESCRIPTION

number The number to calculate.

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

number The number to calculate.

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

number Dividend or numerator.

divisor Divisor or denominator.

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

setSize Number of permutation items.

permutationSize Size of permutations.

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

number Number to raise.

power Power to raise by.

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

bottom The lowest number in the range.

top The highest number in the range.


[Link]
11/5/2018 • 2 minutes to read

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

value Integer value to round.

digits Fractional part is rounded by digits.

roundingMode Specifies rounding direction when there is a tie between the


possible numbers to round to. For Example, when the last
digit of the number being rounded is 5 such as. 1.5 or 2.345.

Settings
ROUNDING MODE DESCRIPTION

[Link] = 0 Adds 5e-n to the number being rounded, where n is the


number of fractional digits in the number.

[Link] = 1 Subtracts 5e-n from the number being rounded, where n is


the number of fractional digits in the number.

[Link] = 2 The same as [Link] when the number being


rounded is positive; otherwise, the same as

[Link].

[Link] = 3 The same as [Link] when the number being


rounded is positive; otherwise, the same as
[Link].

[Link] = 4 Applies [Link] or

[Link] to round the last digit to even.

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

[Link](-1.245, 2) equals -1.24

[Link](1.245, 2, [Link]) equals 1.25

[Link](1.245, 2, [Link]) equals 1.24

[Link](1.245, 2, [Link]) equals 1.25

[Link](1.245, 2, [Link]) equals 1.24

[Link](1.245, 2, [Link]) equals 1.24

[Link](-1.245, 2, [Link]) equals -1.24


[Link]
11/5/2018 • 2 minutes to read

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

value Value to round away from zero.

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

value Value to round down.

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

value Value to round toward zero.

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

value Value to round up.

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

number Number to evaluate.

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

angle The angle to calculate.

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

angle The angle to calculate.


[Link]
11/5/2018 • 2 minutes to read

About
Returns the square root of a number.

Syntax
[Link](number as nullable number) as nullable number

Arguments
ARGUMENT DESCRIPTION

number The number to calculate.

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

angle The angle to calculate.

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

angle The angle to calculate.


[Link]
11/5/2018 • 2 minutes to read

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

number Number value to convert to text.

optional format An optional text value used to format common numeric


values.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

Format Settings
SETTING NAME DESCRIPTION

D or d Decimal Formats the result as integer digits with


an optional negative sign. The precision
setting controls the number of digits in
the output.

E or e Exponential Exponential notation. The precision


setting controls the maximum number
(scientific) of decimal digits (default is 6).

F or f Fixed-point Integral and decimal digits with optional


negative sign.

G or g General Most compact form of either fixed-point


or scientific.

N or n Number Integral and decimal digits, group


separators, and a decimal separator
with optional negative sign.
SETTING NAME DESCRIPTION

P or p Percent Number multiplied by 100 and


displayed with a percent symbol.

R or r Round-trip Round-trip an identical number. The


precision setting is ignored.

X or x Hexadecimal A hexadecimal text value.

Any other single character Unknown Throws [Link] error

setting

Examples

[Link](10, "D", "") equals 10

[Link](10, "E", "") equals 1.000000E+001

[Link](10, "F", "") equals 10.00

[Link](10, "G", "") equals 10

[Link](10, "N", "") equals 10.00

[Link](.10, "P", "") equals 10.00%


[Link]
11/5/2018 • 2 minutes to read

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

value Value to convert.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

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 the number of fields in a record.

[Link] Returns true if the field name or field names are present in a
record.

Transformations
FUNCTION DESCRIPTION

[Link] Adds a field from a field name and value.

[Link] Combines the records in a list.

[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.

[Link] 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.

[Link] Transforms fields by applying transformOperations. For more


more information about values supported by
transformOperations, see Parameter Values.

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 a list of field names in order of the record's fields.

[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 list of field values in order of the record's fields.

[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 record from a table of records containing field


names and values.

[Link] Returns a list of values containing the field values of the input
record.

[Link] Returns a table of records containing field names and values


from an input record.

Parameter Values
The following type definitions are used to describe the parameter values that are referenced in Record functions
above.

MissingField option [Link] = 0;

[Link] = 1;

[Link] = 2;

Transform operations Transform operations can be specified by either of the


following values:

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.

A list of transformations can be provided by providing a list


value, and each item being the list value of 2 items as
described above.

For examples, see description of [Link]

Rename operations Rename operations for a record can be specified as either of:

A single rename operation, which is represented by a list of


two field names, old and new.

For examples, see description of [Link].


[Link]
11/5/2018 • 2 minutes to read

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

record The Record to modify.

fieldName The value to name the field.

value The value to add to the field.

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.")

equals [CustomerID=1, Name= "Bob", Phone="123-4567", Address="123 Main St."]

CustomerID 1

Phone 123-4567

Address 123 Main St.


[Link]
11/5/2018 • 2 minutes to read

About
Combines the records in a list.

Syntax
[Link](list as list) as record

Arguments
ARGUMENT DESCRIPTION

list The list of records to combine.

Remarks
If the list contains non-record values, an error is returned.

Example
[Link]({ [CustomerID =1], [Name ="Bob"] , [Phone = "123-4567"] })

equals [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

record The record to check.

field The field to obain the value for.

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

record The Record to check against.

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

record The Record to check.

Example
[Link]( [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0] )

equals {"OrderID","CustomerID", "Bait", "Price"}


[Link]
11/5/2018 • 2 minutes to read

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

record The Record to check.

field The field to return.

optional defaultValue The default value to return if the field does not exist.

Examples
[Link]([CustomerID =1, Name="Bob"], "Phone") equals null

[Link]([CustomerID =1, Name="Bob"], "Phone", "123-4567") equals "123-4567"


[Link]
11/5/2018 • 2 minutes to read

About
Returns a list of field values in order of the record's fields.

Syntax
[Link](record as record) as list

Arguments
ARGUMENT DESCRIPTION

record The record to check.

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

list The list of values in the record to check.

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]

{1, "Bob", "123-4567"},

type [CustomerID = number, Name = text, Phone = number]

equals [CustomerID = 1, Name = "Bob", Phone = "123-4567"]

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

list The Table to check.

Remarks
An [Link] is thrown if the fields are not unique.

Example
let

input = [Link]({{"OrderID",1} , {"CustomerID", 1}, {"Item", "Fishing rod"}, {"Price" , 100.00}},


{"Name", "Value"})

in

[Link](input)

equals [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0]

OrderID 1

CustomerID 1

Item Fishing rod

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

record The Record to check against.

fields A text value or a list of text values.

Examples:
[Link]([CustomerID = 1, Name = "Bob", Phone = "123-4567"],"CustomerID") equals true

[Link]([CustomerID = 1, Name = "Bob", Phone = "123-4567"],{"CustomerID", "Address"}) equals false


[Link]
11/5/2018 • 2 minutes to read

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

record The Record to modify.

fields A list of two items with the names of the fields that need to
exchange their order in the record.

optional missingField A MissingField enum value to handle missing fields. The


default value is [Link].

MissingField enum
[Link] = 0;

[Link] = 1;

[Link] = 2;

Examples
[Link]([CustomerID=1, Item = "Fishing rod", Price=18.00] , "Price")

equals [CustomerID=1, Item="Fishing rod"]

CustomerID 1

Item Fishing rod


[Link]
11/5/2018 • 2 minutes to read

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

record The record to modify.

renames The list of renames to apply.

optional missingField A MissingField enum value to handle missing fields. The


default value is [Link].

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"})

equals [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0]

OrderID 1
CustomerID 1

Item Fishing rod

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

record The Record to modify.

fieldOrder The list of field orders to change to.

optional missingField A MissingField enum value to handle missing fields. The


default value is [Link].

MissingField enum
[Link] = 0;

[Link] = 1;

[Link] = 2;

Examples
[Link]( [CustomerID= 1, OrderID = 1, Item = "Fishing rod", Price = 100.0], { "OrderID",
"CustomerID" })

equals [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0]

OrderID 1

CustomerID 1

Item Fishing rod

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].|

### MissingField enum

- [Link] = 0;

- [Link] = 1;

- [Link] = 2;

## Remarks

- The original order of the fields is maintained.

## Examples

```powerquery-m
[Link]([A=1, B=2], "B") equals [B=2]

[Link]([A=1, B=2, C=3], {"C", "B"}) equals [B=2, C=3]


[Link]
11/5/2018 • 2 minutes to read

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

record The Record to convert.

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

Item Fishing rod

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

record The Record to modify.

transformOperations The list of transformations to make.

optional missingField A MissingField enum value to handle missing fields. The


default value is [Link].

MissingField enum
[Link] = 0;

[Link] = 1;

[Link] = 2;

Examples
[Link]([OrderID = 1, CustomerID= 1, Item = "Fishing rod", Price = "100.0"], {"Price",
[Link]})

equals [OrderID =1, CustomerID =1, Item = "Fishing rod", Price=100 ]

OrderID 1

CustomerID 1

Item Fishing rod

Price 100
[Link](

[OrderID ="1", CustomerID= 1, Item = "Fishing rod", Price = "100.0"],

{{"OrderID", [Link]}, {"Price",[Link]}})

equals [OrderID =1, CustomerID =1, Item = "Fishing rod", Price=100 ]

OrderID 1

CustomerID 1

Item Fishing rod

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

[Link] This function be provided to [Link] or


[Link] to do replace of text values in list and table
values respectively.

[Link] This function be provided to [Link] or


[Link] to do replace values in list and table values
respectively.
[Link]
11/5/2018 • 2 minutes to read

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

text The text value to make the replacement in.

old The old value to replace.

new The new value to replace with.


[Link]
11/5/2018 • 2 minutes to read

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

value The value to make replacements in.

old The old value to replace.

new The new value to replace with.


Splitter functions
11/15/2018 • 2 minutes to read

Splitter
FUNCTION DESCRIPTION

[Link] Returns a function that does no splitting, returning its


argument as a single element list.

[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 by any supported delimiter.

[Link] Returns a function that will split text according to a delimiter.

[Link] Returns a function that splits text by each delimiter in turn.

[Link] Returns a function that splits text according to the specified


lengths.

[Link] Returns a function that splits text according to the specified


positions.

[Link] Returns a function that splits text according to the specified


ranges.

[Link] Returns a function that splits text into a list of text after the
specified length repeatedly.

[Link] Returns a function that splits text according to whitespace.

PARAMETER VALUES DESCRIPTION

[Link] Quote characters indicate the start of a quoted string. Nested


quotes are indicated by two quote characters.

[Link] Quote characters have no significance.


[Link]
11/5/2018 • 2 minutes to read

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

Delimiters The delimiter characters are used to identify at what points to


split the string. The delimiter character is not included in the
split values. A trailing delimiter character will yield an
additional empty text value. The split values contain all
characters between the delimiters. This function will always
produce at least one value.

optional quoteStyle The quoteStyle acts as described in [Link]. By default,


it is [Link].

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

delimiter The delimiter character is used to identify at what points to


split the string. The delimiter character is not included in the
split values. A trailing delimiter character will yield an
additional empty text value. The split values contain all
characters between the delimiters. This function will always
produce at least one value.

optional quoteStyle The quoteStyle acts as described in [Link]. By default,


it is [Link].

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

Delimiters The delimiter characters are used to identify at what points to


split the string. The delimiter character is not included in the
split values. A trailing delimiter character will yield an
additional empty text value. The split values contain all
characters between the delimiters. This function will always
produce at least one value.

optional quoteStyle The quoteStyle acts as described in [Link]. By default,


it is [Link].

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

lengths The lengths to split on.

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

positions The positions to split on.

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

ranges The ranges to split on.

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

optional quoteStyle The quoteStyle acts as described in [Link]. By default,


it is [Link].

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 the AST for the body of a function.

[Link] An AST node representing the item in an item expression.

[Link] Returns an AST that represents access to a column within a


row expression.

[Link] Returns the AST for the body of a function.

[Link] An AST node representing the row in a row expression.

[Link] Returns a table from a list containing nested lists with the
column names and values.

[Link] Converts a list into a table by applying the specified splitting


function to each item in the list.

[Link] Returns a table from a list of records.

[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] Returns a table with a column containing the provided value


or list of values.

[Link] Splits the specified table into a list of tables using the specified
page size.

[Link] Creates or extends a table with user-defined handlers for


query and action operations.

[Link] Creates a function that can be intercepted by a handler


defined on a view (via [Link] ).

Conversions
FUNCTION DESCRIPTION

[Link] Returns a list of nested lists each representing a column of


values in the input table.

[Link] Returns a table into a list by applying the specified combining


function to each row of values in a table.
FUNCTION DESCRIPTION

[Link] Returns a list of records from an input table.

[Link] Returns a nested list of row values from an input table.

Information
FUNCTION DESCRIPTION

[Link] Returns the number of columns in a table.

[Link] Returns true if the table does not contain any rows.

[Link] Returns a profile of the columns of a table.

[Link] Returns the number of rows in a table.

[Link] Returns a table containing a description of the columns (i.e.


the schema) of the specified table.

[Link] Returns the relationships among a set of tables.

Row operations
FUNCTION DESCRIPTION

[Link] Returns a table containing an alternating pattern of the rows


from a table.

[Link] Returns a table that is the result of merging a list of tables.


The tables must all have the same row type structure.

[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 row from a table.

[Link] Returns the first row(s) of a table, depending on the


countOrCondition parameter.

[Link] Returns the first column of the first row of the table or a
specified default value.

[Link] 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.

[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 the last row of a table.


FUNCTION DESCRIPTION

[Link] Returns the last row(s) from a table, depending on the


countOrCondition parameter.

[Link] Returns true if all of the rows in a table meet a condition.

[Link] Returns true if any of the rows in a table meet a condition.

[Link] 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.

[Link] Returns the specified number of rows from a table starting at


an offset.

[Link] 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.

[Link] 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.

[Link] Returns a table with the specified number of rows removed


from the table starting at an offset.

[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 where the rows beginning at an offset and


continuing for count are replaced with the provided rows.

[Link] Returns a table with the rows in reverse order.

[Link] Returns a table containing only the rows that match a


condition.

[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 single row from a table.

[Link] Returns a table that does not contain the first row or rows of
the table.

Column operations
FUNCTION DESCRIPTION

[Link] Returns the values from a column in a table.

[Link] Returns the names of columns from a table.

[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 true if a table has the specified column or columns.

[Link] 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.

[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] Returns a table without a specific column or columns.

[Link] Returns a table with specific columns in an order relative to


one another.

[Link] Returns a table with the columns renamed as specified.

[Link] Returns a table that contains only specific columns.

[Link] Transforms column names by using the given function.

[Link] Given a list of table columns, transforms those columns into


attribute-value pairs.

[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,

PARAMETER VALUES DESCRIPTION

[Link] Specifies the left table of a join.

[Link] Specifies the right table of a join.

Example data
The following tables are used by the examples in this section.
Customers table
Customers = [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"]

Orders table

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],

[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]

})

FUNCTION DESCRIPTION

[Link] Adds a column named newColumnName to a table.

[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] 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.

[Link] Add a key to table.

[Link] Aggregates tables nested in a specific column into multiple


columns containing aggregate values for those tables.

[Link] [Link] merges columns using a combiner


function to produce a new column. [Link] is
the inverse of [Link].

[Link] Given a column of lists in a table, create a copy of a row for


each value in its list.
FUNCTION DESCRIPTION

[Link] Expands a column of records into columns with each of the


values.

[Link] Expands a column of records or a column of tables into


multiple columns in the containing table.

[Link] Replaces null values in the specified column or columns of the


table with the most recent non-null value in the column.

[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] Returns a list of key column names from a table.

[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]

[Link] Replaces oldValue with newValue in specific columns of a table,


using the provided replacer function, such as [Link] or
[Link].

[Link] Returns a new set of columns from a single column applying a


splitter function to each value.

[Link] Transforms columns from a table using a function.

[Link] Transforms the column types from a table using a type.

[Link] Transforms the rows from a table using a transform function.

[Link] Returns a table with columns converted to rows and rows


converted to columns from the input table.

Membership
Parameters for membership checks
Occurrence specification

[Link] = 0

[Link] = 1

[Link] = 2

FUNCTION DESCRIPTION

[Link] Determines whether the a record appears as a row in the


table.

[Link] Determines whether all of the specified records appear as rows


in the table.

[Link] Determines whether any of the specified records appear as


rows in the table.

[Link] Removes duplicate rows from a table, ensuring that all


remaining rows are distinct.

[Link] Determines whether a table contains only distinct rows.

[Link] Determines the position or positions of a row within a table.

[Link] Determines the position or positions of any of the specified


rows within the table.

[Link] Removes all occurrences of rows from a table.

[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](

{[Name="Bill", Level=7, Salary=100000],

[Name="Barb", Level=8, Salary=150000],

[Name="Andrew", Level=6, Salary=85000],

[Name="Nikki", Level=5, Salary=75000],

[Name="Margo", Level=3, Salary=45000],

[Name="Jeff", Level=10, Salary=200000]},

type table [

Name = text,

Level = number,

Salary = number

])

FUNCTION DESCRIPTION

[Link] Returns the largest row or rows from a table using a


comparisonCriteria.

[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 row or rows from a table using a


comparisonCriteria.

[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.

[Link] Sorts the rows in a table using a comparisonCriteria or a


default ordering if one is not specified.

Other
FUNCTION DESCRIPTION

[Link] Buffers a table into memory, isolating it from external changes


during evaluation.

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

For more information, see [Link].


Missing column handling
This is used to indicate how the function should handle missing columns. This parameter is specified as a number,
which maps to the options below.

[Link] = 0;

[Link] = 1;

[Link] = 2;

This is used in column or transformation operations. For Examples, see [Link].


Sort Order
This is used to indicate how the results should be sorted. This parameter is specified as a number, which maps to
the options below.

[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

[Link](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"

[Link](each [CustomerName] = "ALFKI")


[Link]
11/5/2018 • 2 minutes to read

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

table The Table to modify.

newColumnName The name of the new column to add.

columnGenerator New column generator function.

optional columnType Optional column type for new column

Remarks
The values for the column are computed using the specified function from each row.

Example
[Link]([Link](

[OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0, Shipping = 10.00],

[OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0, Shipping = 15.00],

[OrderID = 3, CustomerID = 2, Item = "Fishing net", Price = 25.0, Shipping = 10.00]

), "TotalPrice", each [Price] + [Shipping])

[Link]([Link](

[OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0, Shipping = 10.00],

[OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0, Shipping = 15.00],

[OrderID = 3, CustomerID = 2, Item = "Fishing net", Price = 25.0, Shipping = 10.00]

), "TotalPrice", each [Price] + [Shipping])

ORDERID CUSTOMERID ITEM PRICE SHIPPING TOTALPRICE

1 1 Fishing rod 100 10 110

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

table The Table to modify.

newColumnName The name of the new column.

optional initialValue The initial column index. The default initial index is 0.

optional increment The column index increment. The default increment is 1.

Examples
[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"]

), "Index")

CUSTOMERID NAME PHONE 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](

[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"]

), "Index", 1, 2)

CUSTOMERID NAME PHONE INDEX

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

table1 The Table to modify.

key1 The table1 column to join.

table2 The Table to check against.

key2 The table2 column to join.

newColumnName The name of the new column.

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]({

[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"]

}),

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],

[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]

})

in

[Link](

Customers, {"CustomerID"},

Orders, {"CustomerID"},

"Orders"

),

#"Expand Orders" = [Link](Query, "Orders", {"OrderID", "CustomerID", "Item", "Price"},


{"[Link]", "[Link]", "[Link]", "[Link]"})

in

#"Expand Orders"

[Link] [Link]
CUSTOMERID NAME PHONE RID MERID [Link] [Link]

1 Bob 123-4567 1 1 Fishing rod 100

1 Bob 123-4567 2 1 1 lb. worms 5


[Link] [Link]
CUSTOMERID NAME PHONE RID MERID [Link] [Link]

2 Jim 987-6543 3 2 Fishing net 25

3 Paul 543-7890 4 3 Fish tazer 200

3 Paul 543-7890 5 3 Bandaids 2

1 Bob 123-4567 6 1 Tackle box 20

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

table The Table to modify.

columns The subset of column names that defines the key.

isPrimary Specifies whether the key is primary.

Example
let

table = [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"]

),

resultTable = [Link](table, {"CustomerID"}, true)

in

resultTable

CUSTOMERID NAME PHONE

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

table Table to aggregate.

column Column containing nexted table to aggragate.

aggregations Specify the columns containing the tables to aggregate, the


aggregation functions to apply to the tables to generate their
values, and the names of the aggregate columns to create.

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",

{{"a", [Link], "sum of t.a"},

{"b", [Link], "min of t.b"},

{"b", [Link], "max of t.b"},

{"a", [Link], "count of t.a"}})

SUMOFT.A MINOFT.B MAXOFT.B COUNTOFT.A B

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]({

[CustomerID = 1, Name = "Bob", Phone = "123-4567"],

[CustomerID = 2, Name = "Jim", Phone = "987-6543"] ,

[CustomerID = 3, Name = "Paul", Phone = "543-7890"]}), 1, 1, 1)

CUSTOMERID NAME PHONE

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

table The Table to buffer.

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

table The Table to check.

column The column to check.

Remarks
[Link] is similar to [Link] but requires a table as input.

Example
[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"]

), "Name")

equals {"Bob", "Jim", "Paul", "Ringo"}


[Link]
11/5/2018 • 2 minutes to read

About
Returns the number of columns in a table.

Syntax
[Link](table as table) as number

Arguments
ARGUMENT DESCRIPTION

table The Table to check.

Example
let

emptyTable = [Link]({}),

tableValue = [Link]({{1,"Bob", "123-4567"}, {2,"Jim", "987-6543"}}, {"ProductID", "ProductName",


"UnitPrice"})

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

table The Table to check.

Remarks
[Link] is similar to [Link] but requires a table as input.

Example
[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"]

))

equals { "CustomerID", "Name", "Phone"}


[Link]
11/5/2018 • 2 minutes to read

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

Table The input table.

listOfTypes The types to match columns types on.

Example
let

tableValue = [Link]({[a=1, b="hello"]}, type table[a=[Link], b=[Link]])

in

[Link](tableValue, {type number})

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.

[Link]({[Link]({[CustomerID = 1, Name = "Bob", Phone = "123-4567"]}),


[Link]({[CustomerID = 2, Name = "Jim", Phone = "987-6543"] }),[Link]({[CustomerID = 3,
Name = "Paul", Phone = "543-7890"]})})

CUSTOMERID NAME PHONE

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"]})})

NAME PHONE FAX CELL

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

table The Table to modify.

sourceColumns The list of columns to combine.

combiner The table combiner function.

column The column to modify.

Example
[Link]([Link](

[A.1 = "a", A.2 = "b", B = "c" ],

[A.1 = "b", A.2 = "c", B = "d"]},

{"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

table The Table to check.

row The row to check for.

optional equationCriteria An optional value that specifies how to control comparison


between the rows of the table.

Remarks
[Link] is similar to [Link] but requires a table as input.

Example
[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"]

),

[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

table The Table to check.

rows The List of rows to check for.

optional equationCriteria An optional value that specifies how to control comparison


between the rows of the table.

Remarks
[Link] is similar to [Link] but requires a table as input.

Example
[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=1, Name="Bill"],[CustomerID=2, Name="Fred"]},

"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

table The Table to check.

rows The List of rows to check for.

optional equationCriteria An optional value that specifies how to control comparison


between the rows of the table.

Remarks
[Link] is similar to [Link] but requires a table as input.

Example
[Link](

[Link]( {[A=1, B=2],[A=2, B=3],[A=3, B=4]}),

{[A=1, B=2],[A=2, B=4]},

{"A", "B"}) equals true


[Link]
11/5/2018 • 2 minutes to read

About
Demotes the header row down into the first row of a table.

Syntax
[Link](table as table) as table

Arguments
ARGUMENT DESCRIPTION

table The Table to modify.

Example
[Link]([Link](

[CustomerID=1, Name="Bob", Phone = "123-4567" ]

))

COLUMN1 COLUMN2 COLUMN3

CustomerID Name Phone

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

table The Table to modify.

optional equationCriteria An optional value that specifies how to control comparison


between the rows of the table

Examples
[Link](

[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")
ORDERID CUSTOMERID ITEM PRICE

1 1 Fishing rod 100

3 2 Fishing net 25

4 3 Fish tazer 200

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]}) .

[Link]([Link]({[a = 1, b = 2], [a = 3, b = 4]}), "a", "copied column")```

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

table The Table to modify.

column The column to expand.

Example
[Link](

[Link](

[Name= {"Bob", "Jim", "Paul"}, Discount = .15]

}), "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

table The Table to modify..

column The column to expand.

fieldNames List of field names.

optional newColumnNames Optional list of new column names.


[Link]
11/5/2018 • 2 minutes to read

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

table The Table to modify.

column The column to expand.

columnNames List of column names.

optional newColumnNames Optional list of new column names.


[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 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.

[Link]([Link]({[Place=1, Name="Bob"], [Place=null, Name="John"], [Place=2, Name="Brad"],


[Place=3, Name="Mark"], [Place=null, Name="Tom"], [Place=null, Name="Adam"]}), {"Place"})

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.

[Link]([Link]({[Column1 = 1, Column2 = 2], [Column1 = 3, Column2 = null], [Column1 = 5,


Column2 = 3]}), {"Column2"})

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

table The Table to modify.

text The text to compare against.

Example
[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"]

), "Bob")

CUSTOMERID NAME PHONE

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

table The Table to check.

optional default Optional default value.

Remarks
If the table is empty, [Link] returns null.

Example
[Link]([Link]({

[CustomerID = 1, Name = "Bob", Phone = "123-4567"],

[CustomerID = 2, Name = "Jim", Phone = "987-6543"],

[CustomerID = 3, Name = "Paul", Phone = "543-7890"]

}))

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

Table The Table to check.

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]({

[CustomerID = 1, Name = "Bob", Phone = "123-4567"],

[CustomerID = 2, Name = "Jim", Phone = "987-6543"] ,

[CustomerID = 3, Name = "Paul", Phone = "543-7890"]

}), 2)

CUSTOMERID NAME PHONE

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

lists The List of lists to convert.

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, "Bob", "123-4567"} , {2, "Jim", "987-6543"}, {3, "Paul", "543-7890"} })

COLUMN1 COLUMN2 COLUMN3

1 2 3

Bob Jim Paul

123-4567 987-6543 543-7890


[Link]
11/5/2018 • 2 minutes to read

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

list The List to convert.

optional splitter Splitter function.

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.

optional extraValues Extra values for each item in the list.

Example
[Link](

{[CustomerID =1, Name ="Bob", Phone = "123-4567"] ,

[CustomerID =2, Name ="Jim", Phone = "987-6543"]},

[Link], {"CustomerID", "Name", "Phone"})

CUSTOMERID NAME PHONE

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.

partitions The list of partitions to combine, specificed in {value, table}


pairs.

Optional partitionColumnType The type of the resulting column (default is any).

Example
[Link]("Year",

{{1994, [Link]("Month", {

{"Jan", [Link]("Day", {

{1, #table({"Column1"},{{"Column1 Value 1"}})},

{2, #table({"Column1"},{{"Column1 Value 2"}})}})},

{"Feb", [Link]("Day",

{{3, #table({"Column1"},{{"Column1 Value 3"}})},

{4, #table({"Column1"},{{"Column1 Value 4"}

})}})}})}})

equals

COLUMN1 DAY MONTH YEAR

Column1 Value 1 1 Jan 1994


COLUMN1 DAY MONTH YEAR

Column1 Value 2 2 Jan 1994

Column1 Value 3 3 Feb 1994

Column1 Value 4 4 Feb 1994


[Link]
11/5/2018 • 2 minutes to read

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.

[Link]({[CustomerID = 1, Name = "Bob", Phone = "123-4567"], [CustomerID = 2, Name = "Jim", Phone =


"987-6543"], [CustomerID = 3, Name = "Paul", Phone = "543-7890"]})

CUSTOMERID NAME PHONE

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.

[Link]([Link]({[CustomerID=1, Name="Bob"]}, type table[CustomerID=[Link],


Name=[Link]]), {type number})

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

rows The List to convert.

optional columns An optional list of column names, or a table type.

Example
[Link]({{1, "Bob", "123-4567"} , {2, "Jim", "987-6543"}}, {"CustomerID ", "Name", "Phone"})

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

Value The value to convert.

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

table The Table to modify.

key The key columns.

aggregatedColumns Specifies the names and function return types.

optional groupKind The type of group. Possible values are [Link]


(default) and [Link].

optional comparer An optional argument that determines equality between


group keys.

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]({

[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]

})

in

[Link](Orders, "CustomerID", {"Total", each [Link]([Price])})

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

table The Table to check.

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](

[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"]

),"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

table The Table to insert rows into.

offset The row number to insert at.

rows The List of rows to insert.

Remark
[Link] is similar to [Link] but requires a table as input.

Example
[Link]([Link]({

[CustomerID = 1, Name = "Bob", Phone = "123-4567"],

[CustomerID = 2, Name = "Jim", Phone = "987-6543"] }),

2,

{ [CustomerID = 3, Name = "Paul", Phone = "543-7890"] })

[Link]([Link]({

[CustomerID = 1, Name = "Bob", Phone = "123-4567"],

[CustomerID = 2, Name = "Jim", Phone = "987-6543"] }),

2,

{ [CustomerID = 3, Name = "Paul", Phone = "543-7890"] })


CUSTOMERID NAME PHONE

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

table The Table to check.

optional equationCriteria An optional value that specifies how to control comparison


between the rows of the table.

Example
[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"]

))

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

table The Table to check.

Example
let

emptyTable = [Link]({}),

tableValue = [Link]({{1,"Bob", "123-4567"}, {2,"Jim", "987-6543"}}, {"ProductID", "ProductName",


"UnitPrice"})

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")

CUSTOMERID NAME PHONE ORDERID ITEM PRICE

1 Bob 123-4567 1 Fishing rod 100

1 Bob 123-4567 2 1 lb. worms 5


2 Jim 987-6543 3 Fishing net 25

3 Paul 543-7890 4 Fish tazer 200

3 Paul 543-7890 5 Bandaids 2

1 Bob 123-4567 6 Tackle box 20


[Link]
11/5/2018 • 2 minutes to read

About
Returns a list of key column names from a table.

Syntax
[Link](table as table) as list

Arguments
ARGUMENT DESCRIPTION

table Table to return a list of key column names from.

Example
let

table = [Link](

[CustomerID = 1, Name = "Bob", Phone = "123-4567"],

[CustomerID = 2, Name = "Jim", Phone = "987-6543"]

}),

resultTable = [Link](table, {"CustomerID"}, true),

keys = [Link](resultTable),

#"Table from List" = [Link](keys, [Link](), null, null, [Link]),

#"Expand Column1" = [Link](#"Table from List", "Column1", {"Columns", "Primary"},


{"[Link]", "[Link]"}),

#"Expand [Link]" = [Link](#"Expand Column1", "[Link]")

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

table The Table to check.

optional default Optional default value.

Remark
If the table is empty, [Link] returns null.

Example
[Link]([Link]({

[CustomerID = 1, Name = "Bob", Phone = "123-4567"],

[CustomerID = 2, Name = "Jim", Phone = "987-6543"] ,

[CustomerID = 3, Name = "Paul", Phone = "543-7890"]

}))

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

table The Table to check.

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]({

[CustomerID = 1, Name = "Bob", Phone = "123-4567"],

[CustomerID = 2, Name = "Jim", Phone = "987-6543"],

[CustomerID = 3, Name = "Paul", Phone = "543-7890"]

}), 1)

CUSTOMERID NAME PHONE

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

table The Table to check.

condition The condition to match.

Remark
[Link] is similar to [Link] but requires a table argument.

Example
[Link]([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]

}), each [Link]([CustomerID], 3) = 0)

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

table The Table to check.

condition The condition to match.

Remark
[Link] is similar to [Link] but requires a table argument.

Example
[Link]([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]

}), each [Link]([CustomerID], 3) = 0)

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

table The Table to check.

comparisonCriteria largest row or rows comparison criteria.

optional default Default value.

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

table The Table to check.

comparisonCriteria Largest N rows comparison criteria.

countOrCondition After the rows are sorted, countOrCondition further filters


the result.

The countOrCondition arument has two possible settings:

ARGUMENT DESCRIPTION

as a number A list of items up to countOrCondition items in ascending


order is returned.

as a condition A list of items that initially meet the condition is returned.


Once an item fails the condition, no further items are
considered.

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]})

[Link](Employees, "Salary", each [Level] > 7)

equals [Link]( {[Name="Jeff", Level=10, Salary=200000]


[Name="Barb", Level=8, Salary=150000]})
[Link]
11/5/2018 • 2 minutes to read

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

table The Table to check.

comparisonCriteria Smallest row or rows comparison criteria.

optional default Default value.

Remarks
[Link] is similar to [Link] but requires a table as input.

Example
let

Employees = [Link](

{[Name="Bill", Level=7, Salary=100000],

[Name="Barb", Level=8, Salary=150000],

[Name="Andrew", Level=6, Salary=85000],

[Name="Nikki", Level=5, Salary=75000],

[Name="Margo", Level=3, Salary=45000],

[Name="Jeff", Level=10, Salary=200000]},

type table [

Name = text,

Level = number,

Salary = number

])

in

[Link](Employees, "Salary")

equals [Name = "Margo", Level = 3, Salary = 45000]

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

table The Table to check.

comparisonCriteria Smallest N rows comparison criteria.

countOrCondition After the rows are sorted, countOrCondition further filters the
result.

The countOrCondition argument has two possible settings:

SETTING DESCRIPTION

as a number A list of items up to countOrCondition items in ascending


order is returned.

as a condition A list of items that initially meet the condition is returned.


Once an item fails the condition, no further items are
considered.

Examples
[Link](Employees, "Salary", 3) equals

NAME LEVEL SALARY

Margo 3 45000

Nikki 5 75000

Andrew 6 85000
[Link](Employees, "Salary", each [Level] < 6) equals

NAME LEVEL SALARY

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

table The Table to modify.

column The column to apply hash to.

groups The number of groups to make.

hash The hash function to apply.

Example
[Link]([Link]({[A=1], [A=2], [A=3], [A=4], [A=5], [A=6]}),"A", 2, each _)

equals [Link]({[A=2], [A=4], [A=6]})


[Link]
11/5/2018 • 2 minutes to read

About
Returns information about how a table is partitioned.

Syntax
[Link](table as table) as table;

Arguments
ARGUMENT DESCRIPTION

table The input table.

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

table The Table to modify.

pivotValues The values to transform.

attributeColumn The column to make the attribute.

valueColumn The column to make the value.

optional aggregationFunction Function to aggregate values.

Examples
// Simple input with no key + attribute conflicts. In other words, (key,attribute) is unique.

[Link](

[Link]({

[ key = "key1", attribute = "attribute1", value = 1 ],

[ key = "key1", attribute = "attribute3", value = 3 ],

[ key = "key2", attribute = "attribute1", value = 2 ],

[ key = "key2", attribute = "attribute2", value = 4 ]

}), { "attribute1", "attribute2", "attribute3" }, "attribute", "value")

KEY ATTRIBUTE1 ATTRIBUTE2 ATTRIBUTE3

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]({

[ key = "key1", attribute = "attribute1" , value = 1 ],

[ key = "key1", attribute = "attribute3" , value = 3 ],

[ key = "key2" , attribute = "attribute1" , value = 2 ],

[ key = "key2", attribute = "attribute1", value = 8 ],

[ key = "key2", attribute = "attribute2", value = 4 ]

}), { "attribute1", "attribute2", "attribute3" }, "attribute", "value", [Link])

KEY ATTRIBUTE1 ATTRIBUTE2 ATTRIBUTE3

key1 1 null null

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

table The Table to check.

row The row to check for.

optional occurrence The number for the appropriate occurrence specification.

optional equationCriteria An optional value that specifies how to control comparison


between the rows of the table.

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

table The Table to check.

rows The List of rows to check for.

optional occurrence The number for the appropriate occurrence specification.

optional equationCriteria An optional value that specifies how to control comparison


between the rows of the table.

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

table The Table to modify.

prefix The prefix to add to every text value.

Example
[Link]([Link](

[CustomerID = 1, Name = "Bob", Phone = "123-4567"]

), "MyTable")

[Link] [Link] [Link]

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.

[Link]([Link]({[Column1 = "CustomerID", Column2 = "Name", Column3 = #date(1980,1,1)],


[Column1 = 1, Column2 = "Bob", Column3 = #date(1980,1,1)]}))

CUSTOMERID NAME COLUMN3

1 Bob 1/1/1980 12:00:00 AM

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

1 Bob 1/1/1980 12:00:00 AM


[Link]
11/5/2018 • 2 minutes to read

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

table Source table.

Offset Starting row offset.

optional count Optional number of rows to return. If count is not provided,


all rows are returned starting from offset.

Remark
[Link] is similar to [Link] but requires a table as input.

Example
[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"]

}), 1, 2)

CUSTOMERID NAME PHONE

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

table The Table to modify.

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.

optional missingField The default value of missingField is [Link]. For


more information, see Parameter Values.

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

table The Table to remove rows from.

optional countOrCondition Optional number of rows or condition to remove rows, default


is 1

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](

[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"]

), 2)
CUSTOMERID NAME PHONE

3 Paul 543-7890

4 Ringo 232-1550

[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)

CUSTOMERID NAME PHONE

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

table The Table to remove rows from.

optional countOrCondition Optional number of rows or condition to remove rows, default


is 1

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](

[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"]

), 2)
CUSTOMERID NAME PHONE

1 Bob 123-4567

2 Jim 987-6543

3 Paul 543-7890

[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)

CUSTOMERID NAME PHONE

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

table The Table to modify.

rows The List of rows to remove.

optional equationCriteria An optional value that specifies how to control comparison


between the rows of the table.

Remarks
[Link] is similar to [Link] but requires a table as input.

Example
[Link]([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 = 3]}, "CustomerID")

ORDERID CUSTOMERID ITEM PRICE

1 1 Fishing rod 100

2 1 1 lb. worms 5

3 2 Fishing net 25

6 1 Tackle box 20

7 5 Bait 3.25

8 5 Fishing Rod 100

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

table The Table to remove rows from.

offset The row to start removal at.

optional count Optional number of rows to remove. Default count is 1.

Remarks
[Link] is similar to [Link] but requires a table as input.

Example
[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"]

}), 2)

CUSTOMERID NAME PHONE

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

table The Table to modify.

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

table The Table to modify.

renames The list of values to rename to.

optional missingField The default value of missingField is [Link]. For


more information, see Parameter Values.

Remarks
[Link] is similar to [Link] applied to every row in a table.

Examples
[Link]([Link]({

[CustomerNum=1, Name="Bob", Phone = "123-4567"]}),

{"CustomerNum", "CustomerID"})

CUSTOMERID NAME PHONE

1 Bob 123-4567

[Link]([Link]({

[CustomerID=1, Name="Bob", Phone = "123-4567"]}), {"NewCol", "NewColumn"}, [Link])

CUSTOMERID NAME PHONE NEWCOLUMN

1 Bob 123-4567 null


[Link]
11/5/2018 • 2 minutes to read

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

table The Table to modify.

columnOrder The list of columns to arrange in the specific order.

optional missingField The default value of missingField is [Link]. For


more information, see Parameter Values.

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"})

CUSTOMERID NAME PHONE

1 Bob 123-4567

CustomerID Name Phone

1 Bob 123-4567
[Link]([Link]({

[CustomerID=1, Name = "Bob", Phone = "123-4567"]

}), {"Address1", "Address2"}, [Link])

[Link]([Link]({

[CustomerID=1, Name = "Bob", Phone = "123-4567"]

}), {"Address1", "Address2"}, [Link])

CUSTOMERID NAME PHONE

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

table The Table to check.

count The number of times to repeat the table.

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

table The Table to modify.

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

table Table to modify.

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

table The Table to modify.

replacements The List of replacement rows.

optional equationCriteria An optional value that specifies how to control comparison


between the rows of the table.

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 = 2, Column2 = 3],

[Column1 = 3, Column2 = 4],

[Column1 = 1, Column2 = 2]

}),{

{[Column1 = 1, Column2 = 2],

[Column1 = -1, Column2 = -2]},

{[Column1 = 2, Column2 = 3],

[Column1 = -2, Column2 = -3]} })

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

table The Table to modify.

offset The beginning row index.

count The number of rows to replace.

rows The List of replacement rows.

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

table The Table to modify.

oldValue The old value to modify.

newValue The new value to replace with.

replacer The replacer function to use, such as [Link] or


[Link].

columnsToSearch The list of columns to search through.

Examples
[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"]

),

"Bob",

"New Customer Name",

[Link], {"Name"})

CUSTOMERID NAME PHONE

1 New Customer Name 123-4567

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.

[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 NAME PHONE

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

table The Table to check.

Example
let

emptyTable = [Link]({}),

tableValue = [Link]({{1,"Bob", "123-4567"}, {2,"Jim", "987-6543"}}, {"ProductID", "ProductName",


"UnitPrice"})

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 :
>

Column Name Description

Name The name of the column.

Position The 0-based position of the column in table .

TypeName The name of the type of the column.

Kind The kind of the type of the column.

IsNullable Whether the column can contain null values.

NumericPrecisionBase The numeric base (e.g. base-2, base-10) of the


NumericPrecision and NumericScale fields.

NumericPrecision The precision of a numeric column in the base specified by


NumericPrecisionBase . This is the maximum number of
digits that can be represented by a value of this type
(including fractional digits).

NumericScale The scale of a numeric column in the base specified by


NumericPrecisionBase . This is the number of digits in the
fractional part of a value of this type. A value of 0 indicates a
fixed scale with no fractional digits. A value of null indicates
the scale is not known (either because it is floating or not
defined).

DateTimePrecision The maximum number of fractional digits supported in the


seconds portion of a date or time value.

MaxLength The maximum number of characters permitted in a text


column, or the maximum number of bytes permitted in a
binary column.
IsVariableLength Indicates whether this column can vary in length (up to
MaxLength ) or if it is of fixed size.

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).

Description The description of the column.


[Link]
11/5/2018 • 2 minutes to read

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

table The Table to modify.

columns The list of columns to copy.

optional missingField The default value of missingField is [Link]. For


more information, see Parameter Values.

Remarks
[Link] is similar to [Link] applied to every row in a table.

Examples
[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"]

), "Name")

NAME

Bob

Jim
NAME

Paul

Ringo

[Link]([Link]({

[CustomerID=1, Name="Bob", Phone = "123-4567"]}), {"CustomerID", "Name"})

CUSTOMERID NAME

1 Bob

[Link]([Link]({

[CustomerID=1, Name = "Bob", Phone = "123-4567" ]}), {"CustomerID", "NewColumn"}, [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

table The Table to check.

condition The condition to match.

Remarks
Table. SelectRows is similar to List. Select but requires a table as input.

Examples
[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)

CUSTOMERID NAME PHONE

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

table The Table to check.

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](

[CustomerID =..., 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 NAME PHONE

Error Bob 123-4567


[Link]
11/5/2018 • 2 minutes to read

About
Returns a single row from a table.

Syntax
[Link](table as table) as record

Arguments
ARGUMENT DESCRIPTION

table The Table to check.

Remarks
[Link] is similar to [Link] but requires a table as input.

Example
[Link]([Link](

[CustomerID = 1, Name = "Bob", Phone = "123-4567"]

))

equals [CustomerID = 1, Name = "Bob", Phone = "123-4567"]

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

table The Table to modify.

optional countOrCondition The number of rows to skip.

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](

[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"]

), 2)

CUSTOMERID NAME PHONE

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

table The Table to modify.

optional comparisonCriteria Sort comparison criteria.

Remarks
[Link] is similar to [Link] but requires a table as input.

Examples
[Link](

[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", [Link]}, "OrderID"})

ORDERID CUSTOMERID ITEM PRICE

1 1 Fishing rod 100

2 1 1 lb. worms 5

6 1 Tackle box 20

3 2 Fishing net 25

4 3 Fish tazer 200

5 3 Bandaids 2

7 5 Bait 3.25

8 5 Fishing Rod 100

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

table The Table to modify.

sourceColumn The column to modify.

splitter

columnNamesOrNumber List of column names that do not conflict with columns from
the target table.

optional default Default value.

extraValues Handles of extra values or overflow values.

Example
let

Customers = [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"]

})

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

table The Table to convert.

Example
let

Source = [Link]([Link](

[CustomerID = 1, Name = "Bob", Phone = "123-4567"],

[CustomerID = 2, Name = "Jim", Phone = "987-6543"]

}))

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

table The Table to convert.

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" },

{[Link](2), "Jim", "987-6543" },

{[Link](3), "Paul", "543-7890" }})

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

table The Table to convert.

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

table The Table to check.

Example
let

Source = [Link]([Link]({

[CustomerID =1, Name ="Bob", Phone = "123-4567"],

[CustomerID =2, Name ="Jim", Phone = "987-6543"],

[CustomerID =3, Name ="Paul", Phone = "543-7890"]

}))

in

Source

equals

{1, "Bob", "123-4567"},

{2, "Jim", "987-6543"},

{3, "Paul", "543-7890"}

}
[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

[Link]([Link]({[#"Col#(tab)umn" = 1]}), [Link])

COLUMN

Example 2
Transform column names to generate case-insensitive names of length 6.

[Link]([Link]({[ColumnNum = 1, cOlumnnum = 2, coLumnNUM = 3]}), [Link],


[MaxLength = 6, Comparer = [Link]])

|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

table The Table to modify.

transformOperations The list of transformOperations to run.

optional defaultTransformation The default table transformation.

optional missingField Missing field value.

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

table The Table to modify.

typeTransformations The List of typeTransofrmations to make.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

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

table The Table to modify.

transform The transform function to use.

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

table The Table to modify.

optional columns Columns to transform.

Example
[Link](

[Link](

[Link](

[Link]({

[Name = "Full Name", Value = "Fred"],

[Name = "Age", Value = 42],

[Name = "Country", Value = "UK"]

})

NAME FULLNAME AGE COUNTRY

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

table The Table to modify.

pivotColumns The columns to transform.

attributeColumn The column to make the attribute.

valueColumn The column to make the value.

Remarks
The transformation is patterned after the SQL UNPIVOT operator.

Examples
[Link]([Link]({

[ key = "key1", attribute1 = 1, attribute2 = null, attribute3 = 3 ]}),

{ "attribute1", "attribute2", "attribute3" }, "attribute", "value")

KEY ATTRIBUTE VALUE

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

table The Table to modify.

pivotColumns The columns to skip transformation.

attributeColumn The column to make the attribute.

valueColumn The column to make the value.

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")

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

[Link] Returns the number of characters in a text value.

Text Comparisons
FUNCTION DESCRIPTION

[Link] Returns a number to its character value.

[Link] Returns a character to its number value.

[Link] Returns a [Link] value from the given value .

[Link] Produces a JSON representation of a given value.

[Link] 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.

[Link] Decodes data from a binary value in to a text value using an


encoding.

[Link] Returns a Guid value as a text value.

[Link] Encodes a text value into binary value using an encoding.

[Link] Returns a list of characters from a text value.

[Link] 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.

Extraction
FUNCTION DESCRIPTION

[Link] Returns a character starting at a zero-based offset.


FUNCTION DESCRIPTION

[Link] Returns the substring up to a specific length.

[Link] Returns a number of characters from a text value starting at a


zero-based offset and for count number of characters.

[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.

[Link] 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.

[Link] Removes count characters at a zero-based offset from a text


value.

[Link] Replaces all occurrences of a substring with a new text value.

[Link] Replaces length characters in a text value starting at a zero-


based offset with the new text value.

[Link] Selects all occurrences of the given character or list of


characters from the input text value.

Membership
FUNCTION DESCRIPTION

[Link] Returns true if a text value substring was found within a text
value string; otherwise, false.

[Link] Returns a logical value indicating whether a text value


substring was found at the end of a string.

[Link] Returns the first occurrence of substring in a string and


returns its position starting at startOffset.

[Link] Returns the first occurrence of a text value in list and returns
its position starting at startOffset.

[Link] Returns a logical value indicating whether a text value


substring was found at the beginning of a string.

Transformations
FUNCTION DESCRIPTION

[Link] Returns the portion of text after the specified delimiter.

[Link] Returns the portion of text before the specified delimiter.

[Link] Returns the portion of text between the specified


startDelimiter and endDelimiter.

[Link] Returns the original text value with non-printable characters


removed.

[Link] Returns a text value that is the result of joining all text values
with each value separated by a separator.

[Link] Returns the lowercase of a text value.

[Link] Returns a text value padded at the end with pad to make it at
least length characters.

[Link] 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.

[Link] Returns a text value with first letters of all words converted to
uppercase.

[Link] Returns a text value composed of the input text value


repeated a number of times.

[Link] Reverses the provided text.

[Link] Returns a list containing parts of a text value that are


delimited by a separator text value.

[Link] Returns a list containing parts of a text value that are


delimited by any separator text values.

[Link] Removes any occurrences of characters in trimChars from text.

[Link] Removes any occurrences of the characters specified in


trimChars from the end of the original text value.

[Link] Removes any occurrences of the characters in trimChars from


the start of the original text value.

[Link] Returns the uppercase of a text value.

Parameters
PARAMETER VALUES DESCRIPTION

[Link] A list of positions of all occurrences of the found values is


returned.
PARAMETER VALUES DESCRIPTION

[Link] The position of the first occurrence of the found value is


returned.

[Link] The position of the last occurrence of the found value is


returned.

[Link] Indicates indexing should be done from the end of the input.

[Link] Indicates indexing should be done from the start of the input.

[Link] Use to choose the ASCII binary form.

[Link] Use to choose the UTF16 big endian binary form.

[Link] Use to choose the UTF16 little endian binary form.

TextEncoding.Utf8 Use to choose the UTF8 binary form.

TextEncoding.Utf16 Use to choose the UTF16 little endian binary form.

[Link] Use to choose the Windows binary form.


[Link]
11/5/2018 • 2 minutes to read

About
Returns a number to its character value.

Syntax
[Link](number as nullable number) as nullable text

Arguments
ARGUMENT DESCRIPTION

number The number to transform.


[Link]
11/5/2018 • 2 minutes to read

About
Returns a character to its number value.

Syntax
[Link](character as nullable text) as nullable number

Arguments
ARGUMENT DESCRIPTION

character The character to transform.


[Link]
11/5/2018 • 2 minutes to read

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.

Lists are represented as JSON arrays.

Records are represented as JSON objects.

Tables are represented as an array of objects.

Dates, times, datetimes, datetimezones and durations are represented as ISO-8601 text.

Binary values are represented as base-64 encoded text.

Types and functions produce an error.

Example 1
Convert a complex value to JSON.

[Link]([Link]([A={1, true, "3"}, B=#date(2012, 3, 25)]))

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.

[Link]("111-222-333", "-", {1, [Link]})

"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

value The value to parse.

index The index of the character to return.

Remarks
If the offset is greater than index, an [Link] is thrown.

Examples
[Link]("abcd", 0) equals "a"

[Link]("abcd", 5) equals error


[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 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.

[Link]("111-222-333", "-", {1, [Link]})

"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.

[Link]("111 (222) 333 (444)", "(", ")")

"222"

Example 2
Get the portion of "111 (222) 333 (444)" between the second open parenthesis and the first closed parenthesis
that follows it.

[Link]("111 (222) 333 (444)", "(", ")", 1, 0)

"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.

[Link]("111 (222) 333 (444)", "(", ")", {1, [Link]}, {1,


[Link]})

"222) 333 (444"


[Link]
11/5/2018 • 2 minutes to read

About
Returns the original text value with non-printable characters removed.

Syntax
[Link](string as nullable text) as nullable text

Arguments
ARGUMENT DESCRIPTION

string The string to parse.


[Link]
11/5/2018 • 2 minutes to read

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

text The list of text to combine.

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

string The text to parse.

substring The text to search for.

optional comparer The optional culture aware comparer function can be


provided.

Examples
[Link]("abc", "a") equals true

[Link]("abc", "d") equals false


[Link]
11/5/2018 • 2 minutes to read

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

string The string value to parse.

numChars The number of characters to return.

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

string The text value to parse.

substring The string to search for.

optional comparer An optional comparer can be provided to influence the result.

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.

[Link]("#{0}, #{1}, and #{2}.", { 17, 7, 22 })

Equals: "17, 7, and 22."

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

value Value to convert.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

Examples
[Link](1) equals "1"

[Link](#date(2013,5,1)) equals "05/01/2013"

[Link](#date(2013,5,1),"fr-FR") equals "01/05/2013"


[Link]
11/5/2018 • 2 minutes to read

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

binary The value to decode.

optional encoding Encoding option to apply.

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

text The text to insert into.

offset The index to insert at.

newText The new text to insert.

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

text The input text value

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

text The text to parse.

length The length to pad to.

pad The text to pad with.

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

text The text to parse.

length The length to pad to.

optional pad The text to pad with. If pad is not specified, whitespace is used
as pad.

Examples
[Link]("xyz", 5, "a") equals "aaxyz"

[Link]("xyz", 9, "pad") equals error


[Link]
11/5/2018 • 2 minutes to read

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!".

[Link]("Hello, World! Hello, World!", "World")

Example 2
Get the position of last occurrence of "World" in "Hello, World! Hello, World!".

[Link]("Hello, World! Hello, World!", "World", [Link])

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

string The string to search for.

list The list to search through.

optional occurrence An enum that controls the scope of operation.

Settings
SETTING DESCRIPTION

[Link] or [Link] A single position is returned.

[Link] A list of positions is returned for all occurrences.

Remarks
If the text values are not found in the list, -1 is returned.

Examples
[Link]("ABCD", {"B","C"}) equals 1

[Link]("ABCBA", {"A","B"}, [Link]) equals 0

[Link]("ABCBA", {"A","B"}, [Link]) equals 4

[Link]("ABCBA", {"A","B"}, [Link]) equals {0,1,3,4}


[Link]
11/13/2018 • 2 minutes to read

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.

[Link]("the QUICK BrOWn fOx jUmPs oVER tHe LAzy DoG")

"The Quick Brown Fox Jumps Over The Lazy Dog"


[Link]
11/5/2018 • 2 minutes to read

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

text The text to parse.

offset The index to start parsing at.

count The number of characters to return.

Example 1
Find the substring from the text "Hello World" starting at index 6.

[Link]("Hello World", 6) equals "World"

Example 2
Find the substring from the text "Hello World Hello" starting at index 6 spanning 5 characters.

[Link]("Hello World Hello", 6, 5) equals "World"


[Link]
11/5/2018 • 2 minutes to read

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

text The text to parse.

removeChars A character value or a list of character values to be removed.

Examples
[Link]("a,b,;c",",")equals "ab;c"

[Link]("a,b,;c",{",",";"}) equals "abc"


[Link]
11/5/2018 • 2 minutes to read

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

text The text to parse.

offset The index to start at.

count The number of characters to remove.

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"

[Link]("abcdef", 2, 2) equals "abef"


[Link]
11/5/2018 • 2 minutes to read

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

string The text to repeat.

repeatCount The number of times to repeat the text.

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

text The text to parse.

old The text to replace.

new The replacement text.

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

text The text to parse.

offset The beginning of the range.

length The length of the range.

newText The replacement text.

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

string The string to parse.

separator A delimiter value.

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

string The string to parse.

separator A delimiter value.


[Link]
11/5/2018 • 2 minutes to read

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

string The string value to parse.

count The number of characters to return.

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

string The text value to parse.

substring The string to search for.

optional comparer An optional comparer can be provided to influence the result.


[Link]
11/5/2018 • 2 minutes to read

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

text Value to encode.

optional encoding Encoding option to apply.

optional includeByteOrderMark Specify handling of byte order marks


[Link]
11/5/2018 • 2 minutes to read

About
Returns a list of characters from a text value.

Syntax
[Link](text as text) as list

Arguments
ARGUMENT DESCRIPTION

Text The text to parse through.

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

text The text to trim from.

optional trimChars A character value or a list of character values.

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.

[Link]("xyAyz", {"x","y"}) equals "Ayz"

Where: x and y are removed.

[Link]("xyAyz", {"x","y","z"}) equals "A"

Where:
1. The first x, y and z pattern is removed.
2. AND the second x, y and z pattern is removed

[Link]("xyAyz", "xy") equals error


[Link]
11/5/2018 • 2 minutes to read

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

text The text to trim from.

optional trimChars A character value or a list of character values. If trimChars is


not specified, then whitespace characters are trimmed.
[Link]
11/5/2018 • 2 minutes to read

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

text The text to trim from.

optional trimChars A character value or a list of character values.

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 a DateTime value from the end of the hour.

[Link] Returns a time value from a value.

[Link] Returns a Time value from a set of date formats.

[Link] Returns an hour value from a DateTime value.

[Link] Returns a minute value from a DateTime value.

[Link] Returns a second value from a DateTime value

[Link] Returns the first value of the hour from a time value.

[Link] Returns a record containing parts of a Date value.

[Link] Returns a text value from a Time value.


[Link]
11/5/2018 • 2 minutes to read

About
Returns a DateTime value from the end of the hour.

Syntax
[Link](dateTime as datetime) as nullable datetime

Arguments
ARGUMENT DESCRIPTION

dateTime The DateTime to check against.

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

value Value to convert.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

Type to convert

TYPE DESCRIPTION

text Returns a time value from text value. For more details, see
[Link].

datetime The time component of a value.

datetimezone The time component of the local date and time equivalent of
value.

number A time equivalent to the number of fractional days expressed


by value. If value is negative or greater or equal to 1, an error
is returned.

any other type An [Link] is thrown.

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)

[Link](#datetime(1899, 12, 30, 06, 45, 12)) equals #time(06,45,12)


[Link]
11/5/2018 • 2 minutes to read

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 The text value representing the time.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

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

[Link]("12:34:12.1254425") equals hh:mm:[Link]


[Link]
11/5/2018 • 2 minutes to read

About
Returns an hour value from a DateTime value.

Syntax
[Link](dateTime as datetime) as nullable number

Arguments
ARGUMENT DESCRIPTION

dateTime The DateTime to check against.

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

dateTime The DateTime to check against.

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.

[Link](#datetime(2011, 12, 31, 9, 15, 36.5))

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

dateTime The DateTime to check against.

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

time The time to parse.

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).

[Link](#time(11, 56, 2))

"11:56 AM"

Example 2
Get a textual representation of #time(11, 56, 2) with format option.

[Link](#time(11, 56, 2), "hh:mm")

"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] Add a key to a table type.

[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 the facets of a type.

[Link] Creates a function type from the given .

[Link] Returns a Record type from a fields record.

[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] Returns a number indicating the minimum number of


parameters required to invoke the a type of function.

[Link] Returns a type returned by a function type.

[Link] [Link]

[Link] Returns true if a type is a nullable type; otherwise, false.

[Link] Returns whether a record type is open.

[Link] Returns an item type from a list type.

[Link] Returns the non nullable type from a type.

[Link] Returns an opened version of a record type, or the same type,


if it is already open.

[Link] 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 ].

[Link] Replaces the facets of a type.

[Link] Replaces the keys in a table type.


FUNCTION DESCRIPTION

[Link] Returns the type of a column in a table.

[Link] Returns keys from a table type.

[Link] Returns a row type from a table type.

[Link] Returns a table containing a description of the columns (i.e.


the schema) of the specified table type.

[Link] Returns the union of a list of types.


[Link]
11/5/2018 • 2 minutes to read

About
Add a key to a table type.

Syntax
[Link] (table as type, columns as list, isPrimary as logical) as type

Arguments
ARGUMENT DESCRIPTION

table The table type to modify.

columns Columns that define the key.

isPrimary Logical stating whether or not it is the primary key.

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.

[Link]([ReturnType = type number, Parameters = [X = type number]], 1)

type function (X as number) as number


[Link]
11/5/2018 • 2 minutes to read

About
Returns a Record type from a fields record.

Syntax
[Link](fields as record, open as logical) as type

Arguments
ARGUMENT DESCRIPTION

fields The record to convert.

open A logical value indicating if the returned type should be an


open record.

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

functionType The function type to check.

Examples
[Link](type function () as any) equals []

[Link](type function (x as number, y as text) as any) equals [ x = number, y = text ]


[Link]
11/5/2018 • 2 minutes to read

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

[Link]( type function (x as number) as any) equals 1


[Link]
11/5/2018 • 2 minutes to read

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

[Link](type function () as [A = number]) equals type [A = number]


[Link]
11/5/2018 • 2 minutes to read

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

[Link](number) equals false


[Link]
11/5/2018 • 2 minutes to read

About
Returns whether a record type is open.

Syntax
[Link](#"type" as type) as logical

Examples
[Link](type [ A = number,…]) equals true

[Link](type [ A = number]) equals false


[Link]
11/5/2018 • 2 minutes to read

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

tableType The table type to modify.

keys The list of keys to replace.

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

Returns the union of the types in


types
.
Uri functions
11/5/2018 • 2 minutes to read

Uri
FUNCTION DESCRIPTION

[Link] Assemble a record into a URI query string.

[Link] Returns a Uri based on the combination of the base and


relative parts.

[Link] Encodes special characters in accordance with RFC 3986.

[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

baseUri The left part of the URI to combine.

relativeUri The right part of the URI to combine.


[Link]
11/5/2018 • 2 minutes to read

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

absoluteUri The absolute Uri.

Example 1
[Link]("[Link]
equals [
Scheme = "http",
Host = "[Link]",
Port = 80,
Path = "/",
Query = [],
Fragment = "",
UserName = "",
Password = ""
]

Example 2
Decode a percent-encoded string.

let UriUnescapeDataString = (data as text) as text => [Link]("[Link] & data)[Query][a] in


UriUnescapeDataString("%2Bmoney%24")

equals "+money$"
Value functions
11/5/2018 • 2 minutes to read

Values
FUNCTION DESCRIPTION

[Link] 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.

[Link] Returns whether two values are equal.

[Link] Evaluates a query against a target.

[Link] Returns a logical value or null based on two values .

[Link] Returns the type of the given value.

Arithmetic operations
FUNCTION DESCRIPTION

[Link] Returns the sum of the two values.

[Link] Returns the result of dividing the first value by the second.

[Link] Returns the product of the two values.

[Link] Returns the difference of the two values.

Parameter types
TYPE DESCRIPTION

[Link] [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.

[Link] [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 vlaue is compatible with type, and returns
false if the ascribed type of value is incompatible with type.
TYPE DESCRIPTION

[Link] 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.

IMPLEMENTATION DESCRIPTION

[Link] [Link]

[Link] Accesses a value by name in an embedded mashup.

[Link] [Link]

[Link] [Link]

[Link] [Link]

[Link] [Link]

Metadata
FUNCTION DESCRIPTION

[Link] Returns a record containing the input’s metadata.

[Link] Removes the metadata on the value and returns the original
value.

[Link] Replaces the metadata on a value with the new metadata


record provided and returns the original value with the new
metadata attached.
[Link]
11/5/2018 • 2 minutes to read

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

value The value as.

type Asserts that the value of a value argument is compatible with


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

value1 The left value to add.

value2 The right value to add.

optional precision Precision of comparison.


[Link]
11/5/2018 • 2 minutes to read

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

value1 The left value to compare.

value2 The right value to compare.

optional precision Precision of comparison.

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

value1 Dividend, or numerator.

value2 Divisor, or denominator.

optional precision Precision of comparison.


[Link]
11/5/2018 • 2 minutes to read

About
Returns whether two values are equal.

Syntax
[Link](left as any, right as any, equater as record) as logical

Arguments
ARGUMENT DESCRIPTION

left The left value to compare.

right The right value to compare.

equater Optional equater record.

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

value The value to transform.

optional culture A text value corresponding to the culture values supported on


your version of Windows, such as "en-US". If the culture is not
specified, the current user culture is used. For a list of culture
names, see National Language Support (NLS) API Reference.

Examples
[Link]("1") equals 1

[Link]("2012/5/16") equals #date(2012,5,16)

[Link]("null") equals null

[Link]("somevalue") equals "somevalue"


[Link]
11/5/2018 • 2 minutes to read

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

value The value is.

type Type of value is compatible with type


[Link]
11/5/2018 • 2 minutes to read

About
Returns a record containing the input’s metadata.

Syntax
[Link](value as any) as record

Arguments
ARGUMENT DESCRIPTION

value The value to retrieve metadata for.

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

value1 The left number to multiply.

value2 The right number to multiply.

optional precision Precision of comparison.

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

value1 The right value to compare.

value2 The left value to compare.

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 .

The output of the query is defined by target .


target provides the context for the operation described by query .
query describes the query to be executed against target . query is expressed in a manner specific to target (e.g.
a T-SQL statement).
The optional parameters value may contain either a list or record as appropriate to supply the parameter values
expected by query .
The optional options record may contain options that affect the evaluation behavior of query against target .
These options are specific to target .
[Link]
11/5/2018 • 2 minutes to read

About
Removes the metadata on the value and returns the original value.

Syntax
[Link](value as any) as any

Arguments
ARGUMENT DESCRIPTION

value The value to remove metadata from.

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

value The value to modify.

newMeta The new metadata to replace the old metadata with..

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

value Value to replace.

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

value1 The left value to subtract.

value2 The right value to subtract.

optional precision Precision of comparison.


[Link]
11/5/2018 • 2 minutes to read

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.

Create a query with Query Editor


To create an advanced query, you use the Query Editor. A mashup query is composed of variables, expressions,
and values encapsulated by a let expression. A variable can contain spaces by using the # identifier with the name
in quotes as in #"Variable name".
A let expression follows this structure:

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.

Simple Power Query M formula steps


Let's assume you created the following transform in the Query Editor to convert product names to proper case.
You have a table that looks like this:

ORDERID CUSTOMERID ITEM PRICE

1 1 fishing rod 100

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:

ORDERID CUSTOMERID ITEM PRICE

1 1 Fishing Rod 100

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:

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"

Let’s review each formula step.


1. Orders – Create a [Table](#_Table_value) with data for Orders.
2. #"Capitalized Each Word" – To capitalize each word, you use [Link]().
3. in #"Capitalized Each Word" – Output the table with each word capitalized.

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

In the example above, [Link]("hello world") is evaluated to "Hello World".


The next sections describe value types in the language.

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.

TYPE EXAMPLE VALUE

Binary 00 00 00 02 // number of points (2)

Date 5/23/2015

DateTime 5/23/2015 12:00:00 AM

DateTimeZone 5/23/2015 12:00:00 AM -08:00

Duration 15:35:00

Logical true and false

Null null

Number 0, 1, -1, 1.5, and 2.3e-5

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

Calling the MyFunction() returns the result:

let
Source = MyFunction(2, 4)
in
Source

This code produces the value of 3.

Structured data values


The M language supports the following structured data values:
List
Record
Table
Additional structured data examples

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.

The following are some List examples.

VALUE TYPE

{123, true, "A"} List containing a number, a logical, and text.

{1, 2, 3} List of numbers

{ List of List of numbers


{1, 2, 3},
{4, 5, 6}
}
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

To get the value of an Item, you use square brackets as Source[Item]:

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

Example 2 – Create a table with explicit column types

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:

ORDERID CUSTOMERID ITEM PRICE

1 1 Fishing rod 100.00

2 1 1 lb. worms 5.00

Example 3 – Get a row from a table by index position

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}

This expression returns the follow record:

OrderID 2

CustomerID 1

Item 1 lb. worms

Price 5

Additional structured data examples


Structured data can contain any M value. Here are some examples:
Example 1 - List with [Primitive](#_Primitive_value_1) values, [Function ](#_Function_value), and [Record](#_Record_value)

let
Source =
{
1,
"Bob",
[Link]([Link](), "yyyy-MM-dd"),
[OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0]
}
in
Source

Evaluating this expression can be visualized as:

Example 2 - Record containing Primitive values and nested Records

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

Evaluating this expression can be visualized as:


NOTE
Although many values can be written literally as an expression, a value is not an expression. For example, the expression 1
evaluates to the value 1; the expression 1+1 evaluates to the value 2. This distinction is subtle, but important. Expressions
are recipes for evaluation; values are the results of evaluation.

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

Example - Multi-line comment

/* 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
]

The above expression evaluates to the following record:

[
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]
]

The above expression evaluates to the following record:


[
Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
Total = 2100
]

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
]

Lazy and eager evaluation


List, Record, and Table member expressions, as well as let expressions (See Expressions, values, and let
expression), are evaluated using lazy evaluation: they are evaluated when needed. All other expressions are
evaluated using eager evaluation: they are evaluated immediately, when encountered during the evaluation
process. A good way to think about this is to remember that evaluating a list or record expression will return a list
or record value that knows how its list items or record fields need to computed, when requested (by lookup or
index operators).
Operators
11/5/2018 • 2 minutes to read

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

1+2 Numeric addition: 3

#time(12,23,0) + #duration(0,0,2,0) Time arithmetic: #time(12,25,0)

Combination operator (&)


FUNCTION EQUALS

"A" & "BC" Text concatenation: "ABC"

{1} & {2, 3} List concatenation: {1, 2, 3}

[a=1]&[b=2] Record merge: [ a = 1, b = 2 ]

List of M operators
Common operators which apply to null, logical, number, time, date, datetime, datetimezone, duration, text, binary)

OPERATOR DESCRIPTION

> Greater than

>= Greater than or equal

< Less than

<= Less than or equal

= Equal

<> Not equal

Logical operators (In addition to Common operators)

OPERATOR DESCRIPTION

or Conditional logical OR
OPERATOR DESCRIPTION

and Conditional logical AND

not Logical NOT

Number operators (In addition to Common operators)

OPERATOR DESCRIPTION

+ Sum

- Difference

* Product

/ Quotient

+x Unary plus

-x Negation

Text operators (In addition to Common operators)

OPERATOR DESCRIPTION

& Concatenation

List, record, table operators

OPERATOR DESCRIPTION

= Equal

<> Not equal

& Concatenation

Record lookup operator

OPERATOR DESCRIPTION

[] Access the fields of a record by name.

List indexer operator

OPERATOR DESCRIPTION

{} Access an item in a list by its zero-based numeric index.

Type compatibility and assertion operators


OPERATOR DESCRIPTION

is The expression x is y returns true if the type of x is compatible


with y, and returns false if the type of x is not compatible with
y.

as The expression x as y asserts that the value x is compatible


with y as per the is operator.

Date operators

OPERATOR LEFT OPERAND RIGHT OPERAND MEANING

x+y time duration Date offset by duration

x+y duration time Date offset by duration

x-y time duration Date offset by negated


duration

x-y time time Duration between dates

x&y date time Merged datetime

Datetime operators

OPERATOR LEFT OPERAND RIGHT OPERAND MEANING

x+y datetime duration Datetime offset by duration

x+y duration datetime Datetime offset by duration

x-y datetime duration Datetime offset by negated


duration

x-y datetime datetime Duration between datetimes

Datetimezone operators

OPERATOR LEFT OPERAND RIGHT OPERAND MEANING

x+y datetimezone duration Datetimezone offset by


duration

x+y duration datetimezone Datetimezone offset by


duration

x-y datetimezone duration Datetimezone offset by


negated duration

x-y datetimezone datetimezone Duration between


datetimezones

Duration operators
OPERATOR LEFT OPERAND RIGHT OPERAND MEANING

x+y datetime duration Datetime offset by duration

x+y duration datetime Datetime offset by duration

x+y duration duration Sum of durations

x-y datetime duration Datetime offset by negated


duration

x-y datetime datetime Duration between datetimes

x-y duration duration Difference of durations

x*y duration number N times a duration

x*y number duration N times a duration

x/y duration number Fraction of a duration

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

1 + "2" Error: adding number and text is not supported


Type conversion
11/5/2018 • 2 minutes to read

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](text as text) as number Returns a number value from a text value.

[Link](number as number) as text Returns a text value from a number value.

[Link](value as any) as number Returns a number value from a value.

[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.

[Link](logical as logical) as text Returns a text value from a logical value.

[Link](value as any) as logical Returns a logical value from a value.

Date, Time, DateTime, and DateTimeZone


TYPE CONVERSION DESCRIPTION

.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.

.From(value as any) Returns a date, time, datetime, or datetimezone value from a


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

11/5/2018 • 2 minutes to read

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":

"Mozart" meta [ Rating = 5,


Tags = {"Classical"} ]

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:

try error "negative unit count"

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:

try error "negative unit count" otherwise 42


// equals 42

Error example
let Sales =
[
ProductName = "Fishing rod",
Revenue = 2000,
Units = 1000,
UnitPrice = if Units = 0 then error "No Units"
else Revenue / Units
],

//Get UnitPrice from Sales record


textUnitPrice = try [Link](Sales[UnitPrice]),
Label = "Unit Price: " &
(if textUnitPrice[HasError] then textUnitPrice[Error][Message]
//Continue expression flow
else textUnitPrice[Value])
in
Label

The above example accesses the Sales[UnitPrice] field and formats the value producing the result:

"Unit Price: 2"

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"

Contents
 Power Query M Reference
 Power Query M functions
 Power Query M functions overview
 Understanding Power Query M fun
Cube.Properties
 Cube.PropertyKey
 Cube.ReplaceDimensions
 Cube.Transform
 DB2.Database
 Excel.CurrentWorkbook
 Excel.Workbo
Salesforce.Reports
 SapBusinessObjects.Universes
 SapBusinessWarehouse.Cubes
 SapHana.Database
 SapHanaDistribution.All
 Sap
Xml.Document
 Xml.Tables
 Cube.PropertyKey
 Binary functions
 Binary functions overview
 Binary.Buffer
 Binary.Combine
 Bina
BinaryFormat.SignedInteger32
 BinaryFormat.SignedInteger64
 BinaryFormat.Single
 BinaryFormat.Text
 BinaryFormat.Transform
Culture.Current
 Date functions
 Date functions overview
 Date.AddDays
 Date.AddMonths
 Date.AddQuarters
 Date.AddWeeks
 Dat
Date.IsInNextQuarter
 Date.IsInNextWeek
 Date.IsInNextYear
 Date.IsInPreviousDay
 Date.IsInPreviousMonth
 Date.IsInPreviousN
Day.Thursday
 Day.Tuesday
 Day.Wednesday
 #date
 DateTime functions
 DateTime functions overview
 DateTime.AddZone
 DateTime
DateTimeZone functions
 DateTimeZone functions overview
 DateTimeZone.FixedLocalNow
 DateTimeZone.FixedUtcNow
 DateTimeZone.
#duration
 Error handling
 Error handling overview
 Diagnostics.ActivityId
 Diagnostics.Trace
 Error.Record
 TraceLevel.Crit

You might also like