Как удалить ошибки power query

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Еще…Меньше

Ошибки данных могут возникать в результате запроса или пошаговой оценки, например при изменении типа столбца на число, что приводит к ошибкам для некоторых ячеек. Удаляйте ошибки, так как вы хотите очистить данные, а их не нужно исправлять в своих целях. Но для выявления ошибок в строках лучше использовать ошибки (путем копирования запроса) в качестве средства аудита.

Подробное обсуждение того, как работать с ошибками, см. в этой docs.com.

Важно    При удалении ошибок из запроса ошибки во внешнем источнике данных не удаляются и не исправляться.

  1. Чтобы открыть запрос, найдите ранее загруженную из редактора Power Query, выберем ячейку в данных и выберите запрос> изменить. Дополнительные сведения см. в этойExcel.

  2. Определите столбцы, для которых нужно удалить ошибки. По умолчанию ошибки удаляются во всех столбцах, но вы можете выбрать столбец или столбец, для которых нужно удалить ошибки. Чтобы удалить ошибки из определенных столбцов, вы можете выбрать их, нажав CTRL и shift. Столбцы могут быть неуявными или неуявными.

  3. Выберите Главная > удалить строки > удалить ошибки.

  1. Чтобы открыть запрос, найдите ранее загруженную из редактора Power Query, выберем ячейку в данных и выберите запрос> изменить. Дополнительные сведения см. в этойExcel.

  2. Определите столбцы, для которых нужно удалить ошибки. По умолчанию ошибки должны храниться во всех столбцах, но вы можете выбрать столбец или столбец, для которых нужно удалить ошибки. Чтобы удалить ошибки из определенных столбцов, вы можете выбрать их, нажав CTRL и shift. Столбцы могут быть неуявными или неуявными.

  3. Выберите пункт Удалить ошибки.

См. также

Справка по Power Query для Excel

Работа с ошибками (docs.com)

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

В М можно вызвать и обработать ошибки во время выполнения. Если из других языков программирования вы знакомы с идеей исключения, обработка ошибок Power Query отличается по крайней мере одним существенным моментом.[1]

Предыдущая заметка     Следующая заметка

Рис. 1. Три поля записи error; чтобы увеличить изображение кликните на нем правой кнопкой мыши и выберите Открыть картинку в новой вкладке

Скачать заметку в формате Word или pdf, примеры в формате Excel

Сообщение об ошибке

В Power Query каждое выражение должно что-то возвращать. Как правило, это значение. Но выражение также может вызвать ошибку – особый способ указать, что не получилось вернуть значение. Один из способов вызвать ошибку – создать запись с ключевым словом error. Такая запись имеет три поля: причина, сообщение и подробности. Поля с любыми другими именами будут проигнорированы.

Листинг 1[2]

= error [

Reason = «Business Rule Violated»,

Message = «Item codes must start with a letter»,

Detail = «Non-conforming Item Code: 456»

]

Все три поля являются необязательными. Если поле Reason отсутствует, причина ошибки будет иметь значение по умолчанию – Expression.Error. Запись ошибки можно также создать с помощью функции Error.Record. В отличие от описанного выше подхода, в Error.Record атрибут Reason является обязательным.

Листинг 2

= error Error.Record(

«Business Rule Violated»,

«Item codes must start with a letter»,

«Non-conforming Item Code: 456»

)

Оба приведенных выше примера приводят к эквивалентной ошибке, изображенной на рис. 1 Глядя на рисунок, видно, как три поля/параметра соотносятся с отображаемым сообщением.

Вместо записи error также может принимать строку. Результирующее сообщение об ошибке будет иметь значение предоставленной строки, а его причина – значение Expression.Error.

Листинг 3

Рис. 2. Строка в error

Ярлык с многоточием

Существует также оператор быстрого доступа для создания ошибок, который пригодится во время разработки. Допустим, вы хотите протестировать запрос, часть кода которого еще не написана. Поскольку каждое выражение должно возвращать значение, или вызывать ошибку, вы не можете протестировать свой запрос, не поместив что-то в качестве заполнителя в нереализованные участки кода. Используйте оператор многоточия (…). При вызове … выдает ошибку Expression.Error: Значение не задано. Вот фрагмент кода, в котором не реализована ветвь else:

Листинг 4

let

a = 6,

Result = if a = 5 then true else ...

in

Result

Когда условие (а = 5) принимает значение false, вызывается «…», что приводит к ошибке. Обратите внимание, ключевое слово error не используется. Оператор многоточия как определяет, так и вызывает ошибку.

Особое поведение

Что именно происходит, когда возникает ошибка? Какое поведение возвращает ошибку, а не значение? Рассмотрим выражение:

В обычных условиях сначала выполняется функция GetValue(). Затем полученное значение передается в someFunction(), которая возвращает финальный результат. Предположим, GetValue() выдает ошибку. Дальнейшее выполнение выражения прекращается. someFunction() не вызывается. Ошибка GetValue() становится итогом выражения. Такое поведение также известно, как повышение. Ошибка передается тому шагу, с которого была вызвана someFunction().

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

Сдерживание ошибок

Если ошибка возникает в выражении, которое что-то определяет (поле записи, ячейку таблицы, переменную в выражении let, …), ошибка содержится в этом чём-то. Последствия ошибки ограничены этим чем-то и логикой, которая пытается получить доступ к значению этого чего-то. Ниже последствия ошибки GetValue содержатся в той части запроса, на которую она повлияла. Ошибка не остановила выполнение запроса. Запрос завершился успешно и вернул запись. Два поля – FieldB и FieldC – вернули ошибку, потому что они являются чем-то, затронутым ошибкой.

Листинг 5

let

GetValue = () => error «Something bad happened!»,

DoSomething = (input) => input + 1,

Result = [

FieldA = 25,

FieldB = DoSomething(GetValue),

FieldC = FieldA + FieldB

]

in

Result

Рис. 3. Результат запроса

Сдерживание ошибок влечет за собой еще одну особенность. Ошибка сохраняется в чём-то, что ее содержит. Пока выполняется запрос, любая попытка получить доступ к значению этого чего-то приводит к повторному возникновению сохраненной ошибки. Когда происходит попытка доступа, логика, которая первоначально вызвала ошибку, не подвергается повторной оценке. Эта логика при повторном обращении могла бы вернуть допустимое значение. Но логика пропускается, и ранее сохраненная ошибка просто вызывается повторно.

Ниже функция GetDataFromWebService() вычисляется один раз, даже если к самим данным обращаются дважды. Если первое обращение вернуло ошибку, второе обращение тоже вернет  ошибку, сохраненную ранее.

let

Data = GetDataFromWebService() // повышенная ошибка

in

{ List.Sum(Data[Amount]), List.Max(Data[TransactionDate]) }

Ошибки верхнего уровня

Если ошибку не удалось сдержать, она передается из выражения в верхний уровень, как результат всего запроса. Далее в среду хоста и выполнение запроса останавливается. В следующем выражении ничто не содержит ошибку, поэтому её нельзя сдержать, и запрос завершается ошибкой:

Листинг 6

let

GetValue= () => error «Something bad happened!»,

SomeFunction = (input) => input + 1

in

SomeFunction(GetValue())

Сдерживание против исключения

Поведение Power Query по сдерживанию ошибок отличает его от большинства языков программирования, основанных на исключениях. В мире исключений ошибка автоматически распространяется вплоть до среды хоста, что приводит к завершению работы программы (если только в коде не будет предусмотрена обработка ошибок). В M ошибка локализуется, пока есть что-то, что ее содержит. Это позволяет успешно завершить запрос, даже если не удалось вычислить отдельные элементы.

Сдерживание ошибок – отличное поведение, учитывая цель использования M: обработка данных. Предположим, что выражение, определяющее значение столбца таблицы, содержит ошибку для одной ячейки из всей таблицы. В мире, основанном на исключениях, эта ошибка может привести к завершению всей обработки. В мире M ошибка просто влияет на эту единственную ячейку и любой код, который обращается к этой ячейке. Обработка продолжается, и будет получен результат.

На самом деле, из-за лени M, если к ячейке с ошибкой не будет обращений, то ошибка и не возникнет.

Листинг 7

let

Data = #table({«Col1»}, {{«SomeValue»}, { error «bad» }})

in

Table.RowCount(Data) // возвращает 2

Хотя одна ячейка и содержит ошибку, запрошенные данные (количество строк), не требуют вычисления значения ошибочной ячейки, поэтому выражение вернет значение 2.

Хотя сдерживание ошибок – отличное поведение по умолчанию, что, если оно не соответствует вашим потребностям? В частности, что делать с таблицами, если важно различать строки с ошибками и строки без ошибок? Возможно, вы не обращаетесь к содержимому строки напрямую, поэтому не делаете ничего, что могло бы вызвать распространение ошибок, но все же хотите знать, в каких строках есть ошибка, а в каких нет. Функции Table.SelectRowsWithErrors и Table.RemoveRowsWithErrors, то, что вам нужно.

Листинг 8

let

Data = #table({«Col1»}, {{«SomeValue»}, { error «bad» }})

in

[

RowsWithErrors = Table.RowCount(Table.SelectRowsWithErrors(Data)),

RowsWithoutErrors = Table.RowCount(Table.RemoveRowsWithErrors(Data))

]

Рис. 4. Список, содержащий количество строк с ошибками и без

Обработка ошибок

Понимая, какие операции способны вызывать ошибку, вы можете использовать ключевое слово try, чтобы проверить, не возвращает ли выражение ошибку. try используется в двух вариантах…

try ExpressionToTry otherwise FallbackExpression

… первый, try with otherwise, пытается выполнить ExpressionToTry. Если это выражение возвращает значение, всё Ok, переходим к следующему шагу запроса. Когда выражение выдает ошибку, вычисляется выражение otherwise и возвращается его значение.

try Number.FromText(input) otherwise 0

Если Number.FromText возвращает значение, оно и будет результатом выражения. Когда Number.FromText выдает ошибку, try обращается к части otherwise, и возвращает 0. Другими словами, если входные данные могут быть преобразованы в число, возвращается это число; в противном случае возвращается значение по умолчанию – 0.

Имейте в виду, что ошибки будут обработаны только в выражении, расположенном непосредственно справа от try. Если ошибку возвращает выражение otherwise, эта ошибка не будет обработана предшествующим try. Но… поскольку otherwise само по себе является выражением, try можно поместить внутрь него, чтобы обработать ошибку, вызванную otherwise.

try GetFromPrimary()

otherwise try GetFromSecondary()

otherwise «Возникли проблемы с обоими серверами. Возьми отгул на остаток дня :)»

Проблема с конструкцией try with otherwise в том, что она неразборчива: любая ошибка возвращает альтернативное значение. Иногда последующие действия зависят от типа ошибки. Для этих ситуаций подойдет второй вариант – простое выражение try.

Эта форма всегда возвращает запись. Если выражение завершилось успешно, эта запись имеет вид:

[

HasError = false,

Value = (значение выражения ExpressionToTry)

]

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

[

HasError = true,

Error = (запись, описывающая возникшую ошибку)

]

Например:

Листинг 9

let

DoSomething = () => 45,

Result = try DoSomething()

in

Result // [HasError = false, Value = 45]

Рис. 5. Запись, возвращаемая try, если нет ошибки

Листинг 10

let

DoSomething = () => error «bad»,

Result = try DoSomething()

in

Result // [HasError = true, Error = [Reason = «Expression.Error», Message = «bad», Details = null]

Рис. 6. Запись, возвращаемая try, если есть ошибка

Запись, помещенная в поле Error, содержит ровно три поля: Reason, Message и Details.[3] Это верно, даже если в записи, первоначально использовавшейся для определения ошибки, отсутствовало одно или несколько из этих полей (помните, они необязательны при определении ошибки), или если она включала дополнительные поля.

Запись, возвращаемая try, может быть использована для реализации логики условного исправления. Следующий код обращается к вторичному источнику данных, если первичный выдает ошибку из-за недоступности сервера.

let

Primary = try GetDataFromPrimary(),

Source =

if Primary[HasError] = false then Primary[Value]

    /* если Primary возвращает значение, используй его */

else if Primary[Error][Reason] = «External Source Error»

and Primary[Error][Message] = «Server is unreachable»

    then GetDataFromSecondary()

    /* если ошибка Primary вызвана тем, что его источник недоступен,

            запроси данные с сервера Secondary */

else error Primary[Error]

    /* если Primary вернул иную ошибку, верни её

            в качестве результата запроса */

in

Source

Используя try with otherwise, мы бы запросили Secondary, если Primary выдаст любую ошибку, а не только когда основной сервер недоступен:

try GetDataFromPrimary()

otherwise GetDataFromSecondary()

Масштаб (область действия)

Обработка ошибок должна происходить на уровне, на котором они возникают. Нельзя обработать ошибки, содержащиеся на другом уровне.

let

Data = #table({«Amount»}, {{10}, {error «help!»}, {error «save me!»}})

in

try Data otherwise 0

try – бесполезный оператор в этом запросе. Возможно, разработчик надеялся с помощью try заменить ошибки нулями. Но в этом случае Data возвращает допустимую таблицу. Правда, в ней самой есть ячейки с ошибками, но эти ошибки содержатся на уровне ячеек. Поскольку они не влияют на выражение данных на уровне таблицы, try не дает эффекта.

try будет полезен в следующем случае, но его эффект может быть не таким, как предполагал разработчик.

Листинг 11

let

Data = #table({«Amount»}, {{10}, {error «help!»}, {error «save me!»}})

in

try List.Sum(Data[Amount]) otherwise 0

List.Sum суммирует значения в столбце [Amount] таблицы Data. Если выражение, определяющее значение элемента, вызывает ошибку, она повышается. List.Sum прекращает суммирование и возвращает ошибку. try обрабатывает эту ошибку, возвращая 0 вместо суммы элементов списка. Скорее всего, цель у разработчика была иная. Он хотел заменить элементы с ошибками на 0, и суммировать числовые значения. Необходимо применить try так, чтобы обработка ошибок велась на уровне ячеек таблицы. Кажется, что можно сделать так:

Table.TransformColumns(Data, (input) => try input otherwise 0)

Однако, эта логика не улавливает ошибки, вызванные выражениями значений ячеек. Дело в том, что аргументы вычисляются до того, как их значения будут переданы в функцию. Если оценка приводит к ошибке, функция не вызывается. Вместо этого ошибка передается шагу, который вызвал функцию. В нашем случае, если выражение значения столбца выдает ошибку, функция преобразования (input) => … не вызывается, поэтому try не может обработать ошибку. Вместо этого ошибка передается обратно в Table.TransformColumns.

Проблема заключается в том, что выражение значения ячейки должно быть вычислено внутри try. Чтобы добиться этого, надо вернуться на уровень строки, и использовать функцию, которая получает строку. Затем внутри функции использовать ссылку на значение столбца строки и вот его подставить в try. Лишь тогда try сможет обработать ошибку. Чтобы реализовать это, нужно создать новый столбец, значения которого формировать путем проверки try. Затем можно удалить исходный столбец, а новому столбцу дать старое имя.

Листинг 12

let

Data = #table({«Amount»}, {{10}, {error «help!»}, {error «save me!»}}),

ErrorsReplacedWithZero = Table.AddColumn(

Data,

«NewAmount»,

(row) => try row[Amount] otherwise 0

),

RemoveOldAmount = Table.RemoveColumns(ErrorsReplacedWithZero, {«Amount»}),

RenameNewAmount = Table.RenameColumns(RemoveOldAmount, {«NewAmount», «Amount»})

in

List.Sum(RenameNewAmount[Amount]) // возвращает 10

Это довольно сложно. Но пример хорошо иллюстрирует общий подход к использованию try на уровне ячеек. Если же, как в нашем пример, вы просто хотите заменить любую ошибку значением по умолчанию, используйте Table.ReplaceErrorValues.

Листинг 13

let

Data = #table({«Amount»}, {{10}, {error «help!»}, {error «save me!»}}),

ErrorsReplacedWithZero = Table.ReplaceErrorValues(

Data,

{{«Amount», 0}}

) // заменяет ошибки в столбце Amount нулями

in

List.Sum(ErrorsReplacedWithZero[Amount]) // возвращает 10

Применить try к элементам списка сложнее. Для списков нет функции List.ReplaceErrorValues. Самым простым решением может быть преобразование списка в таблицу, обработка ошибки, а затем обратное преобразование таблицы в список.

Листинг 14

let

Data = {10, error «help!», error «save me!»},

#»Преобразовано в таблицу» = Table.FromValue(Data),

#»Замененные ошибки» = Table.ReplaceErrorValues(#»Преобразовано в таблицу», {{«Value», 0}}),

Value = #»Замененные ошибки»[Value],

#»Вычисленная сумма» = List.Sum(Value)

in

#»Вычисленная сумма»

Рис. 7. Сумма элементов списка, содержащего ошибки

Нарушения правил

Вы можете использовать ошибки, как сигнал о несоответствиях. Допустим, вы обрабатываете CSV-файл, где значения в столбце ItemCode должны начинаться с буквы A. В начале запроса вы проверяете это, заменяя несоответствующие значения ошибками. Последующие этапы обработки, которые обращаются к столбцу, будут предупреждены, если они попытаются работать со значениями, нарушающими правила.

let

Data = GetData(), // for testing use: #table({«ItemCode»}, {{«1»}, {«A2»}})

Validated = Table.TransformColumns(

Data,

{

«ItemCode»,

each if Text.StartsWith(_, «A») then _ else error Error.Record(

      «Invalid Data»,

«ItemCode does not start with expected letter»,

_

)

}

)

in

Validated

Такую проверку полезно применить в базовом запросе, на который будут ссылаться несколько других запросов. Это позволит вам выполнить проверку один раз (вспомните принцип Не повторяйся, Don’t repeat yourself), гарантируя, что пользователи, пытающиеся использовать ошибочные данные, будут предупреждены о наличии аномалий.

Другой вариант – добавить столбец со значениями true и false, в зависимости от того, соблюдается ли правило:

let

Data = GetData(), // for testing use: #table({«ItemCode»}, {{«1»}, {«A2»}})

Validated = Table.AddColumn(

Data,

«ValidItemCode»,

each Text.StartsWith(_[ItemCode], «A»),

type logical

)

in

Validated

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

В следующей заметке

Я планирую рассказать о том, что остается за кулисами: организации разделов кода и о том, как M предоставляет возможность аннотировать значения дополнительной информацией (метаданными). Однако перед этим обсудим, как работает система типов в Power Query.

[1] Заметка написана на основе статьи Ben Gribaudo. Power Query M Primer (Part 15): Error Handling. Если вы впервые сталкиваетесь с Power Query, рекомендую начать с Марк Мур. Power Query.

[2] Номер листинга соответствует номеру запроса в приложенном Excel файле.

[3] Судя по рис. 6 современная реализация M создает пять полей.

 

s_bag

Пользователь

Сообщений: 34
Регистрация: 29.11.2013

Загружаю текстовый файл с помощью Power Query.
Если сначала удаляю строки, содержащие ошибки в столбце Tran Date, а потом снимаю в фильтре галочку с null, всё Ok.
Если сначала снимаю в фильтре галочку с null, то внизу показывает одну строку с Error, которую удалить нельзя.
И, похоже, часть строк пропадает.
Почему в этом месте важна последовательность действий?
Собственно, обрабатываемый файл:GL Jan-Mar.TXT (17.08 КБ)Спасибо.

 

s_bag, потому что у вас перед этим идет шаг определения типа. на этом шаге у вас возникает ошибка из-за того, что данные (слова «Tran Amount») не распознались как дата.
Если вы не избавились от этой ошибки, то при включении фильтра по null у вас происходит явное вычисление значений столбца для сравнения с nul. Оно длится до первой ошибки, далее операция прерывается, поэтому всё, что после первой ошибки, не показывается. Удалить ее не получается, потому что это такая «вложенная» ошибка.
В общем, обрабатывать ошибки желательно прямо сразу после их возможного возникновения, во избежание

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#4

31.07.2020 20:04:17

Доброе время суток
Может лучше так?

Скрытый текст

 

s_bag

Пользователь

Сообщений: 34
Регистрация: 29.11.2013

Максим, спасибо за разъяснения.
Андрей, это высший пилотаж! Пошел изучать код.

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#6

01.08.2020 11:12:57

Цитата
s_bag написал:
это высший пилотаж

Ну, я бы так не сказал. Только либо имея чёткий стандарт формирования таких файлов, либо достаточную базу фактических файлов, можно сказать достаточно ли для идентификации строки с данными в файле по существованию не пустой строки между двумя символами /.

 

t330

Пользователь

Сообщений: 29
Регистрация: 30.01.2020

Народ, а есть ли в PQ на M возможность прописать обработчик ошибок , который будет например при возникновении ошибки на каком -то шаге , заменять ошибку на null или на что-то другое?

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#8

30.08.2020 06:42:34

Цитата
t330 написал:
Народ

И вам — здравствуйте, человечище!
Что — настолько лень прочитать в спецификации языка

Error Handling

? Microsoft считает, что на это достаточно трёх минут.

 

t330

Пользователь

Сообщений: 29
Регистрация: 30.01.2020

#9

31.08.2020 16:23:10

Андрей, спасибо за ссылку, только я не смог применить …

Например, хочу сделать так, чтобы ошибка для преобразовании типа данных обрабатывалась как в коде ниже, но не срабатывает

Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица3"]}[Content],
    #"Измененный тип" = try Table.TransformColumnTypes(Источник,{{"Num", Int64.Type}}) otherwise Table.TransformColumnTypes(Источник,{{"Num", type text}})
in
    #"Измененный тип"

Прикрепленные файлы

  • ОбработчикОшибок.xlsx (16.58 КБ)

Изменено: t33031.08.2020 16:23:53
(добавлен файл примера)

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#10

31.08.2020 16:53:29

Цитата
t330 написал:
ошибка для преобразовании типа данных

где? По вашему примеру, если поменять имя таблицы на Таблица3_2, то всё прекрасно загружается. Правда, вы сделали sefl reference таблицу, ну, это уже не та проблема.
Или вы хотели разобрать обработку ошибки, когда неверный источник?

 

t330

Пользователь

Сообщений: 29
Регистрация: 30.01.2020

Все равно не срабатывает
Вот видео на 1 минуту  

https://radikal.ru/video/WUyGMi7CDdE

Изменено: t33031.08.2020 17:58:53

 

t330

Пользователь

Сообщений: 29
Регистрация: 30.01.2020

#12

31.08.2020 22:03:43

Цитата
Андрей VG написал:
где? По вашему примеру, если поменять имя таблицы на Таблица3_2, то всё прекрасно загружается. Правда, вы сделали sefl reference таблицу, ну, это уже не та проблема.Или вы хотели разобрать обработку ошибки, когда неверный источник?

Да , если в источнике заменить Таблица3 на Таблица3_2 , то якобы мой неправильный код сработает. На самом деле нет, так как в этом случае в самом источнике (Таблица3_2) в столбце Num просто не возникает никаких ошибок при изменении типа переменной с Text на int.64 , потому что в этом столбце только цифры и пустые ячейки. В общем, мой «обработчик» просто ничего не делает.  

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#13

31.08.2020 22:07:56

Цитата
t330 написал:
не возникает никаких ошибок при изменении типа переменной с Text на int.64

Суть не в этом. ОБработка ошибок начинается только тогда, когда есть ошибка. Table.TransformColumnTypes разве возвращает ошибку? Функция возвращает таблицу. Но вот ошибки содержаться в некоторых или всех ячейках столбца, для которого был указан не верный тип данных. Следовательно, нужно отдельно проверять, содержит ли столбец какую-нибудь ошибку и на основании этого менять указание типа данных. Иначе никак.

 

t330

Пользователь

Сообщений: 29
Регистрация: 30.01.2020

#14

01.09.2020 01:11:21

Цитата
Андрей VG написал:
Следовательно, нужно отдельно проверять, содержит ли столбец какую-нибудь ошибку и на основании этого менять указание типа данных. Иначе никак.

Научите пожалуйста как это сделать?
Вот такой код не работает

И еще вы сказали, что можно сделать обработку ошибок , если к примеру у меня ошибка появляется на уровне слияния запросов из-за того, что например в одном запросе поменялись какие-то источники (поменялся состав столбцов в файлу одного запроса) … Не сочтите за наглость , но как это прописать?

Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица3_2"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник, {each try {"Num", Int64.Type} otherwise  {"Num", type text} })
in
    #"Измененный тип"  



Прикрепленные файлы

  • ОбработчикОшибок.xlsx (13.81 КБ)

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#15

01.09.2020 06:51:47

Цитата
t330 написал:
Вот такой код не работает

И не должен. Тут два пути, либо попытаться указать тип числовой и проверить столбец на ошибки, или проверить, что столбец содержит не целые числа (в примере просто числа).

Прикрепленные файлы

  • ОбработчикОшибок.xlsx (20.36 КБ)

 

t330

Пользователь

Сообщений: 29
Регистрация: 30.01.2020

#16

02.09.2020 14:25:18

Цитата
Андрей VG написал:
И не должен. Тут два пути, либо попытаться указать тип числовой и проверить столбец на ошибки, или проверить, что столбец содержит не целые числа (в примере просто числа).

Спасибо!

Содержание

  1. Работа с ошибками в Power Query
  2. Ошибка на уровне шага
  3. Распространенные ошибки на уровне шага
  4. Не удается найти источник источника данных. ошибка
  5. Столбец таблицы не найден
  6. Другие распространенные ошибки на уровне шага
  7. Ошибка на уровне ячейки
  8. Обработка ошибок на уровне ячейки
  9. Удалить ошибки
  10. Заменить ошибки
  11. Не учитывать ошибки
  12. Распространенные ошибки на уровне ячеек
  13. Ошибки преобразования типов данных
  14. Ошибки операций
  15. Агрегированные данные из столбца (Power Query)
  16. Столбцы pivot (Power Query)

Работа с ошибками в Power Query

В Power Query можно столкнуться с ошибками двух типов:

  • Ошибки на уровне шага
  • Ошибки на уровне ячеек

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

Ошибка на уровне шага

Ошибка на уровне шага предотвращает загрузку запроса и отображение компонентов ошибок в желтой области.

  • Причина ошибки: первый раздел перед двоеточием. В приведенном выше примере причина ошибки — expression. Error.
  • Сообщение об ошибке: раздел непосредственно после причины. В приведенном выше примере сообщение об ошибке — столбец «Column» таблицы не найден.
  • Сведения об ошибке: раздел сразу после строки Details: String. В приведенном выше примере сведения об ошибке — Column.

Распространенные ошибки на уровне шага

Во всех случаях рекомендуется внимательно рассмотреть причину ошибки, сообщение об ошибке и сведения об ошибке, чтобы понять, что вызывает ошибку. Можно нажать кнопку Перейти к ошибке (если доступно), чтобы просмотреть первый шаг, в котором произошла ошибка.

Не удается найти источник источника данных. ошибка

Эта ошибка обычно возникает, когда пользователь недоступен для доступа к источнику данных, но у него нет правильных учетных данных для обращения к нему или источник перемещен в другое место.

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

Возможные решения: можно изменить путь к текстовому файлу на путь, к которому у обоих пользователей есть доступ. Пользователь б может изменить путь к файлу на локальную копию того же текстового файла. Если кнопка изменить параметры доступна в области ошибка, ее можно выбрать и изменить путь к файлу.

Столбец таблицы не найден

Эта ошибка обычно активируется, когда шаг создает прямую ссылку на имя столбца, которое не существует в запросе.

Пример. имеется запрос из текстового файла, в котором одно из имен столбцов имело значение Column. В запросе имеется шаг, который переименовывает столбец в значение Date. Но в исходном текстовом файле были внесены изменения, и он больше не содержит заголовок столбца с именем, так как он был вручную изменен на » Дата«. Power Query не удается найти заголовок столбца с именем Column, поэтому он не может переименовать столбцы. Отображается ошибка, показанная на следующем рисунке.

Возможные решения. в этом случае существует несколько решений, но все они зависят от того, что вы хотели бы сделать. В этом примере, так как заголовок столбца с датой правильно взят из текстового файла, можно просто удалить шаг, который переименовывает столбец. Это позволит выполнить запрос без этой ошибки.

Другие распространенные ошибки на уровне шага

При объединении или объединении данных между несколькими источниками данных может появиться Формула. ошибка брандмауэра , как показано на следующем рисунке.

Эта ошибка может быть вызвана несколькими причинами, такими как уровни конфиденциальности данных между источниками данных или способ объединения или слияния этих источников данных. Дополнительные сведения о диагностике этой проблемы см. в статье брандмауэр конфиденциальности данных.

Ошибка на уровне ячейки

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

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

Обработка ошибок на уровне ячейки

При возникновении ошибок на уровне ячеек Power Query предоставляет набор функций для их обработки путем удаления, замены или сохранения ошибок.

В следующих разделах приведенные примеры будут использовать тот же образец запроса, что и начальная точка. В этом запросе имеется столбец Sales , содержащий одну ячейку с ошибкой, вызванной ошибкой преобразования. Значение в этой ячейке равно » НД«, но при преобразовании этого столбца в целое число Power Query не удалось преобразовать НД в число, поэтому отобразится следующая ошибка.

Удалить ошибки

Чтобы удалить строки с ошибками в Power Query, сначала выберите столбец, содержащий ошибки. На вкладке Главная в группе уменьшить строки выберите Удалить строки. В раскрывающемся меню выберите пункт удалить ошибки.

В результате этой операции вы получите таблицу, которую вы ищете.

Заменить ошибки

Если вместо удаления строк с ошибками необходимо заменить их фиксированным значением, это также можно сделать. Чтобы заменить строки с ошибками, сначала выберите столбец, содержащий ошибки. На вкладке Преобразование в группе все столбцы выберите заменить значения. В раскрывающемся меню выберите команду заменить ошибки.

В диалоговом окне Замена ошибок введите значение 10 , так как необходимо заменить все ошибки значением 10.

В результате этой операции вы получите таблицу, которую вы ищете.

Не учитывать ошибки

Power Query может служить хорошим средством аудита для обнаружения любых строк с ошибками, даже если эти ошибки не устранены. Именно здесь могут быть полезны ошибки сохранения . Чтобы избежать возникновения ошибок в строках, сначала выберите столбец, содержащий ошибки. На вкладке Главная в группе сокращение строк выберите параметр не учитывать строки. В раскрывающемся меню выберите пункт не учитывать ошибки.

В результате этой операции вы получите таблицу, которую вы ищете.

Распространенные ошибки на уровне ячеек

Как и в случае с любой ошибкой на уровне шага, мы рекомендуем ознакомиться со статьей причины ошибок, сообщения об ошибках и сведения об ошибках, предоставленные на уровне ячейки, чтобы понять, что вызывает ошибки. В следующих разделах рассматриваются некоторые из наиболее часто встречающихся ошибок на уровне ячеек в Power Query.

Ошибки преобразования типов данных

Часто запускается при изменении типа данных столбца в таблице. Некоторые значения, найденные в столбце, не могут быть преобразованы в нужный тип данных.

Пример. у вас есть запрос, который содержит столбец с именем Sales. Одна ячейка в этом столбце содержит значение « НД » в качестве значения ячейки, а в остальных — целые числа. Вы решили преобразовать тип данных столбца из текстового в целое число, но ячейка со значением НД вызывает ошибку.

Возможные решения. После определения строки с ошибкой можно изменить источник данных, чтобы он отражал правильное значение, а не НД, или применить операцию замены ошибки , чтобы предоставить значения для любых значений НД , вызвавших ошибку.

Ошибки операций

При попытке применить неподдерживаемую операцию, например умножить текстовое значение на числовое значение, возникает ошибка.

Пример. необходимо создать настраиваемый столбец для запроса, создав текстовую строку, содержащую фразу «общий объем продаж:», Объединенную со значением из столбца » продажи «. Ошибка возникает из-за того, что операция объединения поддерживает только текстовые столбцы, а не числовые.

Возможные решения. перед созданием этого пользовательского столбца измените тип данных столбца Sales на Text.

Источник

Агрегированные данные из столбца (Power Query)

С помощью Power Query можно агрегировать один или несколько столбцов связанной таблицы. Например, можно вычислить общую сумму позиций для каждого заказа.

Предварительный просмотр данных таблицы «Заказы» в веб-канале OData «Northwind»

В этом примере агрегируется столбец Order_Details из таблицы «Заказы Northwind». Данные импортируется из образца веб-канала OData Northwind.

В Excel выберите Главная> новый источник > другие источники > из канала OData.

В диалоговом окне Канал OData введите URL-адрес канала OData Northwind.

В области Навигатор выберите таблицу Orders (Заказы) в левой области, данные будут предварительно просмотреться справа, а затем выберите Transform Data (Преобразовать данные).

Появится редактор Power Query.

В режиме предварительного просмотра данных прокрутите список вправо и щелкните значок рядом со Order_Details данными.

Таблица — это пример структурированного столбца, который можно развернуть, чтобы увидеть

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

В списке Столбец таблицы:

Выберите параметр Агрегировать.

Наведите курсор на агрегатный элемент функции, например Агрегаты UnitPrice.

В списке агрегатных функций выберите одну или несколько агрегатных функций. Например, Sum и Average.

Power Query расширяет столбец Order_Details, заменяя его значениями «Сумма UnitPrice» и «Среднее значение unitPrice».

При расширении структурированного столбца, например Таблица,может возникнуть вопрос, откуда он был. Чтобы узнать это, можно просмотреть связанную таблицу во внешнем источнике данных.

В области Параметры запроса в области Примененные шаги выберите Источник , а затем Параметры изменения. Появится диалоговое окно Источник данных, которое зависит от внешнего источника данных. В этом примере это диалоговое окно Канал OData. Заметьте этот источник данных.

Выберите Главная > последниеисточники , а затем выберите источник данных из списка, который соответствует тому, что вы заме добавили на шаге 1. Появится диалоговое окно Навигатор.

По умолчанию список всех таблиц из источника данных отображается в левой области. Выберите связанную таблицу, чтобы просмотреть данные в правой области. Имя структурированного столбца — это имя связанной таблицы. В этом примере выберитеOrder_Details .

По умолчанию вы можете просматривать и просматривать все таблицы. Но вы можете выбрать Параметры отображения, чтобы включить или отключить только выбранные элементы и Включить предварительный просмотр данных, чтобы настроить отображение по своему вкусу.

Источник

Столбцы pivot (Power Query)

Вы можете свести столбец в таблице, агрегируя совпадающие значения в столбце, чтобы создать новую ориентацию таблицы. Сначала таблица будет отсортироваться в порядке возрастания по значениям в первом столбце.

При своде вы берете два исходных столбца и создаете новую пару атрибута и значения, которая представляет точку пересечения новых столбцов:

Атрибуты Одинаковые значения из одного столбца исходных атрибутов (в зеленом цвете слева) будут совмещены в несколько новых столбцов (в зеленом цвете справа).

Значения из исходного столбца без свербов (синего цвета слева) распределяются по соответствующим новым столбцам в качестве значений (синим цветом справа).

Вот пример данных, используемых в этой процедуре.

Чтобы открыть запрос, найдите ранее загруженную из редактора Power Query, выберем ячейку в данных и выберите запрос> изменить. Дополнительные сведения см. в этойExcel.

Выберем столбец, который нужно степть. В примере выберите Дата. Уникальные значения этого столбца становятся новыми столбцами и их заглавями.

Выберите преобразовать > столбец .

В диалоговом окне Столбец pivot в списке Столбец значений выберите Amt.

Выберите Дополнительные параметры, а затем выберите функцию Агрегированного значения. В примере выберите Сумма.

Доступны такие параметры: Don’t aggregate, Count (all), Count (не пусто), Minimum, Maximum , Median, Sumи Average.

Совет Если вы не хотите подсчитывать ячейку без значения, выберите элемент Количество (не пустая). Например, если в столбце десять ячеек и две пустые, то количество будет 8.

Столбец Date из исходной таблицы сведется для получения суммы всех значений из исходного столбца Amt на пересечении country и каждого нового столбца Date.

Вот пример данных, используемых в этой процедуре.

Вы можете сводные столбцы без агрегирования при работе со столбцами, которые невозможно агрегировать или вы не хотите агрегировать значения.

Чтобы открыть запрос, найдите ранее загруженную из редактора Power Query, выберем ячейку в данных и выберите запрос> изменить. Дополнительные сведения см. в этойExcel.

Выберем столбец, который нужно степть. В примере выберите положение. Уникальные значения этого столбца становятся новыми столбцами и их заглавями.

Выберите преобразовать > столбец .

В диалоговом окне Столбец pivot в списке Столбец значений выберите Product (Товар).

Выберите Дополнительные параметры, а затем выберите функцию Агрегированного значения. В примере выберите не агрегировать.

Столбец «Положение» из исходной таблицы высвещен для получения значений из исходного столбца «Товар» на пересечении столбца «Страна» и каждого нового столбца «Положение».

В этом примере мы используем пример из раздела «Сводка и агрегировать столбец»:

Если вы сводные данные в столбце Date, выберите Amt в списке Столбец значений, а затем в дополнительных параметрах выберитеНе агрегировать для функции агрегированного значения ,вы получите следующее сообщение об ошибке:

«Expression.Error: В переименовке было слишком много элементов, чтобы завершить операцию».

Эта ошибка возникает,потому что параметр Не агрегировать предназначен для работы с одним значением, возвращенным для пересечения между country и Date, а не несколькими значениями.

Эта ошибка может появиться не сразу. При первоначальном определении данных в точке пересечения создавалось отдельное значение. Позднее после операции обновления условия данных изменились, и теперь в точке пересечения можно указать несколько значений. В этом случае можно использовать команду Pivot с агрегатом.

Источник

Tags:
Power BI, Power Query

Чтобы создать надежную систему BI, вам необходимо тщательно учитывать и обрабатывать ошибки. Если вы создаете решение для отчетов, обновление которого не выполняется при каждом возникновении ошибки, это не надежная система. Ошибки могут произойти по многим причинам. В этом сообщении мы покажем вам способ поймать возможные ошибки в Power Query и как создать страницу отчета об исключении, чтобы визуализировать строки ошибок для дальнейшего изучения. Метод, о котором вы здесь узнаете, сохранит вашу модель от сбоя во время обновления. Эо означает, что вы обновили набор данных, и вы можете поймать любые строки, вызвавшие ошибку на странице отчета об исключении.

Пример набора данных

Мы будем использовать пример файла Excel в качестве источника данных, который содержит 18 484 строки клиентов. В образце Dataset у нас есть поле BirthDate рядом со всеми другими полями, которые должны иметь в нем значение даты. Вот как выглядят данные, когда мы вводим их в Power Query:

 

Происходит ошибка


Когда мы получаем этот набор данных в окне редактора Power Query Editor (как показано на приведенном выше снимке экрана), Power Query автоматически преобразует тип данных столбца BirthDate в Date. Вы можете увидеть это автоматическое преобразование типа данных в списке шагов;
 
Конечно, вы можете отключить автоматическое определение типа данных Power Query, но наша точка зрения отличается. Мы хотим, чтобы набор данных не показывал вам, как с этим бороться. Ошибки происходят в Power Query в реальном мире, и мы хотим показать вам, как их найти.

Как вы можете видеть в редакторе Power Query Editor, мы не видим ошибок для этого типа данных, и все выглядит великолепно;

 

Теперь мы загружаем этот набор данных в Power BI, используя Close и Apply в окне редактора запросов, и мы ждем, что все загрузится успешно, однако это выходит из-под контроля!

 

Звучит знакомо? Да, если вы некоторое время работали с Power BI, возможно, вы это испытали. В редакторе Power Query Editor нет ошибок, но когда мы загружаем данные в Power BI, они появляются ! Как это возможно? Давайте сначала узнаем, почему это происходит.

Почему Power Query Editor не поймал ошибку?

Редактор Power Query Editor всегда работает с предварительным просмотром набора данных, размер предварительного просмотра зависит от того, сколько столбцов у вас есть, иногда это 1000 строк, а иногда и 200 строк. Если вы нажмете на Query в окне редактора Power Query, вы можете увидеть это, как показано ниже в строке состояния;

 

Причина использования Power Query для использования набора данных предварительного просмотра заключается, главным образом, в ускорении процесса разработки трансформации. Представьте, что если у вас есть таблица с 10 миллионами строк, каждое преобразование, которое вы хотите применить к этому набору данных, займет много времени, и вам придется подождать, прежде чем вы начнете делать следующий шаг. Ожидание ответа каждый раз замедляет процесс разработки. Именно по этой причине предпочтительным вариантом является работа над предварительным просмотром в наборе данных. Вы можете применить все преобразования, которые вы хотите в предварительном просмотре, и когда вы им довольны, затем примените его ко всему набору данных. Как правило, первые 1000 строк или первые 200 строк являются хорошим образцом всего набора данных, и вы можете ожидать увидеть большинство проблем с данными. Не всегда, конечно.

Как тогда преобразование будет применено ко всему набору данных? Когда вы загружаете данные в Power BI, а именно — когда вы нажимаете «Close» и «APPLY» в окне Power Query Editor. Этот APPLY означает применить эти преобразования теперь во всем наборе данных. Именно по этой причине процесс загрузки может занять больше времени, особенно если набор данных большой.

Power Query Editor всегда работает с предварительным просмотром данных, чтобы ускорить процесс разработки. Когда вы загружаете данные в Power BI, преобразования будут применяться ко всему набору данных.

Теперь, когда вы знаете, как Power Query Editor имеет дело с предварительным просмотром данных, вы можете догадаться, почему произошла ошибка выше? Причина в том, что предварительный просмотр данных (около 1000 строк) не имел проблем с применяемыми преобразованиями (в этом случае автоматический тип данных изменяется на Date для столбца BirthDate). Однако весь набор данных (около 18 тыс. строк) имеет проблемы с этим преобразованием! Когда вы увидите вышеприведенную ошибку в Power BI Desktop, вы можете нажать View errors и перейти в  Power Query editor, посмотреть их, разобраться с ними и исправить. Однако этого недостаточно.

Что делать, если ошибка не возникает в Power BI Desktop, но происходит в запланированном обновлении в службе Power BI?

Это хороший вопрос! Исправить ошибки в Power BI Desktop легко, но учтите, что ошибка также не произошла в Desktop, и вы опубликовали отчет Power BI на веб-сайт и запланировали его обновление. Затем на следующий день вы увидите, что отчет не обновился с ошибкой! Вы должны научиться правильно обращаться к строкам ошибок до того, как это приведет к сбою запланированного обновления. Давайте посмотрим, как с этим справиться.

Работа с ошибками: поиск строк ошибок

Чтобы справиться с ошибками, вы должны поймать ошибку до того, как она загрузится в Power BI. Один из способов сделать это — создать две ссылки одной и той же таблицы, одну в качестве окончательного запроса, а другую — как строки ошибок.

 

На скриншоте выше, мы переименовали таблицу DimCustomer в DimCustomer — Original, а затем создали ссылку из нее. Если вы хотите узнать, что такое Reference, прочитайте статью о Reference и Duplicate здесь. Новый запрошенный запрос можно назвать DimCustomer. Это будет чистый запрос без ошибок (мы удалим ошибки из него на следующем шаге);

 

Новая таблица — это таблица, которая будет чистой, без ошибок, и мы можем использовать ее в отчете. Давайте очистим это от любых ошибок

Удаление ошибок из загрузки таблицы в Power BI

Поскольку DimCustomer станет для нас окончательным запросом, я хочу удалить из него ошибки. Удаление ошибок — это простой вариант на вкладке «Главная» в разделе  Reduce Rows -> Remove Rows -> Remove Errors.. Перед этим выберите столбец BirthDate.

 

Вы также можете сделать это для всех столбцов, если хотите; выбрав все столбцы, а затем выбрав «Remove Errors». Это сообщение — всего лишь образец одного столбца и может быть продлен до конца.

Remove Errors — это шаг на этапе преобразования данных, а это означает, что при нажатии APPLY он будет применяться ко всему набору данных, поэтому в результате, когда изменение типа данных приведет к ошибке, следующий шаг после этого — Remove Errors, уничтожит строки, вызвавшие ошибку. Но DimCustomer — Original все еще может вызвать ошибку, поэтому мы должны снять галочку Enable Load с этого запроса.

 

Теперь мы успешно удалили ошибки и загрузили данные в Power BI. Ошибок не будет.

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

Храните ошибки в таблице исключений

Аналогично опции «Remove Errors» есть опция «Keep Errors». Если вы уже видели этот вариант, возможно, вам интересно, как его использовать? Вот точный сценарий использования. Keep Errors поможет уловить строки ошибок в таблице исключений.

Создайте еще одну ссылку из DimCustomer — Original.

 

Переименуйте этот новый запрос как строки ошибок DimCustomer. Для этого запроса нам нужно сохранить ошибки, которые можно найти рядом с ошибками удаления, но в разделе Keep Rows.

 

Теперь эта таблица будет содержать строки, которые вызывают ошибку. Вот пример набора;

 

Это еще не конец истории. Если вы загрузите эту новую таблицу DimCustomer — строки ошибок в Power BI, вы снова получите ту же ошибку. Зачем? ну, потому что этот запрос, безусловно, собирается возвращать строки ошибок! Вам необходимо удалить ошибку из этого набора данных.

Получение информации об ошибке

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

В таблице  Error Rows добавьте Custom Column.

 

В редакторе Custom Column напишите «try», а затем пробел, имя поля, вызвавшего ошибку. В нашем примере: BirthDate;

try [BirthDate]

 

try (все строчные буквы), это ключевое слово в M, которое будет ловить данные об ошибке. Вместо того, чтобы возвращать только ошибку, она вернет запись, содержащую данные об ошибках, такие как исходное значение и сообщение об ошибке. Ниже, снимок экрана показывает, как будет выводиться результат попытки;

 

Выход записи «try» будет иметь два поля; HasError (мы уже знаем, что это будет правда) и Error. Ошибка — это еще одна запись с более подробной информацией. Нажмите «Expand » в столбце «Custom column» и выберите «Error».

 

В столбце вывода с именем «Error» снова нажмите на «Expand» и на этот раз выберите все столбцы;

 

Хорошо иметь исходное имя столбца в качестве префикса, потому что тогда вы бы знали, что это столбцы с подробными сведениями об ошибках.

Теперь вы получите полную информацию об ошибке, как показано ниже;

 

Вышеупомянутая информация является вашим самым ценным активом для отчетности об исключениях.

Удалите столбец ошибок

Теперь последний шаг перед загрузкой данных в Power BI — удалить столбец, который вызывает ошибку. В нашем примере; Столбец BirthDate должен быть удален (в противном случае обновление снова завершится неудачей);

 

Отчет об исключении

Теперь вы можете загрузить данные в Power BI. У вас будет две таблицы; DimCustomer и DimCustomer – Error Rows. DimCustomer — это таблица, которую вы можете использовать для обычной отчетности. DimCustomer – Error Rows — это таблица, которую вы можете использовать для отчетов об исключениях. Отчет об исключении — это отчет, который можно использовать для устранения неполадок, и перечисляет все ошибки для дальнейшего расследования. Убедитесь, что между этими двумя таблицами нет никакой связи.

Вот созданный нами образец визуального отчета, который показывает ошибки:

 

Подведем итоги

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

Понравилась статья? Поделить с друзьями:
  • Как удалить ошибки google play
  • Как удалить ошибки bmw e70
  • Как удалить ошибки bmw e39
  • Как удалить все ошибки в ворде
  • Как удалить все ошибки mac