У меня есть сценарий использования, когда у меня есть несколько столбцов, содержащих записи, которые я хочу динамически расширять. Это означает, что имя столбцов для расширения не жестко закодировано.
Expanded = Table.ExpandRecordColumn(Source, "HardcodedColumnName", {"fieldname"}, {"fieldname"}),
Мой код M, приведенный ниже, может динамически расширять записи на основе таблицы преобразования. Но я не могу понять, как динамически расширять имя столбца. Для контекста, мой реальный набор данных имеет много столбцов для расширения, и количество столбцов меняется со временем. Я ищу масштабируемый метод расширения всех этих столбцов.
let
//Use-case: dynamically expand 'name for 'user' and 'timezone' for 'city',
// i e expand records w/o hardcoded column- or field names
Source = Table.FromRecords(
{
[key = 1, user = [id = 10, name = "Wayne Carter"], city = [id = 2, name = "Wuhan", timezone = "China Standard Time"]],
[key = 2, user = [id = 20, name = "Hugh Jass"], city = [id = 1, name = "Milan", timezone = "Central European Time"]],
[key = 3, user = [id = 30, name = "Ben Dover"], city = [id = 2, name = "Wuhan", timezone = "China Standard Time"]]
}),
//Table controls which attribute to expand
TransformationTable = Table.FromRecords(
{
[field = "user", attribute = "name"],
[field = "city", attribute = "timezone"]
}),
//Transformation table lookup
AttributeLookup = (parameter as text) =>
let
value = Table.SelectRows(TransformationTable, each ([field] = parameter))[attribute]{0}
in
value,
//These rows are hardcoded for columns 'user' and 'city' - how to make this dynamic?
ExpandedTable1 = Table.ExpandRecordColumn(Source, "user", {AttributeLookup("user")}, {AttributeLookup("user")}),
ExpandedTable2 = Table.ExpandRecordColumn(ExpandedTable1, "city", {AttributeLookup("city")}, {AttributeLookup("city")}),
in
ExpandedTable2