let hasTwoDots = (this as text) as logical => let items = Text.Split(this, ".") in List.Count(items) = 3, toTable = (this as table) as nullable table => let rowCount = Table.RowCount(this), return = if rowCount > 3 then let realTable = Table.LastN(this, rowCount - 2), result = Table.PromoteHeaders(realTable) in result else null in return, source = Excel.Workbook(File.Contents("C:UsersDesktopНовая папкаНакладная с ФЗ на Фасовку.xlsx"), false), withDates = Table.SelectRows(source, each hasTwoDots([Name]) and [Kind] = "Sheet")[[Name],[Data]], realTables = Table.TransformColumns(withDates, { {"Data", each toTable(_), type table} }), expanded = Table.ExpandTableColumn(realTables, "Data", {"Наименование продукта", "№ ТФ", "Показания ТФ", "Показания ТФ", "Готовый продукт, кг", "Готовый продукт, кг", "Итого, кг (Готовый продукт)", "Промпереработка, кг", "Разница = показания танка - ГП - промпереработка, кг", "Показания счетчика на линии фасовки, кг", "Показания счетчика на линии фасовки, кг", "Итого, кг (показание счетчика)", "Разница = показания танка - показания счетчика", "Column14"}), typed = Table.TransformColumnTypes(expanded,{{"Наименование продукта", type text}, {"№ ТФ", type any}, {"Показания ТФ", type any}, {"Показания ТФ", type any}, {"Готовый продукт, кг", type any}, {"Готовый продукт, кг", type any}, {"Итого, кг (Готовый продукт)", type any}, {"Промпереработка, кг", type any}, {"Разница = показания танка - ГП - промпереработка, кг", type any}, {"Показания счетчика на линии фасовки, кг", type any}, {"Показания счетчика на линии фасовки, кг", type any}, {"Итого, кг (показание счетчика)", type any}, {"Разница = показания танка - показания счетчика", type any}, {"Column14", type any}}) return = Table.RenameColumns(typed,{{"Name", "Дата"}}) in return
Почему в вашей итоговой таблицы не все данные, которые должны там оказаться? Вероятно вы совершили ошибку неверной фильтрации в пользовательском интерфейсе.
Text.SplitAny
List.Select
Character.FromNumber
Text.Combine
Masters,
My excel file includes data set and data dashboard which perform fine before.
Last day, I added 2 new worksheets ‘bug_trend_data’ and ‘bug_trend’ to have the combo chart.
After that, whenever I refresh the query ‘GITClean,’ the file always pop up the error message:
Expression Error: We couldn’t find an Excel Table named «Bug Trend_data!_FilterDatabase »
I have tried to redo the 2 new worksheets yet still got the same error….
Can somebody help? Will be soooooooo GRATEFUL!
My file link: https://docs.google.com/spreadsheets/d/1miuD_re55aPZUQopzzaHrBS-E3rIWBhR/edit?usp=sharing&ouid=11595…
Я пытаюсь загрузить (объединить) несколько файлов Excel в Power BI (версия от октября 2019 г.). В каждом файле всего 1 лист. Каждый лист имеет 1 диапазон, и каждый диапазон имеет одинаковую схему для всех файлов. (Хотя названия листов разные.) Имя образца листа — «200704».
Вот мои шаги:
- Получить данные папку подключить
- укажите путь к папке
- Объединить и загрузить
- выберите один из файлов в качестве моего образца файла; щелкните по имени файла как «Мой Параметр1»; нажмите ОК
После того, как я нажму «ОК», курсор немного покрутится, а затем остановится. Ничего не произошло. Итак, я перехожу в Edit Queries Edit Queries. В моем запросе данных есть предупреждающий символ, который гласит:
Произошла ошибка в запросе «Преобразовать файл». Expression.Error: ключ не соответствует ни одной строке в таблице.
Подробности: Ключ = Элемент = 200704 Вид = Лист Таблица = [Таблица]
Как исправить эту ошибку?
Если это поможет, Power BI сгенерирует для меня 5 запросов со следующей структурой:
- Преобразовать файл из данных [2]
- Вспомогательные запросы [3]
- Параметр1 (образец файла)
- Образец файла
- Преобразовать файл
- Файл образца преобразования
- Другие запросы [1]
- данные
Интересно, что если это помогает диагностировать проблему, если я установил образец файла = Первый файл или если я вручную установил образец файла для своего первого файла, в диалоговом окне выдается следующая ошибка, но она не показывает, какой запрос ошибочен. когда я пытаюсь просмотреть / отредактировать запрос.
Не удалось сохранить изменения на сервере. Возвращена ошибка: «Ошибка OLE DB или ODBC: [Expression.Error] Ключ не соответствует ни одной строке в таблице ..».
И, конечно же, когда я пытаюсь загрузить этот файл (или любой файл в папке, если на то пошло) индивидуально (через соединение Excel), он загружается успешно. Итак, что-то не так с кодом M в моем подключении к папке.
Я понял причину моей проблемы и решение. Проблема в том, что на строку в моем запросе шаблона ссылались неправильно (т. е. первичный ключ между запросом шаблона и обычным запросом неверен, и он имеет жесткое кодирование имен листов). Чтобы это исправить, мне пришлось удалить все остальные столбцы в таблице запросов шаблона, кроме столбца «Данные», как описано здесь. (Странно, что документация MS по объединению нескольких файлов Excel не обсуждает этот очень важный шаг.)
Для сравнения вот мой бывший (неверный) M-код:
Файл-образец преобразования:
let
Source = Excel.Workbook(Parameter1, null, true),
#"Sample_Sheet" = Source{[Item="sample",Kind="Sheet"]}[Data],
#"Promoted Headers" = Table.PromoteHeaders(#"Sample_Sheet", [PromoteAllScalars=true])
in
#"Promoted Headers"
Контрольная работа:
let
Source = Folder.Files("C:some folder path"),
#"Filtered Hidden Files1" = Table.SelectRows(Source, each [Attributes]?[Hidden]? <> true),
#"Invoke Custom Function1" = Table.AddColumn(#"Filtered Hidden Files1", "Transform File", each #"Transform File"([Content])),
#"Renamed Columns1" = Table.RenameColumns(#"Invoke Custom Function1", {"Name", "Source.Name"}),
#"Removed Other Columns1" = Table.SelectColumns(#"Renamed Columns1", {"Source.Name", "Transform File"}),
#"Expanded Table Column1" = Table.ExpandTableColumn(#"Removed Other Columns1", "Transform File", Table.ColumnNames(#"Transform File"(#"Sample File"))),
#"Changed Type" = Table.TransformColumnTypes(#"Expanded Table Column1",{{"Source.Name", type text}, {"ID", type text}, {"Name", type text}})
in
#"Changed Type"
А вот мой новый (правильный) код:
Файл-образец преобразования:
let
Source = Excel.Workbook(Parameter1, null, true),
#"Removed Columns" = Table.RemoveColumns(Source,{"Name", "Item", "Kind", "Hidden"}),
Data = #"Removed Columns"{0}[Data],
#"Promoted Headers" = Table.PromoteHeaders(Data, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"ID", type text}, {"Name", type text}})
in
#"Changed Type"
Контрольная работа:
let
Source = Folder.Files("C:some folder path"),
#"Filtered Hidden Files1" = Table.SelectRows(Source, each [Attributes]?[Hidden]? <> true),
#"Invoke Custom Function1" = Table.AddColumn(#"Filtered Hidden Files1", "Transform File", each #"Transform File"([Content])),
#"Renamed Columns1" = Table.RenameColumns(#"Invoke Custom Function1", {"Name", "Source.Name"}),
#"Removed Other Columns1" = Table.SelectColumns(#"Renamed Columns1", {"Source.Name", "Transform File"}),
#"Expanded Table Column1" = Table.ExpandTableColumn(#"Removed Other Columns1", "Transform File", Table.ColumnNames(#"Transform File"(#"Sample File")))
in
#"Expanded Table Column1"
Обратите внимание на шаг «Удаленные столбцы» в новом шаблоне запроса. Это «секретный соус» к ключевой проблеме. Также обратите внимание, что я сохранил все шаги по умолчанию после моего шага «Данные» (т.е. «Продвинутые заголовки» и «Измененный тип») в моем шаблоне запроса. Это потому, что все мои листы имеют одинаковую схему. Если бы это было не так, мне бы пришлось перенести эти шаги в обычный запрос.
5
skyline01
17 Окт 2019 в 17:39
Запрос Power Query — переименование колонки |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |