Table.TransformColumns

Syntax

Table.TransformColumns(table as table, transformOperations as list, optional defaultTransformation as nullable function, optional missingField as nullable number) as table

About

Transforms table by applying each column operation listed in transformOperations (where the format is { column name, transformation } or { column name, transformation, new column type }). If a defaultTransformation is specified, it will be applied to all columns not listed in transformOperations. If a column listed in transformOperations doesn't exist, an exception is thrown unless the optional parameter missingField specifies an alternative (for example, MissingField.UseNull or MissingField.Ignore).

Example 1

Convert the text values in column [A] to number values, and the number values in column [B] to text values.

Usage

Table.TransformColumns(
    Table.FromRecords({
        [A = "1", B = 2],
        [A = "5", B = 10]
    }),
    {
        {"A", Number.FromText},
        {"B", Text.From}
    }
)

Output

Table.FromRecords({
    [A = 1, B = "2"],
    [A = 5, B = "10"]
})

Example 2

Convert the number values in missing column [X] to text values, ignoring columns which don't exist.

Usage

Table.TransformColumns(
    Table.FromRecords({
        [A = "1", B = 2],
        [A = "5", B = 10]
    }),
    {"X", Number.FromText},
    null,
    MissingField.Ignore
)

Output

Table.FromRecords({
    [A = "1", B = 2],
    [A = "5", B = 10]
})

Example 3

Convert the number values in missing column [X] to text values, defaulting to null on columns which don't exist.

Usage

Table.TransformColumns(
    Table.FromRecords({
        [A = "1", B = 2],
        [A = "5", B = 10]
    }),
    {"X", Number.FromText},
    null,
    MissingField.UseNull
)

Output

Table.FromRecords({
    [A = "1", B = 2, X = null],
    [A = "5", B = 10, X = null]
})

Example 4

Increment the number values in column [B] and convert them to text values, and convert all other columns to numbers.

Usage

Table.TransformColumns(
    Table.FromRecords({
        [A = "1", B = 2],
        [A = "5", B = 10]
    }),
    {"B", each Text.From(_ + 1), type text},
    Number.FromText
)

Output

Table.FromRecords({
    [A = 1, B = "3"],
    [A = 5, B = "11"]
})