列集合上的 Power Query List.RemoveNulls

Power Query List.RemoveNulls on Column Collection

我在 Excel 工作簿中有一个 table。此 table 被带入 Power Query(link 图像:Table shown in Query Window)。

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 中,我通过删除每列中的空值来创建新的 table:

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 是我的预期输出。

我的问题是输入 table (tblTest) 中有未知数量的列。我需要一些 M 语言代码来遍历输入 table 中的所有列,无论有多少列,并删除每列中的空值,并最终生成 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.

如有任何建议,我们将不胜感激。

我想你想要的语法是这样的:

ToCols = Table.ToColumns(Source),
NewTable = Table.FromColumns(List.Transform(ToCols, each List.RemoveNulls(_)))