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

Q: В программе использую FieldValueCount, которая подсчитывает уникальные значения столба таблицы. А как подсчитать вообще все значения, по порядку. Вроде должно быть, RecNo и RowNo, если правильно подскажите как правильно их использовать.

A: Существует несколько функций осуществляющих подсчет.
Смотрим документацию по функциям агрегирования счетчиков

В вашем случае, если есть поле с уникальными значениями то выражение count(UnicumField) вернет число записей в таблице.

Q: 1. Существует задача, в которой необходимо сравнить продажи в разрезе Неделя-Год, и построить график данных продаж.

Т.к. неделя может относиться к разным годам и месяцам ( например 1-ая неделя 2015 года включает в себя даты декабря 2014 года), столкнулись с такой проблемой, что при выводе графика и сортировке периода по возрастанию эти недели разбиваются (что логично). При этом получаются «провалы» на графике.

Подскажите пожалуйста, возможно ли сделать так, чтобы такие недели не разбивались? Или какие настройки использовать для графиков при отображении такой информации? Или необходимо изменить настройки календаря?

2.Также существует следующая проблема в расчете , если мы работаем с неровной неделей:
если в расчет попадает неровная неделя (в неделю попадают два месяца), клик не учитывает дни предыдущего месяца.
Подскажите, как быть в данной ситуации.

A: Ну я вот разбиваю месяцы на целые недели (т.к. неделя, как и у вас является главной единицей измерения).
Месяц
Код: [Выделить]
=if(WeekDay( MonthStart(Floor(NACH_VREM)))>3,
Month(WeekStart(floor(NACH_VREM))),
Month(AddMonths(WeekStart((floor(NACH_VREM))),-1))
)

Где NACH_VREM — ваша дата (у меня формат timestamp, если просто date- можно убрать floor() ).

Таким образом в месяце получается всегда 28 или 35 дней, и недели всегда входят в него целиком. Неделя разбитая по 2м месяцам принимается относящейся к тому месяцу, куда входит четверг.

Для Года аналогично работает просто функция
week()

Q: добрый день! Подскажите, как из столбца простой таблицы сделать выборку по определенному значению, и чтобы значение при открытии таблицы было одно.

Проще говоря таблица со значениями 1,0,1,0. нужно чтобы выводилось постоянно значение 1

A: if ( измерение=1, измерение) в измерениях. И галку: скрыть значения когда null

Q: помогите, вопрос простой, а ответа не могу найти 🙂

загружаем таблицу:
дата подразделение продажи
1/1/15 А 100
2/1/15 А 110
можно ли со стороны qlik sense
построить так:
1. выбираем фильтр и добавляем в него измерение «дата»
2. добавляем таблицу и выбираем измерения «дата», «подразделение»
и меры «продажи» и «продажи за вчера»
3. щелкаем в фильтре дату «2/1/15»
4. в таблице получаем результат вида:
дата подразделение продажи продажи за вчера
2/1/15 А 110 100
вот что такого нужно написать в мере «продажи за вчера», чтобы там было 100
спасибо большое!

A:В этой теме косвенно уже затрагивали эту тему.
Например:
Код:
Sum({$
< Date = {'$(=Date(Max(Date)-1))'} >} [Value])
Вот только если измерение Дата, то этот вариант не пройдет.
Надо подумать.

Q: Вопрос по построению диаграммы, в частности линейного графика.
В качестве измерения у меня идет «Месяц-Год». В качестве выражения «Сумма продаж».
Подскажите, пожалуйста,как задать, чтобы всегда (вне зависимости от выборок) на графике отображение начиналось, например, с июня 2014 г. Не пойму, где и как прописать условие для измерения….

A: Данные отображаются по заданным выражениям.
Используйте анализ множеств для формирования необходимого набора данных на диаграмме.
Без учета выборки:
Код:
sum({1<[Date] = {">=01.06.2014″}>} Количество)
С учетом выборки:
Код:
sum({$<[Date] = {">=01.06.2014″}>} Количество)

Q: Данная тема косвенно затрагивалась здесь, но ответа я так и не нашла.

Допустим есть следующие данные по продажам:
янв фев мар
Товар1 10000р. 12000р. 15000р.
Товар2 5000 4000 5000

Необходимо рассчитать динамику продаж по каждому товару в марте, относительно февраля и января, т.е.:
мар-фев мар-янв
Товар1 3000 5000
Товар2 1000 0

Как это реализовать в QlikView? Как лучше всего работать с датами, как задавать предыдущие недели, месяца, года относительно выбранных?

A: Вот Вы и добрались до анализа множеств.
Рекомендую почитать на эту тему в официальной документации по Qlikview и по Sense на сайте help.qlik.com

Вариантов решения может быть несколько, в зависимости от задачи.
Можно задать интервал дат:
Код:
Sum({1<[Date] = {">=01.02.2014<=28.02.2014"}>} Количество)
Если используется календарь, то можно задать и так:
Код:
Sum({1<[_MonthSerial]={'2'},[Year]={'2014'}>} Количество)
Т.е. вычислить разницу между месяцами можно так:
Код:
Sum({1<[_MonthSerial]={'3'},[Year]={'2014'}>} Количество)-Sum({1<[_MonthSerial]={'1'},[Year]={'2014'}>} Количество)
или так:
Код:
Sum({1<[YearMonth] = {'201403'}>} Количество)-Sum({1<[YearMonth] = {'201401'}>} Количество)
Или так:
Код:
Sum({1<[Date] = {">=01.03.2014<=31.03.2014"}>} Количество)-Sum({1<[Date] = {">=01.01.2014<=31.01.2014"}>} Количество)
Но эти выражения заданы с явным указанием дат, и не реагируют на выборки в приложении.
Следовательно, в выражение надо внести изменения, вычисления необходимых параметров в зависимости от выборки, например:
Код:
Sum({<[Date] = {">=$(=MonthStart(AddMonths(Max([Date]),-1)))<=$(=monthend(AddMonths(Max([Date]),-1)))"} >} Количество)
при текущем выборе дат марта 2014, даст период — «>=01.02.2014<=28.02.2014" Рекомендую также ознакомиться с перечнем функций дат и времени. Если требуется отслеживать, к примеру последние периоды от даты обновления данных, можно формировать флаги в календаре. Тогда условие для фильтра будет проще, например LastMonth={'-2'},и т.п. Все сводится к заданию условия фильтров. Отладку условий рекомендую производить в текстовом объекте, задав условие в выражении для текста, например: Код: =MonthStart(AddMonths(Max([Date]),-1))

Q: У меня возникла такая проблема. У меня есть например сводная таблица.Столбцы таблицы это недели (1,2,3 и т.д), а строки — филиалы (западный и центральный филиал, у каждого филиала несколько магазинов). На пересечении строк и столбцов отображается максимальное суммарное количество продаж одного магазина какого-то филиала за одну неделю, Max(Aggr(Sum(Продажи), Неделя, Филиал, Магазин)). Но я хочу, чтобы на пересечении отображалось не само количество продаж, а то, какой магазин осуществил такое количеств продаж.

Я изначально пытался сделать это через If(Max(Aggr(Sum(Продажи), Неделя, Филиал, Магазин)), Магазин), но отображалось только одно единственное значение (только один магазин всего отобразился). Можете подсказать, как сделать так, что бы в каждой ячейке был номер магазина, который отвечает aggr функции.

A:В теме «AGGR() — функция расширенного агрегирования, вопросы применения» есть пару абзацев по использованию firstsortedvalue().
Думаю, это ваш вариант.
Если не найдете решения, опубликуйте тестовые данные, чтобы не выдумывать и обсуждать проблему предметно.

Q: Привет. Не подскажешь как сделать выборку. В qlik sens делаю таблицу с мерой «оплаченные счета», есть поле [Статус] в котором содержится информация о статусе счета: оплачен, отправлен клиенту, отклонен . Как можно сделать выборку только по количеству оплаченных счетов Count([Статус])? Заранее спасибо.

A: Для фильтрации следует использовать расширенный синтаксис анализа множеств, Set Analyse
например

Код:
count(
{<Статус={'Оплачен'}>}
[Статус]
)
Подробнее почитай в руководстве Qlikview, думаю, на русском быстрее будет понять.

Q: Магазин в январе продавал в трех валютах:
USD — 100
EUR — 200
РУБ — 700

Строю сводную таблицу, в которой вычисляемое поле «Сумма в руб» = IF(Валюта=’USD’,Sum([Сумма продаж]*40),IF(Валюта=’EUR’,Sum([Сумма продаж]*50)*,Sum([Сумма продаж])))

Если в сводной таблице есть поле Валюта, то Сумма рассчитывается правильно = 14700
Но, если я убираю валюту, то получается сумма = 1000, т.е. формула не пересчитывает валюты.
Как корректно рассчитать сумму в таблице без отображения валют.

A: Тоже вариант 🙂
Также, можно на уровне скрипта рассчитать отдельным полем рублевую сумму. В этом случае будет проще некуда.
Если надо будет вычислять по истории курсов, то тогда без Aggr() не обойтись.

Q: Создал таблицу с вложенным просмотром от №Баннера до ключевой фразы которая перекреплена к определенным баннерам. Не подскажете как сделать свой набор мер(столбцов) для №Баннера и для фраз?

A:Управление доступом в данной версии не поддерживается.
О том как это реализовано в серверной версии — Qlik Sense, можно почитать здесь.

Q: Подскажите пожалуйста как добавить в Sense новую меру «CTR» которая получается только после расчета по формуле:
CTR = количество кликов / количество показов * 100%

http://f5.s.qip.ru/CkKxLnjm.jpg

A: Ну так и добавить формулой, отдельным столбцом.
Либо через Master items Добавить выражением в Measures

Q: Задумался над задачей, каким образом прописать выражение, чтобы подсчитывать долю определенного показателя данной строки в простой таблице от итогового значения по этому полю.
Это стандартный функционал сводных таблиц excel, но пока не нахожу подобного в qv
Или в даном случае лучше не использовать простую таблицу?..

A: Типа такого?
Код:
sum( $(vReal) [# Сумма с налогами])/sum(total $(vReal) [# Сумма с налогами])

Q: Подскажите, какое выражение нужно прописать в условия, чтобы в таблице подсвечивались первые 5 наибольшие суммы?

Пробывал:
=Rank([id_payment])>=5
=aggr(if(Rank([id_payment])<=5,[office]),[office]) =aggr(if(Rank([id_payment])<=5,[id_payment]),[id_payment]) Но без результата A: Попробуй задействовать свойства выражений.

Q: Исключение значений через расширения выражений (Set Analysis) Qlikview Qlik Sens

A: Для того, чтобы исключить одно или несколько значений через set analysis следует использовать следующий синтаксис:
Код:
Sum ( {} SumEntry )
Т.е. если использовать символ = (равно), то получим только совпадения, а используя -= (минус равно) получаем исключения, а именно — все записи кроме указанных в квадратных скобках {‘501′,’502′,’511’}.
Аналогичный результат будет при использовании:
Код:
Sum ( {} SumEntry )

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

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

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

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

65 queries in 0,211 seconds