Ошибки Excel Power Query

В Excel Power Query я пытаюсь добавить столбец (Table.AddColumn) в запрос, где значение для каждой строки проверяет всю строку, чтобы увидеть, есть ли в каких-либо полях запись «Ошибка», но я не понимаю, как я мог это сделать. Я знаю, как проверять отдельные поля с помощью команды «попробуйте ... в противном случае», но я не знаю, как ввести всю строку. В основном моя цель состоит в том, чтобы иметь поле, указывающее, есть ли в ЛЮБОМ другом поле в записи (то есть в строке) ошибку, без жесткого ввода каждого столбца в функцию, которая проверяет каждое на наличие ошибки.

Любая помощь приветствуется!


person LoganTheSnowEater    schedule 08.09.2014    source источник
comment
Подождите, вопрос? Ищете решение для запроса? Если да, пометьте свой вопрос более подходящим тегом. Кроме того, может сработать и расширение вашего вопроса.   -  person StorymasterQ    schedule 09.09.2014
comment
Я не могу добавить тег Power Query, но, поскольку это надстройка Excel, я подумал, что это наиболее подходящий тег.   -  person LoganTheSnowEater    schedule 09.09.2014
comment
Хороший вопрос! Я создал тег.   -  person Peter Albert    schedule 09.09.2014


Ответы (4)


Я уверен, что вы могли бы немного потрудиться, снова присоединившись к Table.SelectRowsWithErrors.

К сожалению, у меня нет времени точно выяснить, как это будет выглядеть прямо сейчас, но, надеюсь, я смогу вернуться и обновить это позже, или кто-то другой выяснит это и предоставит лучший ответ.

person Jeff    schedule 30.10.2014

Дополнение к подходу Джеффа. Если вам нужны все строки с каким-либо столбцом индикатора, например, "с ошибками", "Хорошо"

Создайте функцию, которая возвращает таблицу перед вашим последним шагом, и ссылайтесь на нее в двух отдельных запросах. В одном запросе сохраните только ошибки и добавьте настраиваемый столбец «С ошибками». Во втором запросе удалите ошибки и добавьте настраиваемый столбец «Fine»

Добавьте два запроса выше, чтобы получить окончательный результат.

Если вам просто нужны записи с ошибками, вы можете изменить исходный запрос и просто сохранить записи с ошибками.

person S M    schedule 27.01.2016

Если вы строго хотите иметь такую ​​колонку, вы можете сделать следующие шаги:

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. Затем добавьте столбец с формулой: найдите в этом списке индекс каждой строки. Если найдена, строка в порядке. В противном случае он содержит ошибки.

person Eugene    schedule 07.07.2016

Учти это

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

введите здесь описание изображения

person Rosetta    schedule 30.08.2019