Condividi tramite


Table.TransformColumns

Sintassi

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

Informazioni su

Trasforma la tabella specificata applicando ogni operazione di colonna in un elenco.

  • table: la tabella da trasformare.
  • transformOperations: trasformazioni da apportare alla tabella. Il formato di questo parametro è { nome colonna, trasformazione } o { nome colonna, trasformazione, nuovo tipo di colonna }.
  • defaultTransformation: (Facoltativo) Trasformazione predefinita applicata a tutte le colonne non elencate in transformOperations.
  • missingField: (Facoltativo) Specifica l'azione prevista per i valori mancanti. Se una colonna elencata in transformOperations non esiste, viene generata un'eccezione () aMissingField.Error meno che questo parametro non specifichi un'alternativa. Usare uno dei valori seguenti:
    • MissingField.UseNull: tutti i campi mancanti vengono inclusi come null valori.
    • MissingField.Ignore: tutti i campi mancanti vengono ignorati.

Esempio 1

Converte i valori di testo nella colonna [A] in valori numerici e i valori numerici nella colonna [B] in valori di testo.

Utilizzo

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

Esempio 2

Convertire i valori numerici nella colonna mancante [X] in valori di testo, impostando di default null nelle colonne inesistenti.

Utilizzo

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

Esempio 3

Incrementa i valori numerici nella colonna [B], li converte in valori di testo e converte tutte le altre colonne in numeri.

Utilizzo

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

Esempio 4

Spostare le attività di manutenzione pianificate che si verificano in una festività degli Stati Uniti al giorno successivo o, se la festività si verifica il venerdì, al lunedì successivo.

Utilizzo

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