У меня есть таблица как таковая в книге Excel. Эта таблица переносится в Power Query (ссылка на изображение: Таблица, отображаемая в окне запроса) .
tblTest:
+------+------+------+------+
| Col1 | Col2 | Col3 | Col4 |
+------+------+------+------+
| 1 | 2 | null | null |
| null | null | 1 | null |
| null | 3 | null | null |
| null | null | null | 4 |
| 2 | 5 | null | null |
+------+------+------+------+
В Power Query я создаю новую таблицу, удаляя нули в каждом столбце как таковом:
let
Source = Excel.CurrentWorkbook(){[Name="tblTest"]}[Content],
NewTable = Table.FromColumns({
List.RemoveNulls(Source[Col1]),
List.RemoveNulls(Source[Col2]),
List.RemoveNulls(Source[Col3]),
List.RemoveNulls(Source[Col4])
},Table.ColumnNames(Source))
in
NewTable
Мой вывод из Power Query (NewTable):
NewTable:
+------+------+------+------+
| Col1 | Col2 | Col3 | Col4 |
+------+------+------+------+
| 1 | 2 | 1 | 4 |
| 2 | 3 | null | null |
| null | 5 | null | null |
+------+------+------+------+
NewTable - это мой ожидаемый результат.
Моя проблема в том, что во входной таблице (tblTest) неизвестное количество столбцов. Мне нужен код языка M, который будет перебирать все столбцы во входной таблице, независимо от их количества, и удалять нули в каждом столбце, что в конечном итоге приведет к NewTable.
Насколько я понимаю, реальный цикл (например, цикл for) - это не то, что на самом деле слишком часто делается в M, поэтому я предполагаю, что есть какой-то метод сбора, который сделает все это за один раз. Я хоть убей не могу понять, что это может быть.
Я ожидал, что код будет выглядеть примерно так:
let
Source = Excel.CurrentWorkbook(){[Name="tblTest"]}[Content],
lstColumns = Table.ColumnNames(Source),
NewTable = Table.FromColumns(each List.RemoveNulls(each lstColumns),lstColumns)
in
NewTable
Приведенный выше код не работает и приводит к следующей ошибке:
Expression.Error: We cannot convert a value of type Function to type List.
Любые предложения будут ценны.
Null
. - person ashleedawg   schedule 19.03.2018