Delen via


Table.TransformColumns

Syntaxis

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

Over

Transformeert de opgegeven tabel door elke kolombewerking in een lijst toe te passen.

  • table: De tabel die moet worden getransformeerd.
  • transformOperations: De transformaties die op de tabel moeten worden toegepast. De indeling van deze parameter is { kolomnaam, transformatie } of { kolomnaam, transformatie, nieuw kolomtype }.
  • defaultTransformation: (Optioneel) De standaardtransformatie die wordt toegepast op alle kolommen die niet worden vermeld in transformOperations.
  • missingField: (Optioneel) Hiermee geeft u de verwachte actie voor ontbrekende waarden op. Als er geen kolom transformOperations in voorkomt, wordt er een uitzondering gegenereerd (MissingField.Error) tenzij deze parameter een alternatief opgeeft. Gebruik een van de volgende waarden:
    • MissingField.UseNull: ontbrekende velden worden opgenomen als null waarden.
    • MissingField.Ignore: ontbrekende velden worden genegeerd.

Voorbeeld 1

Converteer de tekstwaarden in kolom [A] naar getalwaarden en de getalwaarden in kolom [B] naar tekstwaarden.

Gebruik

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

uitvoer

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

Voorbeeld 2

Converteer de getalwaarden in ontbrekende kolom [X] naar tekstwaarden, die standaard worden ingesteld null op kolommen die niet bestaan.

Gebruik

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

uitvoer

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

Voorbeeld 3

Verhoog de getalwaarden in kolom [B] en converteer ze naar tekstwaarden en converteer alle andere kolommen naar getallen.

Gebruik

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

uitvoer

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

Voorbeeld 4

Verplaats geplande onderhoudstaken die plaatsvinden op een Amerikaanse vakantie naar de volgende dag of, als de vakantie plaatsvindt op een vrijdag, naar de volgende maandag.

Gebruik

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

uitvoer

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