Partager via


Table.TransformColumns

Syntaxe

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

À propos

Transforme la table spécifiée en appliquant chaque opération de colonne dans une liste.

  • table: table à transformer.
  • transformOperations: transformations à effectuer dans la table. Le format de ce paramètre est { nom de colonne, transformation } ou { nom de colonne, transformation, nouveau type de colonne }.
  • defaultTransformation: (Facultatif) Transformation par défaut appliquée à toutes les colonnes non répertoriées dans transformOperations.
  • missingField: (Facultatif) Spécifie l’action attendue pour les valeurs manquantes. Si une colonne répertoriée dans transformOperations n’existe pas, une exception est levée (MissingField.Error) sauf si ce paramètre spécifie une alternative. Utilisez l’une des valeurs suivantes :
    • MissingField.UseNull: tous les champs manquants sont inclus en tant que null valeurs.
    • MissingField.Ignore: tous les champs manquants sont ignorés.

Exemple 1

Convertissez les valeurs de texte de la colonne [A] en valeurs numériques et les valeurs numériques de la colonne [B] en valeurs de texte.

Utilisation

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

Exemple 2

Convertissez les valeurs numériques de la colonne manquante [X] en valeurs de texte, en définissant null par défaut pour les colonnes inexistantes.

Utilisation

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

Exemple 3

Incrémentez les valeurs numériques dans la colonne [B] et convertissez-les en valeurs de texte, puis convertissez toutes les autres colonnes en nombres.

Utilisation

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

Exemple 4

Déplacez les tâches de maintenance planifiées qui se produisent le jour suivant vers le lendemain ou, si le jour férié se produit le vendredi, jusqu’au lundi suivant.

Utilisation

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

Output

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