Еще от ChatGPT по метаданным столбца:
Вот полный код, который использует метаданные столбца для улучшения производительности и уменьшения повторных обращений к данным:
let
// Получаем таблицу
Source = ...,
// Получаем метаданные столбца ИД_Заголовок
ColumnMetadata = Value.Metadata(Table.Column(Source, "ИД_Заголовок")),
// Создаем функцию для объединения строк через разделитель
CombineRows = (prevValue, currentValue, nextValue) =>
if currentValue = "Заголовок" and prevValue = "Заголовок" and nextValue = "Заголовок" then
"Заголовок;Заголовок;Заголовок"
else if (currentValue = "ЗаголовокLast" and nextValue = null) then
"ЗаголовокLast"
else if currentValue = "Наряд" and prevValue = "Наряд" and nextValue = "Наряд" then
"Наряд;Наряд;Наряд"
else if (currentValue = "Наряд" and prevValue = "Наряд" and nextValue = "Заголовок") or
(currentValue = "Наряд" and prevValue = "Заголовок" and nextValue = "Заголовок") or
(currentValue = "Заголовок" and prevValue = "Наряд" and nextValue = "Наряд") then "Наряд;Заголовок;Заголовок"
else
Text.Combine({prevValue, currentValue, nextValue}, ";"),
// Добавляем новый столбец, используя метаданные столбца ИД_Заголовок
AddCombinedColumn = Table.AddColumn(Source, "Combined", each List.Accumulate(
Table.Range(ColumnMetadata, [Index] - 1, 3), "",
(state, current) => CombineRows(state, current{0}, current{1})
), type text, ColumnMetadata),
// Проверяем значение столбца Combined и удаляем строки, для которых checkValue = 0
RemoveRows = Table.SelectRows(AddCombinedColumn, each [Combined] <> null and [checkValue] = 1),
// Удаляем столбец с метаданными
RemoveMetadataColumn = Table.RemoveColumns(RemoveRows, "ИД_Заголовок.Metadata")
in
RemoveMetadataColumn
В этом коде мы получаем метаданные столбца ИД_Заголовок с помощью функции Value.Metadata(), затем используем эти метаданные для определения типа данных и других характеристик столбца при добавлении нового столбца Combined. Это позволяет избежать повторных обращений к данным при выполнении последующих преобразований. Далее мы используем этот столбец для проверки условий и удаления строк, для которых checkValue равен 0.