FAQ по формулам, в т.ч. измерениям, в Qlik Sense/Qlik View часть 5

Q: Хочу попросить совета — в каком направлении двигаться )

Дана таблица, в которой (для примера) описываются некие события, есть поля «Код события» и «Время». Где то (неважно), я задал текущую выборку, определил для нее минимальное и максимальное время.
Теперь стоит задача отобразить на других диаграммах: события за 5 (для примера) минут до минимального времени и за 5 минут после максимального. Реальность требует использования сеточных диаграмм, где «Код события» и «Время» — измерения. Собственно вопрос: как ?
Я прочитал»Анализ множеств», но там дело идет с выражениями. В моем случае, получается, необходимо ограничивать измерения…

A:Измерения отображаются по выражениям. если у вас фильтр настроен на июль 2015, то и будет только 07-2015. Постройте выражение с учетом своих допусков.
Для начала поэкспериментируйте с днями, выделите день, а в условии поставьте +/-1 к полю Дата.

Q:Дано:

Продукт Выручка
продукт1 500
продукт2 300
продукт3 400

Вопрос: как получить (путем вычисления выражения в текст. объекте) количество продуктов, у которых суммарная накопленная доля по выручке, например, будет меньше 70 % … ? т.е. в данном случае ответ будет 2 шт.

A:В моем примере, чтобы вывести значения, например, меньше 90% я в текстовом поле прописываю:

=sum(aggr(if(RANGESUM(ABOVE(SUM(SALE)/SUM(TOTAL SALE),1,RowNo()),SUM(SALE)/SUM(TOTAL SALE))<0.9,1,0),ITEM)) При этом у вас не настроена сортировка в таблице по выражению "Выручка". Вам ведь необходимо находить от мин. к макс. Q: есть 3 измерения Страна, Регион, Город они составляют иерархию
я из них делаю иерархическую группу

в диаграмме нужно для этой группы подсчитать одно выражение, суть его не важна, но для разных уровней это выражение считается по разному
есть такая функция могу ошибаться в синтаксисе, что типа getselectcurrent(имя группы)
она как вроде должна отдавать имя текущего уровня

но во первых не могу понять как мне вывести значение этой функции, куда нибудь, чтобы увидеть что же она возвращает в 3 случаях
а во вторых я пишу ее в вложенном if , и не работает

A: GetCurrentField(ВАША_ГРУППА)

Просто не пугайтесь, что редактор подчеркнет как ошибку, он много чего так подчеркивает >:(, посчитается всё правильно. Единственное, что я не научился обрабатывать названия групп с пробелом, но думаю это не критично.

Q: Если,при выборе месяца,конец недели не входит в этот месяц — необходимо,чтобы эта неделя совсем не попадала в данные диаграммы.
Ну или для начала недели аналогично.Суть все равно одна и та же, т.е. если начало нед не входит в выбранный месяц,то нужно,чтобы эта неделя вообще не попадала в данные диаграммы.
Каким образом можно это осуществить?Я так понимаю все дело в прописывании условия?
Ниже приведен используемого календаря,возможно в нем нужно дополнить что-то,для правильности отображаемых данных.
А также на рис.Безымянный11 приведен пример,конкретно какие недели должны отображаться на графике (полные недели января)

A: Добрый день
=if(WeekStart(Дата) >= MonthStart(Дата) and WeekEnd(Дата) <= MonthEnd(Дата) , WeekName(Дата) )

Q: Не могу разобраться, как правильно прописать оператор YTD в QlikView.
Суть в том, что у меня выборка должна включать не просто выбранную дату, но и период, предшествующий ей.
Покажу на примере:
Нужно загрузить данные за 2014 и 2015 год, и, допустим, если я выбираю дату 30.06.15, то нужно, чтобы программа отображала не только данные за это число, а включала период с 01.01.2014 по 30.06.2015.
Нашла много материалов по данному оператору, понимаю, что прописывать его нужно через Set Analysis.
Проблема в том, что не нашла конкретных примеров — только формула + в разных источниках по-разному прописан синтаксис, хоть и не кардинально, но всё же отличается.
Если у кого-то есть источники, где есть реальные примеры с данным оператором, буду искренне благодарна.
Впрочем, буду признательна любой помощи.

A: Да, вариантов несколько может быть.
Самое простое выражение для таблицы:
Код:
sum({<дата = {'>=$(=yearstart(min(дата),-1))<=$(=max(дата))'}>} Сумма)
дата — поле календаря и таблицы фактов.
Сумма — поле связанной по дате таблицы.

Q: Не знаю как написать правильно условие для расчета суммы продаж за предыдущий месяц.
Есть два варианта, если не выбрано конкретное число,например май 2015 и если выбрано, например 5 мая 2015. Т.е если число не выбрано, то нужно посчитать полностью за предыдущий месяц,а если число выбрано, то нужно посчитать за предыдущий месяц с учетом дня. Т.е в первом случае надо посчитать за апрель 2015, а во втором за 5 апреля 2015. Как можно указать в условии формирования сдвига даты что выбран день или не выбран день,
можно ли написать следующим образом?
If(День >0, AddMonths(vMaxPeriod,-1),if( День=0,Monthend(AddMonths(vMaxPeriod,-1))))

A: вопрос пересекается с темой http://qlikview-forum.ru/qvf/index.php/topic,811.0.html
Предлагаю разбить задачу на этапы.
Для начала определимся с выражениями а затем с условием.
За эти дни может быть уже пришли к какому-то решению?

Q: Начинаю присматриваться к QlikView и мне понадобился подсчёт по выборке.
Как правильно составить, если есть столбец [Статус] в нём значения «true» и «false». Мне необходимо подсчитать количество значений «true»

A: Выражение простое, вот пример для текстового объекта:
Код:
=Count(
{<[Статус]={'true'}>}
[Статус])
Теория хорошо изложена в документации и справке. Искать по фразе «анализ множеств».
Очень хорошая документация по Qlik Sense тоже может помочь

Q: Просмотр профиля
Перенос выражения в загрузочный скрипт (qlikview)
« : Июль 06, 2015, 05:47:23 pm »
Здравствуйте, есть выражение такого типа:
Код:
if( count(DISTINCT D_ID) > 0.6* max ( total Aggr(count(DISTINCT D_ID), Владелец) )…
Цель: пытаюсь перенести данное вычисление в загрузочный скрипт.
Код:
tab_02:
load D_ID,
if( peek(‘D_ID’)=D_ID,0,1) as D_count
DC_NUMBER as CardID,
Resident tab_01 order by D_ID asc;

tab_03:
load
CardID,
sum(D_count) as Count_DistD_ID
Resident tab_02
Group by CardID;
В результате — да, получается табличка с подсчетом D_ID для каждого CardID соответственно… ну и теперь возможно найти макс. среди всех, но… это будет константа.
Вопрос-проблема: возможно ли вообще получить такие «макс. тотал», чтобы оно(и) реагировали на выборку?!
A:Конечно, можно считать «макс тотал».
Небольшой фрагмент данных для опытов по задаче был бы весьма кстати.

Q:Здравствуйте, не подскажете как подсчитать сумму продаж за предыдущую и за текущий месяц?

A:Sum({<месяц={$(=Max(месяц))}>} sales) -текущий
Sum({<месяц={$(=Max(месяц)-1)}>} sales) -предыдущий

Q:Имеется график в котором считается количество продаж в формате «Месяц-год»->Количество продаж

Необходимо добавить на данный график линейный график изменения в процентном соотношении объема продаж «Месяц-год»-> Изменилось на N%.
Строю комбо график и не могу понять как сделать выборку значений за предыдущий месяц
Формула должна быть (Объем(предыдущий месяц)/Объем(Следующий месяц))*100
Не могу понять как это сделать(

A:Если измерение = Месяц
То, выражение above(sum()) вернет значение по предыдущему отображаемому месяцу.
Попробуй above(sum())/sum()

Q: Коллеги, не хватает знаний, как реализовать подобное?
Столбец А,
Иван
Петр
Иван
Петр
Илья
Иван
Петр
Иван
Петр

Как посчитать и вывести в отчет количество имен Иван, Петр, Илья в данном столбце.

A: Столбец А как измерение, а в выражении count([Столбец А])

Q: Подскажите, пожалуйста. Есть такая ситуация. У нас есть прямая таблица, в которой есть измерения, одно из измерений с условием. Есть выражения, по которым считаются значения измерений Как можно вывести поле, значение выражения которого равно null. Если во вкладке измерения этой таблицы убрать галочку скрыть null Значения, то появится не только это поле,но и поля,которые не нужно отображать. А поставить галочку в поле показать все значения в измерении с условием нельзя. Может кто-то знает решения данной проблемы?

A: if( isnull(ВЫРАЖЕНИЕ) , ‘Тут ничего нет’, ВЫРАЖЕНИЕ )
Или избавиться от «пустышек » в значениях измерений в скриптах, при формировании модели данных.
Просто заменив null на любое текстовое обозначение.

Q: У меня есть табличка вида:
№ заказа Товар Возрастная группа
22 N Детская
22 U Взрослая
24 К Взрослая
25 К Взрослая
25 О Взрослая

Вопрос — как посчитать количество заказов, в которые входят товары ТОЛЬКО Взрослой возрастной группы? Т.е. в данном примере таких заказов будет 2.

A: Нам надо подсчитать, следовательно count().

Будем считать по значению поля «№заказа», а чтобы исключить двойной подсчет одного и того же заказа, применим — Distinct, следовательно count(Distinct [№ Заказа])

Нам следует ограничить подсчет множеством взрослой возрастной группы , т.е. [Возрастная группа]=»Взрослая», следовательно, применяя анализ множеств запишем
Код:
count( Distinct { <[Возрастная группа]={"Взрослая"}> } [№ Заказа] )


Найти решение у бизнес-партнера QlikTech (QlikView) в России.

Форум разработчиков QlikView и Qlik Sense. Получите ответы на все вопросы по QlikView и Qlik Sense!

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

64 queries in 0,378 seconds