Аргументы 2 были переданы функции которая ожидает 1
Перейти к содержимому

Аргументы 2 были переданы функции которая ожидает 1

  • автор:

Excel это не сложно

Основные форумы => PowerQuery, PowerPivot, PowerBI и запросы => Тема начата: markiza от 23.08.2017, 18:21:29

Здравствуйте! Я загружаю с помощью Power Query в Excel 2016 фин. данные с сайта, где по разным компаниям данные могут быть за разное количество лет. Запрос создавала для таблицы с максимальным количеством столбцов. При попытке загрузить данные по компании, имеющей данные за меньшее количество лет, получаю ошибку, что столбец такой-то не найден. Подскажите, пожалуйста, как переписать запрос, чтобы в запрос подставлялись только те столбцы, которые есть в исходной таблице?

Мой запрос сейчас следующий:

let 
Источник = Web.Page(Web.Contents("https://www.gurufocus.com/financials/" & Excel.CurrentWorkbook()[Content][Тикер])),
Data1 = Источник[Data],
#"Измененный тип" = Table.TransformColumnTypes(Data1,, , , , , , , , , , , , , , , , , , , , , , >),
#"Пониженные заголовки" = Table.DemoteHeaders(#"Измененный тип"),
#"Пониженные заголовки1" = Table.DemoteHeaders(#"Пониженные заголовки"),
#"Удаленные верхние строки" = Table.Skip(#"Пониженные заголовки1",2),
#"Повышенные заголовки" = Table.PromoteHeaders(#"Удаленные верхние строки")
in
#"Повышенные заголовки"

Название: Re:Запрос Power Query для таблицы с динамическим количеством столбцов
Отправлено: Дмитрий Щербаков(The_Prist) от 23.08.2017, 18:47:14

Писал я на эту тему статью где-то месяц назад еще: Собрать данные с таблиц с изменяющимися столбцами в PowerQuery (http://www.excel-vba.ru/chto-umeet-excel/sobrat-dannye-s-tablic-s-izmenyayushhimisya-stolbcami-v-powerquery/)
Как раз Ваш случай. Главное не ленитесь разобраться.

Название: Re:Запрос Power Query для таблицы с динамическим количеством столбцов
Отправлено: markiza от 24.08.2017, 16:17:37

Спасибо за ссылку, я, собственно, и написала на форум после прочтения этой статьи. Подскажите, пожалуйста, как можно просто запросить у источника названия столбцов таблицы без создания дополнительного столбца? Вы создавали столбец, т.к. потом Вам нужно было с ним работать. У меня же очень простая задача — мне лишь нужно загрузить с сайта то количество столбцов с данными, которое имеется по запрашиваемому тикеру (компании). Помогите, пожалуйста. Я попыталась самостоятельно переписать запрос, но выдается ошибка Аргументы 2 были переданы функции, которая ожидает 1.

let 
Источник = Web.Page(Web.Contents("https://www.gurufocus.com/financials/" & Excel.CurrentWorkbook()[Content][Тикер])),
Data1 = Источник[Data],
ColNames = Table.ColumnNames(Data1, type list),
#"Измененный тип" = Table.TransformColumnTypes(Data1,ColNames)
in
#"Измененный тип

Название: Re:Запрос Power Query для таблицы с динамическим количеством столбцов
Отправлено: Дмитрий Щербаков(The_Prist) от 24.08.2017, 18:01:25

Вы бы хоть чуточку объяснили чего хотите.
Ошибку явно выдает на строке:
#"Измененный тип" = Table.TransformColumnTypes(Data1,ColNames)
Вы понимаете что она делает? Она изменяет типы данных для столбцов. Как правило этот шаг PQ добавляет автоматом и не всегда вообще нужен. И выглядеть этот шаг должен не так, как указано у Вас — синтаксис хромает. Сравните хотя бы со своим кодом из первого сообщения.
Вам для получения заголовков достаточно этой строки:
ColNames = Table.ColumnNames(Data1, type list),
Она как раз и содержит все заголовки таблицы источника.
А далее её надо правильно применять в зависимости от действий. А вот что это за действия я не знаю, следовательно подсказать ничего не могу. В Вашем первом сообщении нет и намека на необходимость использования динамических заголовков, т.к. данные все равно текстовые создаются.

Название: Re:Запрос Power Query для таблицы с динамическим количеством столбцов
Отправлено: markiza от 24.08.2017, 18:32:33

Да, действительно, этот шаг создался автоматически. Еще раз опишу задачу. Я обращаюсь к одной определенной таблице на сайте, она содержит массу финансовых показателей за разные периоды времени. Каждый раз я запрашиваю данные по разным компаниям и количество столбцов может отличаться, т.к. у каких-то компаний данные могут быть за меньшее, чем у других, количество периодов. Названия столбцов тоже могут отличаться. Мне нужно запросить у источника перечень столбцов и загрузить в Excel данные по всем строкам всех столбцов таблицы. Список заголовков есть, а как мне обратиться к источнику, чтобы загрузить данные?

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

Название: Re:Запрос Power Query для таблицы с динамическим количеством столбцов
Отправлено: Дмитрий Щербаков(The_Prist) от 24.08.2017, 18:59:11

Мне нужно запросить у источника перечень столбцов и загрузить в Excel данные по всем строкам всех столбцов таблицы

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

let 
Источник = Web.Page(Web.Contents("https://www.gurufocus.com/financials/" & Excel.CurrentWorkbook()[Content][Тикер])),
Data1 = Источник[Data],
#"Пониженные заголовки" = Table.DemoteHeaders(Data1),
#"Пониженные заголовки1" = Table.DemoteHeaders(#"Пониженные заголовки"),
#"Удаленные верхние строки" = Table.Skip(#"Пониженные заголовки1",2),
#"Повышенные заголовки" = Table.PromoteHeaders(#"Удаленные верхние строки")
in
#"Повышенные заголовки"

Просто пропускаем шаг с изменением типа данных.

Название: Re:Запрос Power Query для таблицы с динамическим количеством столбцов
Отправлено: markiza от 25.08.2017, 18:29:03

Использование пользовательских функций

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

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

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

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

Создание пользовательской функции из ссылки на таблицу

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

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

Начните с использования соединителя папок, чтобы перейти к папке, в которой находятся файлы, и выберите «Преобразовать данные » или «Изменить«. Это позволит вам воспользоваться интерфейсом Power Query. Щелкните правой кнопкой мыши двоичное значение в поле «Содержимое» и выберите параметр «Добавить как новый запрос«. В этом примере вы увидите, что выбор был сделан для первого файла из списка, который будет файлом в апреле 2019.csv.

Выбор файла, который должен быть примером файла.

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

Пример запроса к файлу.

Создайте новый параметр с именем параметра файла. Используйте запрос примера файла в качестве текущего значения, как показано на следующем рисунке.

Параметр файла.

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

Пользовательские функции можно создавать с помощью любого типа параметров. Для любой пользовательской функции не требуется использовать двоичный файл в качестве параметра.

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

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

Щелкните правой кнопкой мыши параметр файла в области «Запросы«. Выберите параметр «Ссылка«.

Ссылка на параметр файла.

Переименуйте только что созданный запрос из параметра файла (2) в преобразование примера файла.

Переименованный файл преобразования запроса.

Щелкните правой кнопкой мыши этот новый запрос преобразования примера файла и выберите параметр «Создать функцию «.

Создайте функцию из примера файла преобразования.

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

Создайте окно функции для файла преобразования.

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

  • Все параметры, на которые ссылались в запросе на образец файла преобразования.
  • Запрос примера файла преобразования, известный как пример запроса.
  • Созданная функция, в данном случае файл преобразования.

Группа функций.

Применение преобразований к образцу запроса

Создав новую функцию, выберите запрос с именем «Преобразование примера файла«. Этот запрос теперь связан с функцией преобразования файлов , поэтому любые изменения, внесенные в этот запрос, будут отражены в функции. Это то, что называется понятием примера запроса, связанного с функцией.

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

Интерпретируйте двоичный файл как CSV.

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

Пример данных CSV.

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

Удалите верхние строки из примера файла преобразования.

    Удалите первые четыре строки. Это действие позволит избавиться от строк, которые считаются частью раздела заголовка файла.

Примечание. Чтобы узнать больше о том, как удалить строки или отфильтровать таблицу по позиции строки, перейдите к разделу «Фильтр по позиции строки».

Используйте первую строку в качестве заголовков.

  • Повышение уровня заголовков— заголовки для конечной таблицы теперь находятся в первой строке таблицы. Их можно повысить, как показано на следующем изображении.
  • Power Query по умолчанию автоматически добавит новый шаг «Измененный тип » после продвижения заголовков столбцов, которые автоматически будут обнаруживать типы данных для каждого столбца. Запрос примера файла преобразования будет выглядеть следующим образом.

    Дополнительные сведения о повышении и понижении заголовков см. в разделе «Повышение или понижение заголовков столбцов».

    Окончательный пример запроса преобразования.

    Функция файла преобразования зависит от шагов, выполняемых в запросе на пример файла преобразования. Однако если вы попытаетесь вручную изменить код для функции преобразования файлов , вы будете приветствовать предупреждение, которое считывает The definition of the function ‘Transform file’ is updated whenever query ‘Transform Sample file’ is updated. However, updates will stop if you directly modify function ‘Transform file’.

    Вызов пользовательской функции в качестве нового столбца

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

    Нажмите кнопку настраиваемой функции в меню

    После нажатия кнопки «ОК» будет создан новый столбец с именем выходной таблицы . Этот столбец содержит значения таблицы в своих ячейках, как показано на следующем рисунке. Для простоты удалите все столбцы из этой таблицы, кроме имени и выходной таблицы.

    Вызываемая пользовательская функция.

    Чтобы узнать больше о выборе или удалении столбцов из таблицы, перейдите к разделу «Выбор или удаление столбцов».

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

    Разверните столбец выходной таблицы.

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

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

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

    Мы рекомендуем также ознакомиться со статьей об обзоре файлов объединения и объединить CSV-файлы , чтобы более подробно понять, как работает взаимодействие с файлами в Power Query и роль, которую играют пользовательские функции.

    Добавление нового параметра в существующую пользовательскую функцию

    Представьте, что есть новое требование на основе того, что вы создали. Новое требование требует, чтобы перед объединением файлов отфильтровывали данные внутри них, чтобы получить только строки, в которых страна равна Панаме.

    Чтобы сделать это требование, создайте новый параметр с именем Market с текстовым типом данных. В поле «Текущее значение» введите значение Панама.

    Новый параметр.

    В этом новом параметре выберите запрос «Преобразовать пример файла » и отфильтруйте поле «Страна » с помощью значения из параметра Market .

    Фильтруйте столбец

    Дополнительные сведения о том, как фильтровать столбцы по значениям, перейдите к разделу «Фильтрация значений».

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

    Функция обновлена с двумя параметрами.

    Но запрос CSV-файлов содержит знак предупреждения рядом с ним. Теперь, когда функция была обновлена, требуется два параметра. Таким образом, шаг, в котором вызывается функция, приводит к ошибкам, так как только один из аргументов был передан в функцию преобразования файла во время шага вызываемой пользовательской функции .

    Ошибки после обновления функции.

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

    Обновление аргументов настраиваемой функции.

    Теперь вы можете проверка запрос, чтобы проверить, что только строки, в которых страна равна Панаме, отображаются в окончательном результирующем наборе запроса CSV-файлов.

    Итоговая таблица выходных данных после обновления аргументов.

    Создание пользовательской функции из повторно используемых фрагментов логики

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

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

    кодом
    PTY-CM1090-LAX
    LAX-CM701-PTY
    PTY-CM4441-MIA
    MIA-UA1257-LAX
    LAX-XY2842-MIA

    Список кодов.

    Сначала у вас есть параметр, имеющий значение, которое служит примером. В этом случае это будет значение PTY-CM1090-LAX.

    Пример значения кода параметра.

    В этом параметре создается новый запрос, в котором применяются необходимые преобразования. В этом случае необходимо разделить код PTY-CM1090-LAX на несколько компонентов:

    Пример запроса преобразования.

    Ниже показан код M для этого набора преобразований.

    let Source = code, SplitValues = Text.Split( Source, "-"), CreateRow = [Origin= SplitValues, Destination= SplitValues, Airline=Text.Start( SplitValues,2), FlightID= Text.End( SplitValues, Text.Length( SplitValues ) - 2) ], RowToTable = Table.FromRecords( < CreateRow >), #"Changed Type" = Table.TransformColumnTypes(RowToTable,, , , >) in #"Changed Type" 

    Дополнительные сведения о языке формул Power Query M см. на языке формул Power Query M.

    Затем этот запрос можно преобразовать в функцию, щелкнув правой кнопкой мыши запрос и выбрав «Создать функцию«. Наконец, можно вызвать пользовательскую функцию в любой из запросов или значений, как показано на следующем рисунке.

    Вызов пользовательской функции.

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

    Окончательный выходной запрос после вызова пользовательской функции.

    Обратная связь

    Были ли сведения на этой странице полезными?

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

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

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

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

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

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

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

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

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

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

    Нажмите кнопку ошибки.

    Не удается найти источник — DataSource.Error

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

    Пример. У вас есть запрос из текстовой плитки, которая была размещена на диске D и создана пользователем A. Пользователь A предоставляет общий доступ к запросу с пользователем B, у которого нет доступа к диску D. Когда этот пользователь пытается выполнить запрос, он получает dataSource.Error , так как в среде нет диска D.

    Ошибка источника данных не удалось найти файл, так как в текущей среде нет диска D.

    Возможные решения. Вы можете изменить путь к файлу текстового файла на путь, к которому у обоих пользователей есть доступ. Как пользователь B, вы можете изменить путь к файлу, чтобы быть локальной копией одного текстового файла. Если кнопка «Изменить параметры» доступна в области ошибок, ее можно выбрать и изменить путь к файлу.

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

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

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

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

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

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

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

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

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

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

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

    Отображение сообщения об ошибке путем выбора пробелов в ячейке таблицы, содержащей ошибку.

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

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

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

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

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

    Удаление ошибок

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

    Кнопка

    Результат этой операции даст вам таблицу, которую вы ищете.

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

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

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

    Кнопка

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

    Диалоговое окно

    Результат этой операции даст вам таблицу, которую вы ищете.

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

    Сохранение ошибок

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

    Кнопка

    Результат этой операции даст вам таблицу, которую вы ищете.

    Окончательная таблица, которая сохраняет только строки, содержащие ошибки.

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

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

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

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

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

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

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

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

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

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

    Ошибка выражения в области ошибок, вызванная попыткой применить оператор And к тексту и числу из столбца Sales.

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

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

    Вложенные значения, отображаемые как ошибки

    При работе с данными, содержащими вложенные структурированные значения (например, таблицы, списки или записи), иногда возникает следующая ошибка:

    Произошла ошибка для вложенных значений, активированных брандмауэром формулы.

    Expression.Error: We cannot return a value of type in this context Details: In the past we would have returned a text value of , but we now return this error. Please see https://go.microsoft.com/fwlink/?linkid=2099726 for more information. 

    Эти ошибки обычно возникают по двум причинам:

    • Когда брандмауэр конфиденциальности данных буферизирует источник данных, вложенные не скалярные значения автоматически преобразуются в ошибки.
    • Если столбец, определенный с Any типом данных, содержит не скалярные значения, такие значения будут сообщаться как ошибки во время загрузки (например, в книге в Excel или модели данных в Power BI Desktop).

    Возможные решения:

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

    Обратная связь

    Были ли сведения на этой странице полезными?

    Expression.Error: 2 arguments were passed to a function which expects 1

    I have been trying to build an automated vba tool to pull API data but kept having below error from Power Query. Expression.Error: 2 arguments were passed to a function which expects 1. Details: Pattern= Arguments=[List] Kept looking up the solution but could not really find the right reason. Here is my code as below

    let Parameter = Excel.CurrentWorkbook()[Content], URL= Parameter[Column1], Source = Json.Document(Web.Page(Web.Contents(URL), [ Headers =[#"Authorization"="Basic ENCODE64PASSWORDS"]])), #"Converted to Table" = Record.ToTable(Source), Value = #"Converted to Table"[Value], results = Value[results], #"Converted to Table1" = Table.FromList(results, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table1", "Column1", , ), #"Filtered Rows" = Table.SelectRows(#"Expanded Column1", each ([upsertable] = true)), #"Sorted Rows" = Table.Sort(#"Filtered Rows",>) in #"Sorted Rows" 

    I am no professional coder but just started to feel interested in coding world. This code is mostly just mixture of copy and paste all over the web haha So please understand im only a beginner with a baby step and forgive my ignorance if this is actually a simple matter..or if I dont really understand your reply well..

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *