Страницы: 1
RSS
Автоматическое объединение столбцов по названию(маске). Источник папка. Power Query. PBI
 
Всем добрый день.

Ситуация, в общем, такая, необходимо автоматизировать обновление отчета в PBI путем актуализации источника (папка) в PQ. Есть цех на производстве, который разбит на "Зоны", у которых есть время входа изделия в зону и время выхода изделия.

В папку планируется наполнять новыми планами, структура файла будет неизменной, но может меняться количество зон как в плюс, так и в минус. Развертывание файлов уже настроено без привязки к названиям столбцов и при изменении добавляются автоматически. Задача следующая: необходимо автоматически объединять данные столбцы зон(время входа и время выхода) для дальнейшей транспонировки таблицы. Необходимо исключить ручное объединение(по разделителю --, и названием поля взятым до разделителя) этих столбцов.


Пример во вложении, от начального вида таблицы до конечного(транспонированного), необходимо получить промежуточный результат
Изменено: romka_n1 - 20.02.2020 17:50:43
 
Цитата
romka_n1 написал:
Код запроса
В вашем примере нет никаких запросов.
 
Цитата
Murderface_ написал:
В вашем примере нет никаких запросов.
Пример собран руками, а код скопирован из Power BI.
 
romka_n1, у вас в Power BI есть еще как минимум функция getData, которая преобразует данные из исходника.
 
Цитата
Murderface_ написал:
у вас в Power BI есть еще как минимум функция getData
Это простая функция, с простецкими преобразованиями для файлов из папки:

Код функции getData:
= (filename) =>
let
   Источник = Excel.Workbook(File.Contents(filename), null, true),
   План_Sheet = Источник{[Item="План",Kind="Sheet"]}[Data],
   #"Повышенные заголовки" = Table.PromoteHeaders(План_Sheet, [PromoteAllScalars=true])
in
   #"Повышенные заголовки"
 
Примерно так:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Модель", "Заводской №"}, "Атрибут", "Значение"),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Unpivoted Other Columns", "Атрибут", Splitter.SplitTextByDelimiter("_", QuoteStyle.Csv), {"Атрибут.1", "Атрибут.2"}),
    #"Pivoted Column" = Table.Pivot(#"Split Column by Delimiter", List.Distinct(#"Split Column by Delimiter"[Атрибут.2]), "Атрибут.2", "Значение"),
    #"Merged Columns" = Table.CombineColumns(Table.TransformColumnTypes(#"Pivoted Column", {{"вход", type text}, {"выход", type text}}, "ru-RU"),{"вход", "выход"},Combiner.CombineTextByDelimiter("--", QuoteStyle.None),"Время")
in
    #"Merged Columns"

Все шаги "кнопочные" со стандартными названиями, руками код не дописывался.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Все шаги "кнопочные" со стандартными названиями, руками код не дописывался.
Все вроде ок, но есть одно НО, в выгрузке присутствуют записи, где зоны с пустыми значениями входа и выхода и вот их нет на конечном шаге, если все делать по Вашему коду.
 
Перед кручением проведите замену всех null на 0, а в конце обратно, тогда появятся полностью пустые строки.
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх