Страницы: 1
RSS
Максимальное значение по условию в PQ
 
Всем очередной привет!
Есть таблица, с столбцами ФИО; Атрибут (В,П); Дата. Нужно вывести:
1. максимальное значение из даты по ФИО, Атрибуту П, <сегодня
2. максимальное значение из даты по ФИО, Атрибуту В

Во вложении данное решение формулами, но ни как не получается решить через PQ, не могу понять как связать условия
 
adamm, так?
Изменено: Mershik - 27.09.2019 15:00:09
Не бойтесь совершенства. Вам его не достичь.
 
Mershik,спасибо, единственное, не совсем удачный пример я выложил, при наличии одного только В, как в примере с Абдимамыт уулу Орозалы в столбце МАКС П (Пользовательская) должен быть 0, так как по нему П не обнаружено. Но суть я вроде как уловил:
1. группировка по ФИО и Атрибуту (тут мы считаем сколько уникальных значений)
2. А далее применяем макс и мин  по двум условиям

Постараюсь допилить сам!)
Ещё раз спасибо!
 
adamm, да я скажу дилетант в PQ - методом тыка все сделал). думаю если у Вас будут сложности тут есть профи своего дела)
Не бойтесь совершенства. Вам его не достичь.
 
adamm, ИМХО, пример не очень, нет повторяющихся ФИО/Атрибута но с разными датами, такое может быть в исходнике?
Вот горшок пустой, он предмет простой...
 
PooHkrd,да может, возможен вариант два и более ФИО и  Атрибута, но разные даты
расшифрую файл
П это приезд, В это выезд, то есть приезд должен  меньше, чем отъезд, при чередовании, то есть приехал в понедельник, выехал в среду, приехал в четверг, выехал в суботту.
Может быть два ФИО и Атрибута, но даты разные, но суть одна нужно найти
Цитата
adamm написал:
1. максимальное значение из даты по ФИО, Атрибуту П, <сегодня
2. максимальное значение из даты по ФИО, Атрибуту В
Mershik, предложил вариант, пытаюсь его допилить через if
Изменено: adamm - 27.09.2019 15:43:47
 
Цитата
Mershik написал:
да я скажу дилетант в PQ - методом тыка все сделал)
Моя самооценка упала)
 
adamm, та ладно, не выдумывайте. Это случайность :)  
Не бойтесь совершенства. Вам его не достичь.
 
Если правильно понял :
Код
let
    from= Excel.CurrentWorkbook(){[Name="Объеденил_табельный_номер_данные"]}[Content][[ФИО],[Атрибут],[Дата]],
    group = Table.Group(from, {"ФИО"}, {{"Атрибуты", each _, type table}}),
    transf = Table.TransformColumns(group,{{"Атрибуты", each Table.Group(_,{"Атрибут"},{{"Даты", each _[Дата], type table}})}}),
    select = Table.TransformColumns(transf,{"Атрибуты", each [В =try List.Max(_{[Атрибут="В"]}[Даты]) otherwise "-", 
                                                              П = try List.Max(List.Select(_{[Атрибут="П"]}[Даты], 
                                                                    each _ < DateTime.LocalNow())) otherwise "-"]}),
    to = Table.ExpandRecordColumn(select, "Атрибуты", {"П", "В"})
in
    to
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, вроде как  все работает! Спасибо.
Можете расшифровать
1. группировка, что она дает, то-есть где то так скажем в подсознании функция держит количество всех значений?
2. Вот тут я вообще потерялся!)
Код
    transf = Table.TransformColumns(group,{{"Атрибуты", each Table.Group(_,{"Атрибут"},{{"Даты", each _[Дата], type table}})}}),
    select = Table.TransformColumns(transf,{"Атрибуты", each [В =try List.Max(_{[Атрибут="В"]}[Даты]) otherwise "-", 
                                                              П = try List.Max(List.Select(_{[Атрибут="П"]}[Даты], 
                                                                    each _ < DateTime.LocalNow())) otherwise "-"]}),
    to = Table.ExpandRecordColumn(select, "Атрибуты", {"П", "В"})
Изменено: adamm - 27.09.2019 16:39:49
 
adamm, выполните группировку с такими настройками:

думаю, что станет понятнее.
Вот горшок пустой, он предмет простой...
 
adamm, после группировки на каждое ФИО формируется таблица в столбце Атрибуты - дам все данные по каждому В/П
Код
transf = ... each Table.Group(_,{"Атрибут"},{{"Даты", each _[Дата] ...
каждую полученную таблицу группируем по атрибуту - получаем списки дат  отдельно для В и для П
Код
select =... each [В=..., П = ...]...
превращаем таблицы в запись из двух столбцов - В и П, где
Код
 В =try List.Max(_{[Атрибут="В"]}[Даты]) otherwise "-"
т.е максимальная дата из списка дат по атрибуту В
Код
П = try List.Max(List.Select(_{[Атрибут="П"]}[Даты], each _ < DateTime.LocalNow())) otherwise "-"
аналогично, но с проверкой на непревышение Сегодня (дата + время)
Изменено: buchlotnik - 27.09.2019 16:49:03
Соблюдение правил форума не освобождает от модераторского произвола
 
PooHkrd, buchlotnik, спасибо вам, я вроде как собака понимаю), но начинаешь разбираться с каждой строкой по отдельности, полный стопор,  нужно учить все обозначения символов, скобок...
ещё раз спасибо!
 
Цитата
adamm написал:
нужно учить все обозначения символов, скобок
свихнётесь, нужно практиковаться
Цитата
adamm написал:
разбираться с каждой строкой по отдельности
adamm, я писал под конкретную задачу, вообще же можно дробить код на блоки, например, выше написанное сводится к
Код
let
    from= Excel.CurrentWorkbook(){[Name="Объеденил_табельный_номер_данные"]}[Content],
    group = Table.Group(from, {"ФИО"}, {"Атрибуты", each ПВ(_), type table}),
    to = Table.ExpandRecordColumn(group, "Атрибуты", {"П", "В"})
in
    to
и функции "ПВ":
Код
(t)=>
let
    group = Table.Group(t,{"Атрибут"},{"Даты", each _[Дата], type table}),
    select = [    В =try List.Max(group{[Атрибут="В"]}[Даты]) otherwise "-", 
                  П = try List.Max(List.Select(group{[Атрибут="П"]}[Даты], 
                        each _ < DateTime.LocalNow())) otherwise "-"
             ]
in
    select
более громоздко, но по крайней мере так отладка будет только на уровне функции, а не кода целиком, что уменьшает вероятность "потеряться" )))
Изменено: buchlotnik - 27.09.2019 23:57:15
Соблюдение правил форума не освобождает от модераторского произвола
 
buchlotnik, согласен на счет практики на 100%, но эксель в целом я познаю через гугл, а в гугле информации по PQ не очень много по сравнению со стандартыми функциями. Стандартные решения в PQ, мышкоклацанье, это не так сложно, но применение отдельных функций, тут нужно искать, читать, вникать.
Может вы мне посоветуете, какой нибудь мануал по PQ?
Изменено: adamm - 28.09.2019 07:47:08
 
Цитата
adamm написал:
какой нибудь мануал по PQ
на русском прямо здесь доступен Скульптор данных, я в свое время начинал с "мануала для обезьянок" - достойное руководство, но на английском
Соблюдение правил форума не освобождает от модераторского произвола
 
ок, спс!
Страницы: 1
Наверх