Страницы: 1 2 След.
RSS
Упрощение формулы массива поиска предыдущей даты продажи
 
Добрый вечер Уважаемые форумчане! У меня есть таблица с датами продаж продуктов и есть формула массива поиска предыдущей даты продажи этого продукта
=МАКС(ЕСЛИ(($B$2:$B$28=B2)*($A$2:$A$28<A2);$A$2:$A$28;""))
проблема в том, что строк в таблице примерно 500 000 и формула мягко говоря подвисает)
может быть кто-то поможет мне упростить формулу или вообще с альтернативным решением поиска предыдущей даты...
 
ну например избавиться от если:
Код
=МАКС($A$2:$A$28*($B$2:$B$28=B2)*($A$2:$A$28<A2))
, а вообще может на DAX или PQ посмотреть?
Соблюдение правил форума не освобождает от модераторского произвола
 
Сразу же: для работы формул на таких объемах сортировать обязательно! Зачем лишние вычисления?
Для сортированного по дате диапазона:
=ЕСЛИОШИБКА(ПРОСМОТР(2;1/($B$2:B2=B3);$A$2:A2);A3)
Если текущая дата не подходит, вместо ссылки на А3 записать 0

Если применять ЕСЛИ, то  для большего отсечения лишних вычислений. Я бы так изменил исходную формулу:
=МАКС(ЕСЛИ($B$2:$B$28=B2;ЕСЛИ($A$2:$A$28<A2;$A$2:$A$28)))

А вообще: для чего в каждой строке (полмиллиона!) иметь предыдущую дату?
 
Цитата
buchlotnik написал:
может на DAX или PQ посмотреть?
я пыталась копать в сторону PQ, но еще "плаваю" в нем и смогла решить задачу только с помощью формулы...
спасибо за формулу, сейчас проверю, может уже с ней будет намного шустрее работать)
Изменено: Настя_Nastya - 10.01.2021 20:45:40
 
Цитата
Настя_Nastya написал:
сейчас проверю, может уже с ней будет намного шустрее работать)
не будет. Точнее будет, но самую малость.
По вопросам из тем форума, личку не читаю.
 
Цитата
Настя_Nastya написал: я пыталась копать в сторону PQ, но еще "плаваю"...
обозначьте конечную цель обработки - подскажем
Цитата
БМВ написал: будет, но самую малость
а я претендовал на космические скорости?
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
а я претендовал на космические скорости?
Тезка, так не тебе и писал. При указанных объемах, результат формульный плачевным быть обязан.

Цитата
vikttur написал:
применять ЕСЛИ, то надо правильно - для отсечения лишних вычислений.
а вот это бесполезно. Вить, массивка вычисляет все сперва, а потом ветвит. Результат только хуже будет.
Изменено: БМВ - 10.01.2021 21:38:30
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
При указанных объемах, результат формульный плачевным быть обязан
во истину, мастер Йодо; силу DAX пробудить нужно...
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
БМВ написал: массивка вычисляет все сперва, а потом ветвит.
новость...Что ни день - то подсечка )
Сперва - это как? МАКС находит? Условия же в ЕСЛИ прописаны? Расскажи-объясни.
 
Цитата
buchlotnik написал:
обозначьте конечную цель обработки - подскажем
Мне нужно найти предыдущую дату продажи продукта для последующих вычислений. Ну, вот есть яблоки, проданные 5 мая, нужна предыдущая дата продажи этих яблок.
 
Цитата
Настя_Nastya написал: для последующих вычислений
И Вы сразу считаете в 1/2 миллиона строк? Смысл? Определить максимальную дату, меньше указанной - это понятно. Но зачем определять в каждой строке?
 
vikttur, Просто посмотри на этом примере как вычисляется формула и что там творится. В отличии от аналогичной конструкции не массивной, которая действительно может снизить нагрузку.
Собственно и замеры подтверждают, что меньше ветвлений- быстрее счет.

Скрытый текст
Изменено: БМВ - 10.01.2021 22:11:45
По вопросам из тем форума, личку не читаю.
 
vikttur, да, нужно найти для каждой позиции предыдущую дату продажи, я в примере написала только яблоки и груши, но у меня автомобили, от двух до десяти продаж по каждому авто. Товар продается, потом снова он же поступает на склад, потом снова продается, поэтому для каждой продажи нужно искать предыдущую дату продажи. И да, нужно сразу считать на полсотни тысяч строк, работа такая!)
Изменено: Настя_Nastya - 10.01.2021 22:11:41
 
Цитата
БМВ написал:
В отличии от аналогичной конструкции не массивной, которая действительно может снизить нагрузку
какой, если не секрет?)
 
Цитата
Настя_Nastya написал:
какой, если не секрет?)
это не относится к вашему подсчет в данном случае. Формульный вариант, предложенный тезкой - самый быстрый, но на том количестве данных и количеству применений - это в любом случае жуткие тормоза.
Изменено: БМВ - 10.01.2021 22:15:32
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал: меньше ветвлений- быстрее счет
Да уж.. так и есть: вычисляютя ВСЕ условия в первом ЕСЛИ, потом ВСЕ условия во втоом ЕСЛИ, после этого равниваются условия...
Где ты раньше был? :)  я столько лет считал, что правильно считал... Иду снимать стресс )
 
Цитата
Настя_Nastya написал:
Мне нужно найти предыдущую дату продажи продукта для последующих вычислений.
вы и правда считаете рациональным приматывать неформульные инструменты к части вычислений. может все-таки покажете задачу в терминах "исходные данные - ожидаемый конечный результат"?
Соблюдение правил форума не освобождает от модераторского произвола
 
У меня есть исходные данные об автомобилях (Дата поступления, Дата продажи, VIN, Тип операции). Авто продается Васе, Вася покатался на нем месяц потом поставил на комиссию и его купил Петя, потом через год поставил на комиссию и его купил Саша и т.д. Вот мне нужно знать при продаже Пете, когда авто покупал Вася. То есть авто поступает, потом продается, потом снова поступает и т.п. Иногда бывают, например, возвраты, вот их дату не нужно учитывать при поиске предыдущей даты продажи.  
 
Цитата
Настя_Nastya написал:  мне нужно знать при продаже Пете, когда авто покупал Вася
Так я об этоми писал:
Цитата
vikttur написал:  Определить максимальную дату, меньше указанной
Небольшая формочка (можно в ячейках): Имя (Петя), дата покупки (Петей), номер кузова авто или количество ржавчин на поддоне, количество веснушек у Пети на п... спине )... Да любая уточняющая информация.
Ввели данные - получили дату, имя предыдущего владельца, адрес его явочной квартиры...

Можно без формочки - клик на нужной строке... или выбор из выпадающего списка (для такого количества строк  - список с фильтрацией)

Если нужна информация по многим (всем) авто, то тоже - зачем вся история перехода из рук в руки (т.е. все строки)? Разве недостаточно вывести список нужных колес и последние даты по ним (можно предпоследние, пред-предпоследние...)
 
Цитата
vikttur написал:
Где ты раньше был?
Это тебе ответочка за Integer  :D
По вопросам из тем форума, личку не читаю.
 
vikttur, формочки и выпадающие списочки для определенного количества строк не подходит, повторюсь, мне нужно обрабатывать постоянно выгрузку из полусотни строк, ну вот надо (честно, не сочтите за грубость, но я уже замучилась оправдываться)
Был конкретный вопрос - есть ли возможность побыстрее рассчитать предыдущую дату продажи (максимальную из предыдущих) для КАЖДОЙ из 500 000 строк. Формулу массива, спасибо вам всем, я уже упростила сортировкой и сокращением диапазона проверки до 20 в ту и ту сторону, уже стало намного легче.
Просто, вдруг кто-то сможет помочь с PQ или формулисты с обычной формулой, решающей мою задачу - буду благодарна)
 
Настя_Nastya, для помощи с PQ нужно работать с оригинальной таблицей. Также вы говорите
Цитата
Настя_Nastya написал:
мне нужно обрабатывать постоянно выгрузку из полусотни строк,
то есть есть эти полсотни нужных и таблица с данными, а не для каждой из 500 000 надо найти предшественника. Что-то мне подсказывает, что даже UDF в данном случае окажется выходом.
Изменено: БМВ - 11.01.2021 13:30:50
По вопросам из тем форума, личку не читаю.
 
Настя_Nastya, для обработки через PQ исходных данных недостаточно. Прошу уточнить:
Есть база 500кк строк, в неё добавили новые строки, и нужно чтобы PQ добавил для каждой значение предыдущей продажи?
Или есть выгрузка на 50 строк, и нужно, чтобы PQ слазил в базу и оттуда достал даты предыдущих продаж?
Если опираться на ваш пример, то нужен первый вариант, если на ваше описание задачи в посте №21, то второй. Так все же какую задачу решаем?
Вообще можно и (нужно!) в PP эту задачу решать: делаете сводную по безе данных, выбираете фильтрами машину в сводной, а мера показывает предыдущую дату продажи и Васю, который её купил, если нужно.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Есть база 500кк строк, в неё добавили новые строки, и нужно чтобы PQ добавил для каждой значение предыдущей продажи?
да) вот эту задачу нужно решить
 
Цитата
Настя_Nastya написал:
мне нужно обрабатывать постоянно выгрузку из полусотни строк
опечатка - полусотни тысяч строк
 
Цитата
Настя_Nastya написал:
опечатка - полусотни тысяч строк
https://vk.com/video13686382_456239213?t=51s  :D
По вопросам из тем форума, личку не читаю.
 
Цитата
Настя_Nastya написал:
да)
Такое можно сделать при помощи PQ только если вся база в файле представлена в виде "умной" таблицы. такое возможно для вашего исходника?
Данные в таблицу вносятся вручную или их тоже нужно откуда-то забирать?
Вот горшок пустой, он предмет простой...
 
PooHkrd, данные формирую в PQ через запрос SQL к SQL серверу. Вся таблица кроме столбца "Дата предыдущей продажи" и есть умная таблица
 
Настя_Nastya, А не проще ли тогда сразу SQL запросом все получить?
Это пример
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо! Буду пробовать)
Страницы: 1 2 След.
Наверх