Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
В POWER BI не отрабатывает функция созданная для консолидации файлов, Необходимо собрать файлы из папок а затем каждый лист и преобразовывать по разработанной формуле
 
Добрый день. Внизу приведен код функции, которая должна работать для консолидации и сборке информации со всех листов в указанной папке.  
Однако когда я пытаюсь вызвать функцию в тестовом режиме,  она не отрабатывает а выдает ошибку:

В запросе "" произошла ошибка. Expression.Error: Ключу не соответствует ни одна строка в таблице.Подробные сведения:
   Key=Record
   Table=Table
Кто то видит в коде ошибку???

(File as text, SheetName as text)=>

let
   Источник = Excel.Workbook(File.Contents(File), null, true),
   Sheet = Источник {[Item=SheetName,Kind="Sheet"]}[Data],
   #"Объединенные столбцы" = Table.CombineColumns(Sheet,{"Column3", "Column11", "Column19", "Column27", "Column35", "Column43", "Column51", "Column59", "Column67", "Column75", "Column83", "Column91"},Combiner.CombineTextByDelimiter(":", QuoteStyle.None),"План, шт"),
   #"Объединенные столбцы1" = Table.CombineColumns(#"Объединенные столбцы",{"Column4", "Column12", "Column20", "Column28", "Column36", "Column44", "Column52", "Column60", "Column68", "Column76", "Column84", "Column92"},Combiner.CombineTextByDelimiter(":", QuoteStyle.None),"Трудоемкость, н/ч"),
   #"Объединенные столбцы2" = Table.CombineColumns(#"Объединенные столбцы1",{"Column5", "Column13", "Column21", "Column29", "Column37", "Column45", "Column53", "Column61", "Column69", "Column77", "Column85", "Column93"},Combiner.CombineTextByDelimiter(":", QuoteStyle.None),"План, н/ч"),
   #"Объединенные столбцы3" = Table.CombineColumns(#"Объединенные столбцы2",{"Column6", "Column14", "Column22", "Column30", "Column38", "Column46", "Column54", "Column62", "Column70", "Column78", "Column86", "Column94"},Combiner.CombineTextByDelimiter(":", QuoteStyle.None),"Цена, грн"),
   #"Объединенные столбцы4" = Table.CombineColumns(#"Объединенные столбцы3",{"Column7", "Column15", "Column23", "Column31", "Column39", "Column47", "Column55", "Column63", "Column71", "Column79", "Column87", "Column95"},Combiner.CombineTextByDelimiter(":", QuoteStyle.None),"Сумма, т.грн"),
   #"Объединенные столбцы5" = Table.CombineColumns(#"Объединенные столбцы4",{"Column8", "Column16", "Column24", "Column32", "Column40", "Column48", "Column56", "Column64", "Column72", "Column80", "Column88", "Column96"},Combiner.CombineTextByDelimiter(":", QuoteStyle.None),"Факт, шт"),
   #"Объединенные столбцы6" = Table.CombineColumns(#"Объединенные столбцы5",{"Column9", "Column17", "Column25", "Column33", "Column41", "Column49", "Column57", "Column65", "Column73", "Column81", "Column89", "Column97"},Combiner.CombineTextByDelimiter(":", QuoteStyle.None),"Факт, н/ч"),
   #"Объединенные столбцы7" = Table.CombineColumns(#"Объединенные столбцы6",{"Column10", "Column18", "Column26", "Column34", "Column42", "Column50", "Column58", "Column66", "Column74", "Column82", "Column90", "Column98"},Combiner.CombineTextByDelimiter(":", QuoteStyle.None),"Факт, т.грн"),
   #"Несвернутые столбцы" = Table.UnpivotOtherColumns(#"Объединенные столбцы7", {"Column1", "Column2"}, "Атрибут", "Значение"),
   #"Разделить столбец разделителем" = Table.SplitColumn(#"Несвернутые столбцы","Значение",Splitter.SplitTextByDelimiter(":"),{"Значение.1", "Значение.2", "Значение.3", "Значение.4", "Значение.5", "Значение.6", "Значение.7", "Значение.8", "Значение.9", "Значение.10", "Значение.11", "Значение.12"}),
   #"Повышенные заголовки" = Table.PromoteHeaders(#"Разделить столбец разделителем"),
   #"Строки с применным фильтром" = Table.SelectRows(#"Повышенные заголовки", each ([Column2] <> null and [Column2] <> "Деталь")),
   #"Несвернутые столбцы1" = Table.UnpivotOtherColumns(#"Строки с применным фильтром", {"Column1", "Column2", "План, шт"}, "Атрибут", "Значение"),
   #"Переименованные столбцы" = Table.RenameColumns(#"Несвернутые столбцы1",{{"Column1", "ЦЕХ"}, {"Column2", "ДЕТАЛЬ"}, {"План, шт", "АТРИБУТ"}, {"Атрибут", "МЕСЯЦ"}, {"Значение", "ЗНАЧЕНИЕ"}}),
   #"Измененный тип" = Table.TransformColumnTypes(#"Переименованные столбцы",{{"ЗНАЧЕНИЕ", type number}, {"МЕСЯЦ", type date}})
in
   #"Измененный тип"
 
Добрый день. ИМХО Вы ошиблись форумом, так как представленный код - код на языке программирования R (который используется в Power BI), не VBA.
Конь, просто конь.
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
 
Ёк-Мок, дело в том что poewr BI это тот  же power query который встроен в excel, по этому уже пора начинать осваивать и формулы DAX, и М языки программирования иначе можно оказаться за бортом. И модераторы молчат, так что вроде туда.  
Изменено: Oleg dashenko - 23 Фев 2018 14:35:02
 
off так я и не отказываюсь от их изучения, я говорю о том, что разводной ключ не ищут в аптеке (8
пример: в AutoCAD можно подтянуть данные из Excel'я, но данную проблему нужно решать не на форуме по Excel'ю, а на форуме по AutoCAD'у
всё сказанное ИМХО
Изменено: Ёк-Мок - 23 Фев 2018 14:40:00
Конь, просто конь.
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
 
На форуме очень много спецов по DAX, мне лично много помогли, пока другим форумом не пользуюсь, этого хватает. Так что зря Вы так.  
 
Добрый день, проверьте все ли столбцы (в объединениях) есть в источнике. или как вариант из функции сделайте простой запрос и посмотрите на каком шаге возникает ошибка, так проще будет понять....
Изменено: Илья Демид - 23 Фев 2018 15:01:02
 
Цитата
Илья Демид написал:
из функции сделайте простой запрос и
А как это сделать?
 
Сори, отходил.
Код
УДАЛЯЕМ   (File as text, SheetName as text)=>

let
   Источник = Excel.Workbook(File.Contents(ВМЕСТО "File" ПОЛНЫЙ ПУТЬ К ФАЙЛУ В "КАВЫЧКАХ"), null, true),
   Sheet = Источник {[Item=SheetName,Kind="Sheet"]}[Data],
 
Илья Демид, Разобрался, Вы были прав, проверил, нашел ошибку, теперь все рабюотает
 
Столкнулся с такое же проблемой. Oleg dashenko, подскажите, в чем была проблема?
 
Доброго дня, не Олег, но все же, в моей практике чаще всего такая ошибка возникает, когда запрос пытается вытащить данные из листа, и не находит имени листа указанного в запросе. Если брать пример от ТС, то это вот эта строка:
Код
Sheet = Источник {[Item=SheetName, Kind="Sheet"]}[Data],

здесь в качестве имени листа используется параметр SheetName, который передается в функцию вместе с путем к файлу.
 
Разобрался, проблема была в названии листа.
Страницы: 1
Читают тему (гостей: 1)
Наверх