Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
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