如果为空,则跳过记录

时间:2019-10-30 04:26:39

标签: powerbi powerquery m

我创建了一个函数,该函数清除带有空值的多余列的数据。此后始终应该有15列,但是偶尔会有更多或更少,并且在发生这种情况时,应该删除这些表。

我尝试跳过所有这些行并返回一个空表,但是当我尝试扩展这些表时,出现错误“无法将值false转换为Number类型”。

(tbl as table) =>
    let
        ColumnNames = Table.ColumnNames(tbl),
        RemoveNullColumns = Table.SelectColumns(tbl, List.Select(ColumnNames, each List.MatchesAny(Table.Column(tbl, _), each _ <> null))),
        CheckColumns = Table.Skip(RemoveNullColumns, Table.ColumnCount(RemoveNullColumns) <> 15)
    in
        CheckColumns

1 个答案:

答案 0 :(得分:0)

看看这是否适合您。删除任何包含null的列,仅在剩余15列时返回tbl

(tbl as table) =>
let ColumnNames = Table.ColumnNames(tbl),
ReplacedValue = Table.ReplaceValue(tbl,null,"imanull",Replacer.ReplaceValue,ColumnNames ),
UnpivotedColumns = Table.UnpivotOtherColumns(ReplacedValue, {}, "Attribute", "Value"),
FilteredRows = Table.SelectRows(UnpivotedColumns, each ([Value] = "imanull")),
NonNullColumns= List.Difference(ColumnNames,List.Distinct(FilteredRows[Attribute])),
Results = if List.Count (NonNullColumns) <> 15 then null else Table.SelectColumns(tbl,NonNullColumns)
in Results