Compartir vía


Table.TransformColumns

Sintaxis

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

Acerca de

Transforma la tabla especificada aplicando cada operación de columna en una lista.

  • table: tabla que se va a transformar.
  • transformOperations: las transformaciones que se van a realizar en la tabla. El formato de este parámetro es { nombre de columna, transformación } o { nombre de columna, transformación, nuevo tipo de columna }.
  • defaultTransformation: (Opcional) Transformación predeterminada aplicada a todas las columnas que no aparecen en transformOperations.
  • missingField: (Opcional) Especifica la acción esperada para los valores que faltan. Si no existe una columna enumerada en transformOperations , se produce una excepción (MissingField.Error) a menos que este parámetro especifique una alternativa. Use uno de los siguientes valores:
    • MissingField.UseNull: los campos que faltan se incluyen como null valores.
    • MissingField.Ignore: se omiten los campos que faltan.

Ejemplo 1

Convierta los valores de texto de la columna [A] en valores numéricos y los valores numéricos de la columna [B] en valores de texto.

Uso

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

Salida

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

Ejemplo 2

Convierta los valores numéricos de la columna que falta [X] en valores de texto, usando null por defecto en las columnas que no existen.

Uso

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

Salida

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

Ejemplo 3

Incremente los valores numéricos de la columna [B] y conviértalos en valores de texto y convierta todas las demás columnas en números.

Uso

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

Salida

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

Ejemplo 4

Mueva las tareas de mantenimiento programadas que se producen en un día festivo de EE. UU. al día siguiente o, si el día festivo se produce el viernes, al próximo lunes.

Uso

let
    MaintenanceSchedule = #table(type table [Task = text, Date = date],
    {
        {"HVAC Check", #date(2025, 7, 10)},         // Not a holiday
        {"Window Washing", #date(2025, 9, 1)},      // Labor Day
        {"Fire Drill", #date(2025, 9, 17)},         // Not a holiday
        {"Light Replacement", #date(2025, 11, 27)}  // Thanksgiving
    }),
    USHolidays = {
        #date(2025, 1, 1),   // New Year's Day
        #date(2025, 7, 4),   // Independence Day
        #date(2025, 9, 1),   // Labor Day
        #date(2025, 11, 27), // Thanksgiving
        #date(2025, 12, 25)  // Christmas
    },
    AdjustedSchedule = Table.TransformColumns(
        MaintenanceSchedule,
        {{"Date", each if List.Contains(USHolidays, _) then
            if Date.DayOfWeek(_, Day.Sunday) = 5 then
                Date.AddDays(_, 3)     // Friday to Monday
            else 
                Date.AddDays(_, 1)     // Other to next day
        else _, type date}}
    )
in
    AdjustedSchedule

Salida

#table(type table[Task = text, Date = date],
{
    {"HVAC Check", #date(2025, 7, 10)},
    {"Window Washing", #date(2025, 9, 2)},
    {"Fire Drill", #date(2025, 9, 17)},
    {"Light Replacement", #date(2025, 11, 28)}
})