Я думаю, что одним из решений может быть «сохранить только первые 1 ежегодных расходов на проект».Говоря более абстрактно, «сохраняйте только первое значение в столбцах (столбцах) X
на столбцы (столбцы) Y
».
Ниже приведены некоторые фиктивные / фиктивные данные.Я хочу сохранить только выделенные значения в моем столбце annual spend
(поскольку выделенные значения являются первыми показателями "ежегодных расходов" на "проект").
Это код M
, который я использую для достижения этой цели.(Чтобы попробовать, open the Query Editor > Advanced Editor (near top right) > copy-paste code below to there > OK
).
let
OnlyKeepFirstValueInColumn = (someTable as table, columnsToNullify as list) as table =>
let
firstRow = Table.FirstN(someTable, 1), // This assumes first row contains a non-blank value.
remainingRows = Table.Skip(someTable, 1),
loopAndNullify = List.Accumulate(columnsToNullify, remainingRows, (tableState, currentHeader) => Table.TransformColumns(tableState, {{currentHeader, each null}})),
combined = firstRow & loopAndNullify
in combined,
FirstValueOfColumnsPerGroup = (someTable as table, groupByColumns as list, columnsToNullify as list) =>
let
group = Table.Group(someTable, groupByColumns, {{"toCombine", each OnlyKeepFirstValueInColumn(_, columnsToNullify), type table}}),
combined = Table.Combine(group[toCombine])
in combined,
aggregatedTable = Table.FromColumns({Text.ToList("aaabbbccccdddeeefg"), List.Repeat({1000}, Text.Length("aaabbbccccdddeeefg"))}, type table [project=text, annual spend=number]),
transformed = FirstValueOfColumnsPerGroup(aggregatedTable, {"project"}, {"annual spend"})
in
transformed
Важный бит, который нужно понять, это строка:
transformed = FirstValueOfColumnsPerGroup(aggregatedTable, {"project"}, {"annual spend"})
, в которой вы должны заменить:
aggregatedTable
с любой переменной / выражением, содержащим вашу таблицу {"project"}
с именем вашего столбца "project" (сохраняйте фигурные скобки {}
, хотя они позволяют вам переходить в несколько столбцов при необходимости) {"annual spend"}
с именами столбцов, в которых вы хотите сохранить только первое значение (сохраняйте фигурные скобки {}
)
Это то, что яполучить (что, я думаю, похоже на то, что вы хотите):
1 Для простоты мыСкажу «первый» здесь означает значение в первом ряду.Это могло означать «первое ненулевое значение» или «первое значение, удовлетворяющее определенному условию или логике», но ваши данные показывают, что более простое определение будет работать нормально.