语法
Table.TransformColumns(
table as table,
transformOperations as list,
optional defaultTransformation as nullable function,
optional missingField as nullable number
) as table
简介
通过对列表中的每个列操作,转换指定的表。
-
table:要转换的表。 -
transformOperations:要对表进行转换。 此参数的格式为 { 列名称、 转换 } 或 { 列名称, 转换, 新列类型 }。 -
defaultTransformation:(可选) 应用于未列出的transformOperations所有列的默认转换。 -
missingField:(可选)指定缺失值的预期操作。 如果列transformOperations不存在,除非此参数指定了替代项,否则将引发异常(MissingField.Error)。 使用以下值之一:-
MissingField.UseNull:任何缺失的字段都会作为null值包含在内。 -
MissingField.Ignore:忽略任何缺失的字段。
-
示例 1
将列 [A] 中的文本值转换为数字值,将列 [B] 中的数字值转换为文本值。
使用情况
Table.TransformColumns(
Table.FromRecords({
[A = "1", B = 2],
[A = "5", B = 10]
}),
{
{"A", Number.FromText},
{"B", Text.From}
}
)
输出
Table.FromRecords({
[A = 1, B = "2"],
[A = 5, B = "10"]
})
示例 2
将缺失列 [X] 中的数字值转换为文本值,不存在的列默认为 null。
使用情况
Table.TransformColumns(
Table.FromRecords({
[A = "1", B = 2],
[A = "5", B = 10]
}),
{"X", Number.FromText},
null,
MissingField.UseNull
)
输出
Table.FromRecords({
[A = "1", B = 2, X = null],
[A = "5", B = 10, X = null]
})
示例 3
递增列 [B] 中的数字值,并将其转换为文本值,并将所有其他列转换为数字。
使用情况
Table.TransformColumns(
Table.FromRecords({
[A = "1", B = 2],
[A = "5", B = 10]
}),
{"B", each Text.From(_ + 1), type text},
Number.FromText
)
输出
Table.FromRecords({
[A = 1, B = "3"],
[A = 5, B = "11"]
})
示例 4
将美国假日发生的计划性维护任务移到第二天,或者(如果假日发生在星期五)移到下一个星期一。
使用情况
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
输出
#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)}
})