列集合上的 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(_)))
我在 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(_)))