Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
Chernov
Creator
Creator

Вывод строкового значения + немного магии анализа множеств

Приветствую коллеги, есть немного вопросов (речь о 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(), т.к. у нас нет на макс. дату - цены продажи

Собственно, тестовое приложение во вложении,

Прошу содействия в решении формул.

0 Replies