Teilen über


Table.TransformColumns

Syntax

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

About

Transformiert die angegebene Tabelle, indem jeder Spaltenvorgang in einer Liste angewendet wird.

  • table: Die zu transformierende Tabelle.
  • transformOperations: Die Transformationen, die an der Tabelle vorgenommen werden sollen. Das Format dieses Parameters ist entweder { Spaltenname, Transformation } oder { Spaltenname, Transformation, neuer Spaltentyp }.
  • defaultTransformation: (Optional) Die Standardtransformation, die auf alle Spalten angewendet wird, die nicht aufgeführt sind transformOperations.
  • missingField: (Optional) Gibt die erwartete Aktion für fehlende Werte an. Falls eine in transformOperations aufgeführte Spalte nicht existiert, wird eine Ausnahme ausgelöst (MissingField.Error), es sei denn, dieser Parameter gibt eine Alternative an. Verwenden Sie einen der folgenden Werte:
    • MissingField.UseNull: Fehlende Felder werden als null Werte eingeschlossen.
    • MissingField.Ignore: Fehlende Felder werden ignoriert.

Beispiel 1

Konvertieren Sie die Textwerte in Spalte [A] in Zahlenwerte und die Zahlenwerte in Spalte [B] in Textwerte.

Verwendung

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

Ausgabe

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

Beispiel 2

Konvertieren Sie die Zahlenwerte in der fehlenden Spalte [X] in Textwerte und arbeiten Sie standardmäßig mit null für Spalten, die nicht vorhanden sind.

Verwendung

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

Ausgabe

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

Beispiel 3

Erhöhen Sie die Zahlenwerte in Spalte [B] und konvertieren Sie sie in Textwerte, und konvertieren Sie alle anderen Spalten in Zahlen.

Verwendung

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

Ausgabe

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

Beispiel 4

Verschieben Sie geplante Wartungsaufgaben, die an einem US-Feiertag stattfinden, auf den nächsten Tag oder, wenn der Feiertag auf einen Freitag fällt, auf den nächsten Montag.

Verwendung

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

Ausgabe

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