Страницы: 1
RSS
Сортировка значений по нескольким колонкам с сохранением предыдущей сортировки в редакторе Power Query
 
Добрый день!
Есть постоянно обновляемая таблица с большим количеством значений. Необходимо в Power Query настроить сортировку трех колонок (Дата, Оператор, Время) таким образом, чтоб они были взаимосвязаны (т.е изначально данные сортируются по Дате, затем отсортированные данные сортируются по Оператору, и затем по Времени) и при добавлении новых исходных данных сортировка не сбивалась.
Подскажите, пожалуйста, как это сделать?
Изменено: Яна Брюханова - 03.08.2020 14:23:05
 
Яна Брюханова,Добрый день! А у Вас так не работает?
 
Изменено: vlad000 - 03.08.2020 15:02:53
 
Цитата
vlad000 написал:
А у Вас так не работает?
пробовала, но после того как подгружаю новые файлы, эта фильтрация слетает
 
Доброе время суток
Цитата
Яна Брюханова написал:
но после того как подгружаю новые файлы, эта фильтрация слетает
В таком случае требуется пример - доказательство. Некий запрос, загружающий несколько файлов после загрузки которых сортировка выполняется в запросе Power Query правильно. И несколько файлов, добавление которых в загрузку приводит к нарушению сортировки.
 
Цитата
Андрей VG написал:
В таком случае требуется пример - доказательство. Некий запрос, загружающий несколько файлов после загрузки которых сортировка выполняется в запросе Power Query правильно. И несколько файлов, добавление которых в загрузку приводит к нарушению сортировки.
Изменено: Яна Брюханова - 03.08.2020 16:09:11
 
Цитата
Андрей VG написал:
В таком случае требуется пример - доказательство. Некий запрос, загружающий несколько файлов после загрузки которых сортировка выполняется в запросе Power Query правильно. И несколько файлов, добавление которых в загрузку приводит к нарушению сортировки.
 
Яна Брюханова, вам следующий раз результат тоже выдавать в стиле - Ладно! И так сойдёт? Где дата и время в результате объединения фалов? В чём проблема приложить тексты запросов, а не картинки?
Код
let
    Source = Folder.Files("c:\temp"),
    neededFiles = Table.SelectRows(Source, each Text.Lower([Extension]) = ".xls" and not(Text.StartsWith([Name], "~$"))),
    contentToTable = Table.TransformColumns(neededFiles[[Name], [Content]], {"Content", each
        Excel.Workbook(_, true, false){0}[Data]
    }),
    expandContent = Table.ExpandTableColumn(contentToTable, "Content", {"Тема предложения", "Предложение", "Код сессии", "CONTRAGENTID", "BUSINESSPARTNERID", "Оператор", "Начало", "Окончание", "Статус", "Перезвонить"}),
    setOutputOrder = Table.Sort(expandContent,{{"Начало", Order.Ascending}, {"Оператор", Order.Ascending}, {"Окончание", Order.Ascending}})
in
    setOutputOrder

Вполне себе сортирует с добавлением файла.
 
Цитата
Андрей VG написал:
Андрей VG
Андрей, я изначально сделала запрос на объединение файлов

(filename)=>
let
   Источник = Excel.Workbook(File.Contents(filename), null, true),
   Лист2 = Источник{[Name="Лист1"]}[Data],
   #"Повышенные заголовки" = Table.PromoteHeaders(Лист2, [PromoteAllScalars=true]),
   #"Измененный тип" = Table.TransformColumnTypes(#"Повышенные заголовки",{{"Тема предложения", type text}, {"Предложение", type text}, {"Код сессии", Int64.Type}, {"CONTRAGENTID", Int64.Type}, {"BUSINESSPARTNERID", type number}, {"ФИО", type text}, {"ИНН", type number}, {"Оператор", type text}, {"Начало", type datetime}, {"Окончание", type datetime}, {"Телефон", type number}, {"Статус", type text}, {"Перезвонить", type text}, {"Придет", type date}, {"ТОБО", type text}, {"Замечание", type text}})
in
   #"Измененный тип"

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

let
   Источник = Folder.Files("M:\307030\Telemarketing\Дашборд\Исходник"),
   #"Добавлен пользовательский объект" = Table.AddColumn(Источник, "Пользовательская", each getData([Folder Path]&[Name])),
   #"Удаленные столбцы" = Table.RemoveColumns(#"Добавлен пользовательский объект",{"Content", "Name", "Extension", "Date accessed", "Date modified", "Date created", "Attributes", "Folder Path"}),
   Source = Table.ExpandTableColumn(#"Удаленные столбцы", "Пользовательская", {"Тема предложения", "Предложение", "Код сессии", "CONTRAGENTID", "BUSINESSPARTNERID", "ФИО", "ИНН", "Оператор", "Начало", "Окончание", "Телефон", "Статус", "Перезвонить", "Придет", "ТОБО", "Замечание"}, {"Тема предложения", "Предложение", "Код сессии", "CONTRAGENTID", "BUSINESSPARTNERID", "ФИО", "ИНН", "Оператор", "Начало", "Окончание", "Телефон", "Статус", "Перезвонить", "Придет", "ТОБО", "Замечание"}),
   appendShift = Table.FromColumns(Table.ToColumns(Source) & {{0.85060185185185178} & List.RemoveLastN(Source[Окончание], 1)}),
   #"Переименованные столбцы" = Table.RenameColumns(appendShift,{{"Column1", "Тема предложения"}, {"Column2", "Предложение"}, {"Column3", "Код сессии"}, {"Column4", "CONTRAGENTID"}, {"Column5", "BUSINESSPARTNERID"}, {"Column6", "ФИО"}, {"Column7", "ИНН"}, {"Column8", "Оператор"}, {"Column9", "Начало"}, {"Column10", "Окончание"}, {"Column11", "Телефон"}, {"Column12", "Статус"}, {"Column13", "Перезвонить"}, {"Column14", "Придет"}, {"Column15", "ТОБО"}, {"Column16", "Замечание"}, {"Column17", "Пользовательская"}}),
   #"Дублированный столбец" = Table.DuplicateColumn(#"Переименованные столбцы", "Начало", "Копия Начало"),
   #"Извлеченная дата" = Table.TransformColumns(#"Дублированный столбец",{{"Копия Начало", DateTime.Date, type date}}),
   #"Переименованные столбцы1" = Table.RenameColumns(#"Извлеченная дата",{{"Копия Начало", "Дата"}}),
   #"Переупорядоченные столбцы" = Table.ReorderColumns(#"Переименованные столбцы1",{"Дата", "Тема предложения", "Предложение", "Код сессии", "CONTRAGENTID", "BUSINESSPARTNERID", "ФИО", "ИНН", "Оператор", "Начало", "Окончание", "Телефон", "Статус", "Перезвонить", "Придет", "ТОБО", "Замечание", "Пользовательская"}),
   #"Дублированный столбец1" = Table.DuplicateColumn(#"Переупорядоченные столбцы", "Дата", "Копия Дата"),
   #"Извлеченное название месяца" = Table.TransformColumns(#"Дублированный столбец1", {{"Копия Дата", each Date.MonthName(_), type text}}),
   #"Переименованные столбцы2" = Table.RenameColumns(#"Извлеченное название месяца",{{"Копия Дата", "Месяц"}}),
   #"Переупорядоченные столбцы1" = Table.ReorderColumns(#"Переименованные столбцы2",{"Месяц", "Дата", "Тема предложения", "Предложение", "Код сессии", "CONTRAGENTID", "BUSINESSPARTNERID", "ФИО", "ИНН", "Оператор", "Начало", "Окончание", "Телефон", "Статус", "Перезвонить", "Придет", "ТОБО", "Замечание", "Пользовательская"}),
   #"Дублированный столбец2" = Table.DuplicateColumn(#"Переупорядоченные столбцы1", "Дата", "Копия Дата"),
   #"Извлеченный год" = Table.TransformColumns(#"Дублированный столбец2",{{"Копия Дата", Date.Year, Int64.Type}}),
   #"Переименованные столбцы3" = Table.RenameColumns(#"Извлеченный год",{{"Копия Дата", "Год"}}),
   #"Переупорядоченные столбцы2" = Table.ReorderColumns(#"Переименованные столбцы3",{"Год", "Месяц", "Дата", "Тема предложения", "Предложение", "Код сессии", "CONTRAGENTID", "BUSINESSPARTNERID", "ФИО", "ИНН", "Оператор", "Начало", "Окончание", "Телефон", "Статус", "Перезвонить", "Придет", "ТОБО", "Замечание", "Пользовательская"}),
   #"Измененный тип" = Table.TransformColumnTypes(#"Переупорядоченные столбцы2",{{"Начало", type time}, {"Окончание", type time}, {"Пользовательская", type time}}),
   #"Добавлен пользовательский объект1" = Table.AddColumn(#"Измененный тип", "Пользовательская.1", each (if[Начало]>[Пользовательская] then [Начало]-[Пользовательская] else null)),
   #"Разделить столбец по разделителю" = Table.SplitColumn(Table.TransformColumnTypes(#"Добавлен пользовательский объект1", {{"Пользовательская.1", type text}}, "ru-RU"), "Пользовательская.1", Splitter.SplitTextByDelimiter(".", QuoteStyle.Csv), {"Пользовательская.1.1", "Пользовательская.1.2", "Пользовательская.1.3"}),
   #"Измененный тип1" = Table.TransformColumnTypes(#"Разделить столбец по разделителю",{{"Пользовательская.1.1", type time}, {"Пользовательская.1.2", type text}, {"Пользовательская.1.3", type text}}),
   #"Удаленные столбцы1" = Table.RemoveColumns(#"Измененный тип1",{"Пользовательская.1.2", "Пользовательская.1.3"}),
   #"Замененное значение" = Table.ReplaceValue(#"Удаленные столбцы1",null,#time(0, 0, 0),Replacer.ReplaceValue,{"Пользовательская.1.1"}),
   #"Переименованные столбцы4" = Table.RenameColumns(#"Замененное значение",{{"Пользовательская.1.1", "Время перехода"}}),
   #"Переупорядоченные столбцы3" = Table.ReorderColumns(#"Переименованные столбцы4",{"Год", "Месяц", "Дата", "Тема предложения", "Предложение", "Код сессии", "CONTRAGENTID", "BUSINESSPARTNERID", "ФИО", "ИНН", "Оператор", "Начало", "Окончание", "Время перехода", "Телефон", "Статус", "Перезвонить", "Придет", "ТОБО", "Замечание", "Пользовательская"}),
   #"Добавлен пользовательский объект2" = Table.AddColumn(#"Переупорядоченные столбцы3", "Длительность", each [Окончание]-[Начало]),
   #"Разделить столбец по разделителю1" = Table.SplitColumn(Table.TransformColumnTypes(#"Добавлен пользовательский объект2", {{"Длительность", type text}}, "ru-RU"), "Длительность", Splitter.SplitTextByDelimiter(".", QuoteStyle.Csv), {"Длительность.1", "Длительность.2", "Длительность.3"}),
   #"Измененный тип2" = Table.TransformColumnTypes(#"Разделить столбец по разделителю1",{{"Длительность.1", type time}, {"Длительность.2", type text}, {"Длительность.3", type text}}),
   #"Удаленные столбцы2" = Table.RemoveColumns(#"Измененный тип2",{"Длительность.2", "Длительность.3"}),
   #"Переименованные столбцы5" = Table.RenameColumns(#"Удаленные столбцы2",{{"Длительность.1", "Длительность"}}),
   #"Переупорядоченные столбцы4" = Table.ReorderColumns(#"Переименованные столбцы5",{"Год", "Месяц", "Дата", "Тема предложения", "Предложение", "Код сессии", "CONTRAGENTID", "BUSINESSPARTNERID", "ФИО", "ИНН", "Оператор", "Начало", "Окончание", "Длительность", "Время перехода", "Телефон", "Статус", "Перезвонить", "Придет", "ТОБО", "Замечание", "Пользовательская"}),
   #"Условный столбец добавлен" = Table.AddColumn(#"Переупорядоченные столбцы4", "Кол-во звонков", each if [Начало] = [Начало] then 1 else null),
   #"Условный столбец добавлен1" = Table.AddColumn(#"Условный столбец добавлен", "Кол-во дозвонов", each if Text.Contains([Статус], "Актуальный") then 1 else if Text.Contains([Статус], "Не определился") then 1 else if Text.Contains([Статус], "Отказался") then 1 else if Text.Contains([Статус], "Перезвонить позже") then 1 else if Text.Contains([Статус], "Согласился") then 1 else 0),
   #"Условный столбец добавлен2" = Table.AddColumn(#"Условный столбец добавлен1", "Кол-во попыток", each if Text.Contains([Статус], "Не звонить по этой теме") then 1 else if Text.Contains([Статус], "Не принадлежит") then 1 else if Text.Contains([Статус], "Не удалось дозвониться") then 1 else if Text.Contains([Статус], "Недоступен") then 1 else 0),
   #"Условный столбец добавлен3" = Table.AddColumn(#"Условный столбец добавлен2", "Длительность дозвонов", each if [#"Кол-во дозвонов"] = 1 then [Длительность] else null),
   #"Измененный тип3" = Table.TransformColumnTypes(#"Условный столбец добавлен3",{{"Длительность дозвонов", type time}}),
   #"Условный столбец добавлен4" = Table.AddColumn(#"Измененный тип3", "Длительность попыток", each if [#"Кол-во попыток"] = 1 then [Длительность] else null),
   #"Измененный тип4" = Table.TransformColumnTypes(#"Условный столбец добавлен4",{{"Длительность попыток", type time}}),
   #"Переупорядоченные столбцы5" = Table.ReorderColumns(#"Измененный тип4",{"Год", "Месяц", "Дата", "Тема предложения", "Предложение", "Код сессии", "CONTRAGENTID", "BUSINESSPARTNERID", "ФИО", "ИНН", "Оператор", "Начало", "Окончание", "Длительность", "Время перехода", "Кол-во дозвонов", "Длительность дозвонов", "Кол-во попыток", "Длительность попыток", "Телефон", "Статус", "Перезвонить", "Придет", "ТОБО", "Замечание", "Пользовательская", "Кол-во звонков"}),
   #"Сортированные строки" = Table.Sort(#"Переупорядоченные столбцы5",{{"Дата", Order.Ascending}, {"Оператор", Order.Ascending}, {"Начало", Order.Ascending}}),
   #"Измененный тип5" = Table.TransformColumnTypes(#"Сортированные строки",{{"Кол-во дозвонов", Int64.Type}, {"Кол-во попыток", Int64.Type}, {"Кол-во звонков", Int64.Type}})
in
   #"Измененный тип5"
Страницы: 1
Наверх