Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Приветствую коллеги, есть немного вопросов (речь о QlikView),
Я сделал тестовое приложение которое содержит некую структуру данных, скрин1 : https://s.mail.ru/MtZV/BMfvzP3MJ
Т.е. есть две таблицы фактов, которые по некоторым причинам я не могу просто так заджоинить, одна таблица содержит данные по ценам конкурентов, вторая - цены по переоценкам (т.е. продажные), в релизе есть еще и третья таблица фактов - это цены закупочные (но её сейчас опустим, она по принципу с ценами по переоценкам)
Примерный дэшбоард получился следующим, картинка 2: https://s.mail.ru/51At/1U5qkJb7A
Необходимо построить таблицу следующего содержания:
Измерения: Магазин / Товар
Меры: Мин. цена конкурента / Наименование конкурента с мин. ценой / Цена продажная на дату проверки / Цена продажная текущая
Есть доп. условие, пользователи сами выбирают период, за который хотят анализировать данные, с этим проблем нет: создаем два календаря, две переменные и называем из varDateStart и varDateEnd, попутно, в ходе работы скрипта оставляем заполненными еще две переменные с мин.датой и макс.датой - все даты представляем в виде числа. картинка 3: https://s.mail.ru/G8LK/Qp8Y5Fymo
С измерениями вопросов нет, поехали по мерам.
Мин. цена конкурента, считаем по формуле без проблем : min( {< ДатаЧислом = {'>=$(varDateStart)<=$(varDateEnd)'} > } ЦенаКонкурента)
Наименование конкурента с мин. ценой - взывает о помощи, текущая формула : FirstSortedValue( {< ДатаЧислом = {'>=$(varDateStart)<=$(varDateEnd)'} > } Конкурент, ЦенаКонкурента)
Формула работает, если у нас одна минимальная цена у одного конкурента в один день;
Формула не работает, если у нас есть одинаковая цена товара по разным конкурентам ; если взять count (distinct Конкурент) - их будет больше 1
Цена продажная на дату проверки, тут еще сложнее, необходимо вывести такую цену продажи, которая является максимальной ценой товара, до даты на которую мы получили минимальную цену конкурента.
т.е. если у нас, для примера:
товар1 ; магазин1 ; 10.04.2017 ; конкурент1 ; 20 руб. мин. цена конкурента
и переоценки:
товар1 ; магазин1 ; 01.04.2017 ; 10 руб. цена продажи
товар1 ; магазин1 ; 08.04.2017 ; 15 руб. цена продажи
товар1 ; магазин1 ; 12.04.2017 ; 20 руб. цена продажи
товар1 ; магазин1 ; 30.04.2017 ; 30 руб. цена продажи
то мы должны увидеть в таблице , цену товара = 15 руб., т.к. эта цена, максимальной даты и меньше даты цены конкурента
Цена продажная текущая, в теории должная работать формула: only( {< ДатаЧисломПереоценка = {'$(=max(ДатаЧисломПереоценка))'} > } ЦенаНаша)
которая отрабатывает и берет максимальную дату, без аггрегирования по товарам. Т.е. берет макс.дату и пытается на эту дату получить цену - получаем конечно же Null(), т.к. у нас нет на макс. дату - цены продажи
Собственно, тестовое приложение во вложении,
Прошу содействия в решении формул.