2

在 Excel Power Query 中,我试图向查询中添加一列(Table.AddColumn),其中每行的值检查整行以查看是否有任何字段具有“错误”记录,但我不知所措我怎么能做到这一点。我知道如何使用“try ... else”检查各个字段,但我不确定如何输入整行。基本上,我的目标是有一个字段来指示记录中的任何其他字段(即行)是否有错误,而无需将每一列硬键入一个检查每个列是否有错误的函数中。

任何帮助表示赞赏!

4

4 回答 4

0

我相信你可以通过加入 back to 来做一些棘手的事情Table.SelectRowsWithErrors

不幸的是,我现在没有时间确切地弄清楚那会是什么样子,但希望我可以在以后回来更新它,或者其他人会弄清楚并提供更好的答案。

于 2014-10-30T22:38:58.767 回答
0

添加到 Jeff 的方法中。如果您需要所有带有一些指示列的行,例如“errored”“Fine”

创建一个返回最后一步之前的表的函数,并在两个单独的查询中引用它。在一个查询中只保留错误并添加自定义列“Errored” 在第二个查询中删除错误并添加自定义列“Fine”

附加以上 2 个查询以获得最终结果。

如果您只需要错误记录,您可以修改原始查询并保留错误记录。

于 2016-01-27T00:52:10.097 回答
0

如果您严格希望有这样的列,您可以执行以下步骤:

let
    Source = Table.ExpandListColumn(Table.FromRecords({[Name= {"Bob", "Jim", "Paul"}, Discount = .15] }), "Name"),
    AddedErrClmn = Table.AddColumn(Source, "ErrClmn", each if [Name] = "Jim" then [Name]-[Discount] else [Discount]),
    AddedIndexClmn = Table.AddIndexColumn(AddedErrClmn, "Index", 1, 1),
    ErrorlessIndexes = Table.RemoveRowsWithErrors(AddedIndexClmn)[Index],
    AddedCheckClmn = Table.AddColumn(AddedIndexClmn, "Validation", each if List.Contains(ErrorlessIndexes, [Index]) then "ok" else "Error")
in
   AddedCheckClmn

因此,您添加索引、清理错误表并将生成的索引保存在一个列表ErrorlessIndexes中。然后用公式添加列:在该列表中搜索每一行的索引。如果找到,行是好的。如果不是,则它包含错误。

于 2016-07-07T18:02:03.803 回答
0

考虑这个

let
    Source = #table({"a","b","c"},{{1,2,3},{2,[3],4},{3,4,5}}),
    #"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1),
    Nested = Table.AddColumn(#"Added Index", "Has Error", each Table.RowCount(Table.SelectRowsWithErrors(Record.ToTable(#"Added Index"{[Index]})))>0)
in
    Nested

在此处输入图像描述

于 2019-08-30T17:39:28.873 回答