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!

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

Q: Очередной тупик (видимо и меня можно так назвать 🙂 )

В таблице след.поля: PERIOD,[Country channel],[Company name / Имя компании],[SHOP CHANGES], Universe

Есть выражение в диаграмме (измерения : [Country channel],[PERIOD],[Company name/ Имя компании]):

=IF(concat(distinct{<[Company name / Имя компании]>}[SHOP CHANGES])=’NEW’,IF(sum(Universe)<>‘0’, count(distinct [Company name / Имя компании]),0),0) + IF(concat(distinct{<[Company name / Имя компании]>}[SHOP CHANGES])=’CLOSEDNEW’,IF((sum(Universe)<>‘0’), count(distinct [Company name / Имя компании]),0),0)
Как итог выдает след.график — см.вложение.
Хочу получить график где значения каждого месяца будут идти с нарастающим итогом (т.е. 201501 -2, 201502 -6, 201503- 9.
Предполагаю, что решение связано с Rangesum(Above(… , но как ни стараюсь его применить — результат далек от правильного 🙁
В очередной раз буду признателен за любое содействие.

A:ну не так просто разобраться в работе модели данных и выражении, даже если оно будет написано так:
Код:
=IF( concat(distinct{<[Company name / Имя компании]>}[SHOP CHANGES])=’NEW’,
IF(sum(Universe)<>‘0’,
count(distinct [Company name / Имя компании]),
0),
0)+
IF(concat(distinct{<[Company name / Имя компании]>}[SHOP CHANGES])=’CLOSEDNEW’,
IF((sum(Universe)<>‘0’),
count(distinct [Company name / Имя компании]),
0),
0)
BIbis правильно отметил, что вариант не будет оптимальным.
Думаю, надо смотреть в сторону работу с анализом множеств и расширенного агрегирования функцией aggr().

Q: подскажите где в меню создаются Другие состояния объектов и где пункт позволяющий применить к объекту. Требуется, чтоб только одна таблица реагировала на фильтр относящийся ко всему проекту.

A: Как вариант, эту одну таблицу «не связывать» с другими таблицами — назвать поля таблицы по другому.
А, фильтры связать через триггер «Select in Field».

Q: Делаю АВС-анализ по категориям по примеру http://biadvice.ru/analiz-prodazh/primenenie-abc-analiza-na-praktike-abc-analiz-v-qlikview.html.
Подсчитала в таблице долю каждой категории, затем долю накопительным итогом (через полное накопление как написано). Теперь хочу, чтобы у меня в отдельном столбце проставлялась группа А, В или С в зависимости от накопленной доли.

Выражение «if([Доля (накопит.)]<=0.8, 'А', if([Доля (накопит.)]<=0.95,'В','С'))" не работает, в столбце везде выдается группа "С". Помогите, пожалуйста, с реализацией задумки. A: Проверьте какое значение в поле, что сравнивается с 0.8 и т.д.
Используйте другую схему вычисления накопительных значений, функциями а не установкой флажка.
Например :
Код:
Rangesum([% от итога],
above([% Накопит.]))

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

A: Можно посмотреть в справке
«Разрешить условный» , как и «Условный» для выражений предназначено для управления отображением измерения/выражения, в зависимости от значений переменной.
Например как в демопримере на вкладке reports.

Q: В Qlikview загружаются данные вида:

Дата продажи ФИО НомерЧека СуммаЧека
01.01.2015 Петров 123456 1000
01.01.2015 Сидоров 123457 9999
02.01.2015 Иванов 123458 8888
02.01.2015 Петров 123459 1500
02.01.2015 Сидоров 123460 450

По этим данным строится Прямая таблица вида:
ФИО Кол-во чеков Общая сумма
Иванов 1 8888
Петров 2 2500
Сидоров 2 10449

Тут ФИО — Измерение, Кол-во чеков — Count(НомерЧека), Общая сумма — sum(СуммаЧека)

Есть отбор по периоду, допустим сейчас выбран период с 01.01.2015 по 03.01.2015.
Теперь нужно на эту таблицу наложить фильтр, который оставит в таблице только тех людей у которых общая сумма покупок больше допустим 10000 т.р. В нашем примере должен остаться Сидоров.

A: 1. Например, при загрузке данных наложить фильтр: WHERE [Общая сумма] > 10000
2. Или сделать переменную «MoreTop» и выводить данные, которые больше этой переменной:
=if ([Общая сумма] > $(MoreTop), [Общая сумма])

Q: Помогите пожалуйста со следующим вопросом.

1. Есть магазины с товарами. В некоторых магазинах есть излишек некоторых товаров.
То есть, в магазин 127254 можно переместить такие товары со следующих магазинов — вложение 01.png.
2. Если выбрать конкретные магазины, то будет показано перемещение между этими магазинами, таких-то товаров (товаром будет меньше чем в первом примере) — вложение 02.png.
Вопрос в следующем, если выбрано перемещение между конкретными магазинами, как сделать чтобы показать весь перечень товаров, как первом примере. И было бы видно, что с других магазинов переместить другой товар, который нужен выбранным магазинам, нет возможности — вложение 03.png

A:Попробуйте в выражении анализа множеств исключить влияние фильтра по необходимым полям.
Например, sum({<Магазин=>}Количество)
Модель данных помогла бы сориентироваться лучше.

Q: Вопрос наверное мегапростой, но пока не нашел решения.
Как после применения фильтра в одном из полей добиться того, чтобы на всех остальных зависимых полях отфильтрованные значения исчезали, а список значений поля автоматически изменялся в размерах (как это происходит для таблиц)?
Нашел как просто скрывать отфильтрованные элементы, но это смотрится не очень профессионально, да и полоса прокрутки не отображает реальный объем значений

A: А почему бы для подобных целей не использовать как раз простую таблицу с одним столбцом? Тот же список, который обладает нужными вам свойствами.

Q: Возник такой вопрос: как применить функцию AGGR для всех записей измерения?
Есть поле АТМ и EventDiff. Но не для всех АТМ есть EventDiff.
Вот мне нужно выбрать те, для которых его нет (тоже самое, что сумма равна 0, т.к. нулевых значений нет)

Следующий код результатов не выдает, т.к. не находит таких результатов. Можно ли как-нибудь aggr применить для всех записей? Или как-то по-другому решить задачу.

Код:
if(aggr((sum({=$(vFromDate)<$(vToDate)'}>} EventDiff)),ATM)=0,ATM)
Так тоже не получается…
Код:
=if(IsNull(EventDiff),ATM)

A: Не совсем понятно, в каком виде вы хотите увидеть результат и с каких данных.
Для простого примера:
Код:
LOAD * INLINE [
ATM, diff
00002, 0:01:20
00003, 1:00:00
00004,
00005, 0
00006, 0:02:10
00007, 0:03:11
00008
00009, 0
];
Простое выражение в списке
Код:
=if(diff=0 or diff=»,ATM)
даст «нулевые» АТМ.

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

A: Чтобы можно было решить вашу задачу участниками форума, подготовьте пример исходных данных в табличном формате (для загрузки и тестирования) и контрольные цифры, если есть.

Q: Ни где не могу найти, но говорят, что есть такая штука, которая считает количество операций, к примеру:
X=Какая-тоШтука(vA-vB-vB-vB), тут возможно продолжение в виде условия.
X=3 (так как три раза вычли)

Могу очень, сильно ошибаться… или не точно изъясняться…

A:
len(
KeepChar( ваша строка, ‘+-/*&’)
)

Q: Как в получившемся значении убрать округление до целых.
К примеру в выражении получилось, 5,2 а в таблице показывает как 5?
Пробую использовать num(), но как-то не помогает, чувствую что-то делаю не так…

Если возможно, можно пример.

A: Num используем когда нам надо гарантировать числовое представление.
А ваша задача — округление. Обычно это функция round.
В Qlikview и Sense это функция из трех параметров
Round(x[, step[, offset]])

round(3,45,’0.01′) на выходе дает требуемое

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

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

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!

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

Q: Хочу сделать линейную диаграмму, где в зависимости от выбранного пользователем года строится YTD.
Но все YTD у меня показывают одинаковые значения. Делал так:
YTD 2015: Sum({<[Date__c]={">=01.01.2015<=$(=MAX(Date__c, 'DD.MM.YYYY'))"}>} FactCost__c)

YTD 2014: Sum({<[Date__c]={">=01.01.2014<31.12.2014"}>} FactCost__c)

YTD 2013: Sum({<[Date__c]={">=01.01.2013<=31.12.2013"}>} FactCost__c)

Но ничего в итоге не формируется. И это я так понимаю хардкод, можно ли без него обойтись?
FactCost — сумма продаж

A: В целом код верный и должно считаться все верно.
Возможно, нужно попробовать вот так:
Код: [Выделить]
YTD 2014: Sum({$<[Date__c]={">=01.01.2014<31.12.2014"}>} FactCost__c)

2. Если ничего не выводит, то можно попробовать двигаться «поступательно». Сначала посчитать (сделать таблицу) для одного года. Если удалось это сделать, то добавить еще один год и т.д.

3. По-поводу, харкода. Не до конца понимаю структуру данных (но это и не важно), но можно/нужно использовать таблицу периодов в которой уже есть MQT, YTD, MAT и т.д. Сейчас нет времени описывать это, возможно в дальнейшем опишу.

P.s. Все это описал для QlikView. Думаю, для QlikSense все где-то так же.

Q: Подскажите пожалуйста можно ли как то округлить время в диаграмме.
мне нужно округлить время:

A: Конечно, можно.
Если время в поле дата (29.02.2016 08:14:31), то можно сделать вот такой Dimension:

Код:
=If (WildMatch (Mid (DATE_TIME, 15, 1), 0, 1, 2), Mid (DATE_TIME, 12, 2) & ‘:00’, Mid (DATE_TIME, 12, 2) & ‘:30’)

P.s. Правда, мне кажется, такие штуки лучше рассчитывать на этапе загрузки. И данные с агрегируются и дашборд будет меньше нагружаться.

Q: Прошу Вас помочь с формулой, позволяющей сделать нарастающий итог по каждой неделе в каждой «группе материалов».

Понимаю, что нужно использовать set expression, но почему то она не работает
SUM({$ } Income-Outcome)

A: Малость с телефона, и немного не выспавшийся…
Но похоже в вашей формуле не хватает знака Равно в этой части для сравнения
{‘<=$(=Week)'}

Q:Давно у меня уже висит задача, с которой разобраться не могу. Сейчас появляются на работе задачи, поэтому она стала критичной.
К сути — у меня Set Analysis и конструкция if не распознают переменные с датой.

1) Касаемо Set Analysis:

Есть стандартный синтаксис, где задаются переменные с датой:
Код:
SET vYearMin = 2004;
SET vYearMax = 2014;
SET vYearCurr = 2015;
Потом данные переменные должны работать в формуле:
Код:
=SUM({$ <Год = {'>=$(vYearMin)<=$(vYearMax)'}>} Продажи)
В своём случае я задаю переменные:
Код:
SET vDate1 = «‘17.08.2015 00:00:00’,’DD.MM.YYYY HH24:MI:SS'»;
SET vDate2 = «‘19.08.2015 23:59:59’,’DD.MM.YYYY HH24:MI:SS'»;
Подставляю их в формулу:
Код:
=SUM({$ =$(vDate1)<=$(vDate2)'}>} Приход)

Формула выдаёт 0. К слову, данная конструкция не видит переменные, т. е. они становятся серыми, когда я убираю фигурные скобки и кавычки одинарные.
Забыла описать саму задачу.
Мне необходимо задать период с понедельника по среду, чтобы поле суммировало приходы за 3 дня. Причём, чтобы один столбец всегда показывал бы предыдущую неделю, а второй текущую — сравнительная аналитика по приходам нужна.
Возможно ли задать данные периоды динамически, чтобы постоянно не переписывать даты? И как быть с переменными, если он их не видит, есть ли другие способы решения данной задачи?
Наверное, стоит уточнить, что поле doc_date содержит массив дат (скрин 2 во вложении). Возможно ли несооттвествие из-за того, что данное поле содержит дату в таком виде? К слову, именно к этому полю у меня прикреплён календарь (скрин 3 во вложении), дату идентифицирует корректно.

2) Касаемо if:

Пишу формулу, но она очень странно работает:
Код:
if(DOC_DATE = $(vM1), sum(KOL))

Допустим, нужно просуммировать приход за 17 сентября. Пишу, если doc_date = 17 сентября (переменная), то суммируй приход.
Работает в моём случае эта формула так — она суммирует любые другие даты, кроме указанной. Когда же выбираю роковое 17 сентября, то она выдаёт формат даты (скрин 4 во вложении).
С чем это может быть связано? Или есть какие-то нюансы в данной конструкции, которые я не учла?

Буду благодарна за любую помощь, голову уже сломала, не могу понять, где я допустила ошибки.

A: Попробуйте даты задать в таком формате:

Код:
LET vDate1Tmp = MakeDate(2015,08,17);
LET vDate2Tmp = MakeDate(2015,08,19);

LET vDate1 = floor($(vDate1Tmp));
LET vDate2 = floor($(vDate2Tmp));

В скрипте DOC_DATE прописать как
Код: [Выделить]
floor(DOC_DATE) as DOC_DATE

Задаем даты. Преобразуем их в числа. При изменении дат, они автоматически будут преобразованы в числа, соответственно. Даты задаем в переменных с Tmp, в формулах используем переменные vDate1 и vDate2.

Соответственно подставляя в формулы

Код:
SUM({$ =$(vDate1)<=$(vDate2)'}>} Приход)

Формат времени указывать не обязательно, потому что и так возьмутся целые дни.
Пишу на коленке, поэтому могут быть «Очепятки» 🙂

Насчет if.
Судя по тому что я вижу, то могу предположить, что формула отрабатывает не корректно, потому что разные форматы дат. Поэтому лучше использовать все тот же floor (Округление в меньшую сторону). С числами проще работать, чем с датами.

Код:
if(floor(DOC_DATE) = floor($(vM1)), sum(KOL))

Q: Подскажите,пожалуйста. Есть ли такая возможность в qliksense отображать опорную линию(линию тренда) но не на всем графике, а продолжать ее при отсутствии данных за какой-то период.
Т.е если у нас в 2015 году есть данные только до октября, то линия тренда отображалась от октября до декабря. Я склоняюсь к тому,что такой возможности нет. Но решила уточнить на всякий случай.
Может возможно такую задачу решить через комбо диаграмму?Т.е основной график отобразить как линейчатую диаграмму, а недостающий период через линию?

A: Как-то так:
If( год= max(TOTAL год),месяц)

Q: Добрый день,есть такая маленькая проблемка. Есть месяц год в формате dual, Как можно посчитать предыдущий месяц. Т.е нужно чтобы при выборе месяц год,например сентябрь 2015, считались данные для августа 2015

A: Посмотрите похожие темы:
http://qlikview-forum.ru/qvf/index.php/topic,797.msg1711.html#msg1711
http://qlikview-forum.ru/qvf/index.php/topic,470.msg825.html#msg825
http://qlikview-forum.ru/qvf/index.php/topic,798.msg1716.html#msg1716
http://qlikview-forum.ru/qvf/index.php/topic,804.msg1746.html#msg1746

Можете выложить пример данных (кодом или таблицу), чтобы на вашем примере показать решение.

Q: Подскажите пожалуйста,каким образом,в Клик Сенсе, в выражениях, можно исключить определенные значение,например «медиак»?
Составил выражение: Count({<Компания='медиак'>}[Продажа Сумма]) .Не сработало!
Хотелось бы,чтобы исчезло деление (рисунок ниже)

A:Сообщений: 961
Страна: ru
Почитайте про анализ множеств.
По выражению, попробуйте так:
Код:
Count({<Компания-={'медиак'}>}[Продажа Сумма])

Q:Столкнулась с тем, что нужно задать немного противоречивое ограничение.
К сути. Есть 4 типа документов, по которым нужно выводить количество. С этой задачей прекрасно справляется данная формула:
Код:
=SUM({ $ } KOL)

Но помимо этого нужно, чтобы формула реагировала на выборку между этими 4-мя типами.

Получается, в итоге она по умолчанию всегда должна суммировать только эти 4 типа (на самом деле их больше 20), но если я выберу один из этих типов, то должна отображать сумму только по нему.
Читала блоги, мануал, но никак не пойму, как это реализовать.

A:Если правильно понимаю задачу, то думаю, можно решить где-то так:
Код:
Переменная: v_Value = TYPE
if (TYPE = ‘14286858’ or TYPE = ‘14286852’ or TYPE = ‘28835859’ or TYPE = ‘14286850’,
SUM({ $ } KOL),
SUM({ $ } KOL)
)

Q:Не подскажите как лишний символ $ и преобразовать строку в число.

Пример:
$980.00

A: есть и такой вариант:

Код:
num(Money#(‘$987.23′,’$#’,’.’ ))

Q:Есть таблица:
QUANT DATE
10 01.10.2015
5 02.10.2015
20 03.10.2015
1 04.10.2015
4 05.10.2015
Каким образом можно узнать QUANT на максимальную дату? В данном случае, это будет 4.
Например, пользователь может выбрать любой период — пусть будет август. И нужно узнать QUANT на 31 августа.
Или, пользователь выберет любые три дня — пусть будет 02.10.2015, 03.10.2015, 04.10.2015. И нужно узнать QUANT на 04.10.2015.

A:=avg({$} QUANT)

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

A:sum({<месяц={$(=Max(месяц))}>} shototam )

Если нужно только при выборке месяцев выбирать последний, а по умолчанию считать по всем, то

if( GetSelectedCount(месяц)>0 ,sum({<месяц={$(=Max(месяц))}>} shototam ),sum(shototam ))

Q: Скажите пожалуйста,есть ли в QV функция на подобии cluster как в Экселе. К примеру у нас есть владельцы карт скидочных 10 процентов скидка.Они делают покупки ( кто-то больше , кто-то меньше) Необходимо разбить их на сегменты, по как-му либо признаку, то есть найти закономерности между людьми.

A: Если я правильно понял о чем идет речь (кластерный анализ) то в Qlik-ах пока такого функционала нет, к счастью 🙂
Есть возможность выгрузить данные в R и загрузить обработанные обратно.
Но предварительно я бы сделал модель в кликвью и «покрутил» бы там подобный массив данных.

Q: Может кто-то подскажет, как сделать нечеткое сравнение двух текстовых полей в таблице.
Например, у меня есть 2 базы данных с названиями брендов. Мне нужно получить следующую таблицу:

Название бренда -База 1 Название бренда — База 2 Результат сравнения
Данон Донон Сходятся
Буги Вуги БугиВуги Сходятся

В QlikView есть нечеткий поиск, идея близка, только нужно выводить результат сравнения.
Нашла только одну тему на форуме, но без ответа https://community.qlik.com/message/8913#8913

A:Таблицу соответствий придется делать руками.
А потом — маппингом.
А я бы еще и первоисточники просмотрел бы на предмет унификации, чтобы не ломать потом голову на сопровождение.


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

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

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

Q: Есть задача посчитать доли по статусам продаж в каждом месяце.
К примеру: имеем следующие данные

Date Статус Sales
29.08.2016 Оплачен 100
30.08.2016 Возврат 200
31.08.2016 Оплачен 300
01.09.2016 Оплачен 400
02.09.2016 Возврат 500

В итоге нужно получить:

Август Сентябрь
Sum([Статус]) Доля, % Sum([Статус]) Доля, %
Итого 600 100% 900 100%
Оплачен 400 67% 400 44%
Возврат 200 33% 500 56%

В QlikSense сделала сводную таблицу, проблемы возникают с подсчетом показателя — Доля, %.
Sum([Sales])/Sum(total [Sales]) не катит, так как Sum(total [Sales]) считает сумму по всей базе, а не по определенному месяцу.
Еще пробовала так: Sum([Sales])/Aggr(Sum([Sales]),[Дата-Дата .autoCalendar.Month]), тоже не получается.
Помогите, пожалуйста.

A: Читаем хелп по sum()
А можно сразу здесь почитать, с примером по вашему случаю.
Вкратце, надо будет указать поле для определения уровня агрегирования Total.
Цитировать
Если слово TOTAL стоит перед аргументами функции, вычисление выполняется по всем возможным значениям, указанным в текущих выборках, а не только в тех, которые относятся к значению текущего измерения, т. е. измерения диаграммы игнорируются.

После префикса TOTAL может быть указан список, включающий одно или несколько имен полей в угловых скобках . Эти имена полей должны быть поднабором переменных измерений диаграммы.

Q: Приветствую есть ли аналог функции СУММЕСЛИ в QV?
Есть список номенклатуры на остаках всего порядка 80 000 артикулов.
Как подсчитать количество разных артикулов по которым была реализация?

A: Надо подсчитать количество уникальных артикулов, по которым была реализация.
count( distinct [признак реализации])

Q: Есть ли возможность организовать выражение, которое находило бы max и min не из диапазона значений, а из набора основных элементов или набора переменных, которые содержат в себе какие-то выражения?

На пальцах:
У меня есть 3 созданных мною основных выражения (двойные кавычки обозначают название):

«SLA»

num((1-if($(tnTicket1)=0,’-‘,($(tnTicket4))/($(tnTicket1)+$(tnTicket2_1)+$(tnTicket2_2)))
),
‘##,00%’
)

«SLAAIR»

num((1-if($(tnTicket1SLA)=0,’-‘,($(tnTicket4SLA))/($(tnTicket1SLA)+$(tnTicket2_1SLA)+$(tnTicket2_2SLA)))
),
‘##,00%’
)

«SLABLPS»

num((1-if($(tnTicket1BLPS)=0,’-‘,($(tnTicket4BLPS))/($(tnTicket1BLPS)+$(tnTicket2_1BLPS)+$(tnTicket2_2BLPS)))
),
‘##,00%’
)

Хотел бы на лист добавить элемент ключевого показателя эффективности, который принимал бы минимальное значение, принимаемое одним из этих основных элементов.

A: Попробуйте использовать функцию rangemin().
Например, при rangemin(1,2,3), данная функция вернёт минимальное значение, равное 1.
Также, можно воспользоваться вот таким выражением:
Min(ValueList(1,2,3))

Q: К сожалению, не удалось найти ответ на просторах форума. Эксперименты тоже не увенчались успехом :'( Есть подозрение, что это делается крайне легко, но как-то не получается((

Подскажите, пожалуйста: возможно ли сделать заголовок диаграммы с изменяющимся параметром? Например, «Количество продаж за *дата*». При этом *дата* — это некая формула, которая берет, например, текущий день или последний день из данных.

A: Конечно можно. Для этого следует прописать выражение возвращающее/формирующее текстовую строку, например:
Код:
=’Данные от ‘&$(vDataZaprosa)&’.’
Т.е. если в заголовке будет выражение начинающееся со знака = , то оно будет вычисляться, иначе просто отображаться.

Q: Всем привет, нужна помощь по получению долей. Есть таблица, в ней у меня указан контрагент и суммы.
Хочу получить, какую долю занимает каждый из них.
Пример:
Контр1 2345 рублей
Контр2 1111 рублей
Контр3 4343 рублей
Контр4 32131 рублей

Нужно добавить колонку, которая будет считать следующее:
Для контр1 — 2345 / Сумма(2345+1111+4343+32131) = сколько то процентов
Для контр2 — 1111 / Сумма(2345+1111+4343+32131) = сколько то процентов и т.д.

A: потребуется либо использовать измерение — период, либо включить условие в выражение фильтра.
Смотрите по справке — Анализ множеств.

Q: Есть формула:
Код:
=Sum( Aggr(
Count( DISTINCT {=$(=vStartDate)<=$(vEndDate)"}>} Product_id)/ Count( DISTINCT TOTAL {=$(=vStartDate)<=$(vEndDate)"}>} Product_id),
Order_id, category_name , Канал_привлечения(Общий) ) )
Как это упростить, чтобы не было 3-х уровней агрегации?

A: Да. Используйте подготовку данных на этапе загрузки

Q: Подскажите как посчитать для измерения коммутатор число контекстов в которых разные платы.
В приведенном примере таковых 2.

Коммутатор Контекст плата
MRC_09 2106136397 :8
MRC_09 2106136378 :9
MRC_09 2106136358 :10
MRC_09 2106136358 :11
MRC_09 2106136354 :9
MRC_09 2106136335 :10
MRC_09 2106136335 :10
MRC_09 2106136313 :10
MRC_09 2106136313 :11

A: Count(DISTINCT {<Контекст=,Контекст={"=Aggr(Count(Distinct плата), Контекст)>=2″}>} Контекст)

Q: Считаю число Call ID на определенном провайдере с определенного направления
count({<Провайдер={"MSK-1"}>} if(Направление=’Вход (усп)’, [Call ID]))
А как посчитать числоCall ID на всех провайдерах кроме 3-х определенных и только для 2-х направлений?

A: либо тот же Set Analysis, только:
{‘*’}-{‘Значение 1’}-{‘Значение 2’}-{‘Значение 3’}

Возможно с галочками где-то не так. Исключение из всего множества значений.

Q: строю график по выражению
=if(Count ([Call ID])>10,count(if(Направление=’Исх (усп)’, [Call ID]))*100/(count(if(Направление=’Исх (не усп)’, [Call ID]))+count(if(Направление=’Исх (усп)’, [Call ID]))))
измерение это счет.
Как построить график, в которым измерением бы было число счетов, а выражение тоже?

A: почитайте про использование функции aggr().

Q: Описание и логика
В заказах присутствую товары из разных категорий. Для определения кол-ва заказов (Orders) считаю веса:

Например, рассчитываем вес (кол-во заказов) для раздела «Home» : 1\2 + 1\3 + 1 = 1.83.
В таблице выражение вот такое:
Код:
Sum(Aggr(
Count( DISTINCT Product_id) / Count( DISTINCT TOTAL Product_id),
Order_id, category_name))

Тут все хорошо.

Проблема
Нужно определить кол-во новых клиентов за выбранный интервал.
Логика расчета должна быть аналогичная, т.е. через веса. Новый клиент — дата создания первого заказ в интервал если попадает.

Т.е. если интервал выбран 01.01.2015 — 02.01.2015 , то, как я понимаю, клиент с номером 1 уже не должен учитываться как-то в расчете. Как рассчитать этих новых клиентов и заполнить второй стоблик?
Скриншот прилагается. Буду очень благодарен за помощь!

Исходные данные такие:

Order:
User_id Order_id Date_insert
1 1 01.01.2015 12:33:12
1 4 01.01.2014 12:33:12
2 2 01.01.2015 11:23:11
3 3 02.01.2015 13:12:16

Basket:
Order_id Product_id
1 1
1 2
2 1
2 2
2 3
3 1
4 1

Category:
Product_id category_name
1 Home
2 Garden
3 Jewelry

A: Вроде бы сам разобрался. А вдруг кому пригодится, вот так можно:
Код:
Sum(Aggr(
Count( DISTINCT {}Date)>=vStartDate»}>} Product_id) /
Count( DISTINCT total {}Date)>=vStartDate»}>} Product_id) ,
Order_id, category_name))

Q: Строю диаграмму по выражению.
count(if(Направление=’Исх (усп)’, [Call ID]))*100/(count(if(Направление=’Исх (не усп)’, [Call ID]))+count(if(Направление=’Исх (усп)’, [Call ID]))).
Надо, чтобы при построении графика учитывались только данные, которые удовлетворяют условию Count ([Call ID])>1000. Как это сделать?

A: Можно использовать Set Analysis и в каждый Count добавить {<ИзмерениеАгрегации={"=Count ([Call ID])>1000″}>}. Будет что-то типа следующего выражения
Код:
count( {<Направление={"=Count ([Call ID])>1000″}>} if(Направление=’Исх (усп)’, [Call ID]))*100
/
(count( {<Направление={"=Count ([Call ID])>1000″}>} if(Направление=’Исх (не усп)’, [Call ID]))
+
count( {<Направление={"=Count ([Call ID])>1000″}>} if(Направление=’Исх (усп)’, [Call ID]))).
Тут мы оставляем только те Направления, по которым Count ([Call ID])>1000

Я бы ещё и конструкцию IF убрал, а вместо нее добавил вы условия в СА
Например:
Код:
count( {<Направление={'Исх (усп)'}*{"=Count ([Call ID])>1000″}>}[Call ID])*100
/
(count( {<Направление={'Исх (не усп)'}*{"=Count ([Call ID])>1000″}>} [Call ID])
+
count( {<Направление={'Исх (усп)'}*{"=Count ([Call ID])>1000″}>} [Call ID]))

Q: Подскажите, пожалуйста, ответ на следующий вопрос. Как в кликсенс построить диаграмму, в которой удельные веса будут считаться по временным периодам. В частности есть таблица с данными грузоперевозок, в ней есть маршруты машинами разной грузоподъёмности за разные периоды времени. Стоит задача вывести удельный вес в грузообороте машинами разной грузоподъёмности помесячно. У меня получается вывести только удельный вес по итогу за всё время следующим образом sum([Вес])/sum(total [Вес]), и вношу в диаграмму грузоподъёмность и месяц. Как преобразовать эту формулу на помесячный расчёт

A: Должно работать,
Код:
Sum([Sum-Вес])/Sum(total <Месяц> [Sum-Вес])
на вашем примере проверено — все ОК.

Q: Имеются такие данные:
Client, Product, Date, Sales
1, Apple, 01-01-2015, 750
1, Mango, 01-02-2015, 450
1, Limon, 01-02-2015, 350
2, Apple, 01-01-2015, 1750
2, Mango, 01-02-2015, 550
3, Limon, 01-01-2015, 250

(Выбираю Limon) Выражением
Код: [Выделить]
sum( {}) >} Sales)
я оставляю тех, кто покупал Limon. Это 1-ый и 3-ий клиент.

Вопрос: Как мне оставить тех, кто покупал только Limon и ничего кроме. Или, например, только тех, кто покупал Limon и Mango вместе ( среди покупок именно два товара вместе)?

P.S.: может есть другие варианты сделать так, чтобы выборка в списке «Product» работала не как»Или», а как «И» ? Возможно как-то переключать эти режимы?

A: Попробуйте через операции с модификаторами множества.
Код:
sum({ * }) >} Sales)

либо следующее выражение
Код:
sum({}) >} Sales)

Q: Нередко возникает вопрос о применении функции Qlikview AGGR(). В сети можно найти интересные примеры, но не понимая принципа работы AGGR() разобраться в них непросто.
Описание функции на сайте help.qlik.com

На простом примере начнем знакомство с этой функцией.

Возьмем абстрактный пример — факт чего-либо (# Сумма) по двум измерениям (Группа, Подгруппа)
(Извините, но вы не имеете доступа к галерее)
Загружаем данные в приложение Qlikview и создаем простую таблицу на три колонки:
(Извините, но вы не имеете доступа к галерее)
Мы получили данные о результатах работы групп по подгруппам с итогом.
Что еще мы можем получить из этого простого набора данных?

Отсортировав данные по сумме получаем минимальное и максимальное значение (13 237 и 96 040).
Включив опцию «Доля» для выражения суммы получим процент суммы для каждой строки в общей масссе. Того же результата можно добиться используя выражение —
Код:
Sum ([# Сделки])/Sum (TOTAL [# Сделки])
(Извините, но вы не имеете доступа к галерее)
Следующий вопрос — чьи результаты меньше 50% и более 80% от максимального показателя? Т.е. кто насколько отстает от лидера?
Т.е. требуется определить долю суммы каждого сочетания Группа-Подгруппа относительно максимального результата (отношение к 96 040).
Решается этот вопрос довольно просто с применением функции Aggr().
Код:
Sum([# Сумма]) / Max(TOTAL Aggr(Sum([# Сумма]), Группа, Подгруппа))
Почему не стоит использовать в знаменателе формулу max (TOTAL [# Сумма]) , показано на рисунке.
(Извините, но вы не имеете доступа к галерее)
Теперь следует разобраться, как работает эта функция. Согласно описанию, функция aggr() возвращает виртуальную таблицу из значений выражения рассчитанного по измерениям, указанным в качестве параметров. Аналогично выражению GROUP BY оператора SELECT SQL.
Т.е. запрос:
Код:
LOAD sum([# Сумма]) Resident SampleTable1 Group By Группа, Подгруппа
Дает тот же результат что и выражение:
Код:
Aggr(Sum([# Сумма]), Группа, Подгруппа)
Возвращаясь к ответу на поставленный вопрос, как определить группу лидеров и отстающих. Самое простое решение — использование визуальных подсказок для верхней и нижней границы, как показано на рисунке.
(Извините, но вы не имеете доступа к галерее)
Для отладки при составлении выражений можно использовать списки для просмотра результатов расчетов функции AGGR(). Здесь нет ничего сложного — используем выражение вместо поля при создании списка:
(Извините, но вы не имеете доступа к галерее)

Это самый простой случай использования функции AGGR(). На практике ее можно использовать и при создании измерений и для более сложных вычислений.
Если есть интерес, готов рассмотреть другие ситуации.

A: Использование AVG() без предварительного вычисления итогов внутри группы функцией AGGR(), может привести к ошибочным результатам.

И еще один пример с расчетом среднего:
(Извините, но вы не имеете доступа к галерее)
Как видим, среднее подсчитано в трех вариантах, и каждый может быть справедлив, в зависимости от ситуации и задачи.

Формулы для выражений:
Код:
Sum ([# Сумма])
Avg ([# Сумма])
avg(Aggr(Sum([# Сумма]), Группа, Подгруппа))
avg(Aggr(Sum([# Сумма])/Count(Подгруппа), Группа, Подгруппа))

Q: Дано:

Client, Product, Date, Sales
1, Apple, 01-01-2015, 750
1, Mango, 01-02-2015, 450
1, Limon, 01-02-2015, 350
2, Apple, 01-01-2015, 1750
2, Mango, 01-02-2015, 550
3, Limon, 01-01-2015, 250

Limon покупали все 3 клиента. А как мне найти тех клиентов, которые покупали и Limon и Mango ? Причем именно два товара вместе ( 2-ой и 3-ий клиент уже не подойдут).

A: Если в Дименшене оставить Client и прописать.

Код: [Выделить]
if(sum( {}) >} Sales)> 0,
if (sum( {}) >} Sales)>0,
sum(Sales),
0))

То суммы будут только у клиентов которые купили и то и то. Но правда если клиентов схлопнуть до других показателей, то данные могут разъехаться.

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

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

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

Q: Есть в одной таблице:
Дата, Выручка, Остаток
Не по всем дням есть остаток, т.е. был дефицит
Например из 30 дней в месяцев, остатков когда товара не было в наличие было 3 дня
Как рассчитать количество дней, когда остатков было = 0
?
A:Можно пойти от обратного.
Посчитать количество дней итого или вручную за период используя переменные и затем отнять количество дней когда товар был на остатках… примерно так:
count (Distinct Дата) — count (Distinct {< Остаток = {'>0′}>} Дата )
вместо count (Distinct Дата) можно использовать так: num(max(Дата)) — num(min(Дата))

Q:Количество случаев — Count(N_ZAP)
Сумма — Sum (Total [Количество случаев]) результат 0

A:Count(total <КСГ> N_ZAP)
http://help.qlik.com/ru-RU/qlikview/12.1/Subsystems/Client/Content/ChartFunctions/define-aggregation-scope.htm

Q:Есть 2 таблицы:

1. Дата, Артикул, Сумма продаж
2. Дата, Артикул, Сумма остатков

Если суммирую продажи на одном графике, то выводится сумма продаж за месяц.
Какой функцией на втором графике выводить не сумму остатков, а только остатки зна последний день данного месяца (или на первый)

?

A:Если у вас есть остатки на каждый день или на каждый последний день месяца, то их можно выводить вместе с данными по месяцам используя флаг рассчитанный на конец месяца, т.е. в календаре добавляем поле :
Код:
if(num(DateId)=num(floor(monthend(DateId))),1,0) as EOM_Flag,
а в графике или таблице где измерение = месяц в выражении пропишем:
Код:
sum({} СуммаПродаж)

Q:Что-то я не могу понять как работает Aggr. Точнее я знаю как эта функция работает, ведь не раз уже использовал, но в данной конкретной ситуации, что-то не могу разобраться.

Есть такая таблица. (Выбран весь апрель 2017)
Столбцы:
1) RowNo(Total) — мера, показыващая порядковый номер строки + так выводятся все строки на количество дней в выбранном периоде
2) Товар — тут всё понятно
3) ДатаКодОст — поле из календаря регистра для расчета остатков на лету.
4) Ост — остаток на дату
Код: [Выделить]
=Sum({<$(eClearPeriod), $(eDateOst)>}[КолДвиж]*[ТипДвиж])
5) ДниНалич — признак положительного остатка на дату
Код: [Выделить]
=If(Sum({<$(eClearPeriod), $(eDateOst)>}[КолДвиж]*[ТипДвиж])>0,1,0)

Переменные в set analisys, чтобы было более понятно
$(eClearPeriod) — убираем все выборки по периодам, чтобы они напрямую не влияли на набор данных
Код: [Выделить]
[Год]=,[ГодМесяц]=,[ГодКвартал]=,[ГодНеделя]=,[Месяц]=,[Квартал]=,[Неделя]=,[Дата]=,[День]=,[ДеньНедели]=

$(eDateOst) — применяем выборку из основного календаря на календарь остатков, т.к. они не связанны на прямую
Код: [Выделить]
[ДатаКодОст]=P({1<[ДатаКод]={">=$(=Min(Aggr(Min({<$(eClearRef)>} Total [ДатаКод]),[Товар])))<=$(=Max(Aggr(Max({<$(eClearRef)>} Total [ДатаКод]),[Товар])))»}>}[ДатаКод])

$(eClearRef)- убираем все выборки по справочникам, чтобы они напрямую не влияли на набор данных
Код: [Выделить]
[Товар]=,[Аптека]=,[Партия]=

Теперь я просто хочу свернуть эту таблицу и получить просуммированые остатки по каждым дням и количество дней наличия. Всё казалось очень просто — использовать Aggr().
1) Для остатка
Код: [Выделить]
Sum(Aggr(Sum({<$(eClearPeriod), $(eDateOst)>}[КолДвиж]*[ТипДвиж]),[Товар],[ДатаКодОст]))
2) Для дней наличия
Код: [Выделить]
Sum(Aggr(If(Sum({<$(eClearPeriod), $(eDateOst)>}[КолДвиж]*[ТипДвиж])>0,1,0),[Товар],[ДатаКодОст]))

Но не тут то было. В полученной таблице всё по 0:
http://i95.fastpic.ru/big/2017/0522/59/bed58e3c7ba84fcb49c6c4e123ab5a59.png
http://i92.fastpic.ru/big/2017/0522/5f/53a2ae5c36a81dc2a83b542c70f7075f.png
A:
В общем после упорнoго гугления выяснилось, что если во внутренней агрегации есть set analysis, то в большинстве случаем такой нужно указывать во внешней агрегации.

Т.е.
вместо
Код: [Выделить]
Sum(Aggr(If(Sum({<$(eClearPeriod), $(eDateOst)>}[КолДвиж]*[ТипДвиж])>0,1,0),[Товар],[ДатаКодОст]))
нужно было указать
Код: [Выделить]
Sum({<$(eClearPeriod), $(eDateOst)>} Aggr(If(Sum({<$(eClearPeriod), $(eDateOst)>}[КолДвиж]*[ТипДвиж])>0,1,0),[Товар],[ДатаКодОст])

Q:Я новичок в освоении qlik, завалился кучей информации и не много «поплыл».
Не могу разобраться, как мне кажется, с элементарным вопросом.
Извиняюсь, если данная тема была на форуме, я не нашел решения.

Как посчитать сумму продаж на определенную дату с начала года?
Насколько я понимаю, нужно использовать функцию InYearToDate.
Кажется, конструкция выглядит так : sum(if (InYearToDate (OrderDate, BaseDate, 0), TotalSales)), но я не совсем понял что вписать вместо BaseDate… какую дату? нужна ли переменная ?

A:Хорошо бы увидеть модель данных, — в частности интересует, как устроен календарь.
Полагаю, что в любом случае лучше будет использовать Set Analysis.
Рекомендую почитать статейку о том, как можно выстраивать и использовать время в модели. Вложил.

Также, подход к решению задачи будет зависеть от того, какой конкретный отчет требуется получить.
На вкладке «Выражения» свойств диаграмы есть опция рассчитывать выражение накопительно. В ряде случаев этого может быть вполне достаточно.

Q: Есть таблица: «Выручка за месяц», «Выручка за месяц», «Количество транзакций».
На лист устанавливаю объект «Текст и изображение», там пишу функцию Above([Выручка за месяц], 1). Отображается пустота, почему?
Пробовал так: {<Месяц={$(=Max(Месяц)-1)}>} [Выручка за месяц] тоже пустота.

Что я делаю не так?

A: Объект текст выводит результат выражения по всей выборке и не производит расчетов по измерениям.
Если цель выдать показатель именно таким образом, следует использовать Aggr().
Но для отладки рекомендую начать с таблицы, в объекте диаграмма.

Q: Сделал в таблице вывод «месяц, год»
month(CREATEDAT) & ‘ ‘ & year(CREATEDAT)

Почему то за сен, окт, ноя 2016 года оказались в низу списка, выше пошли июл 2011 и наст. времени.

в таблице с выводом полной даты все нормально. Что может быть?

A:
Все верно, сортировка текстом не даст ожидаемого результата.
Используйте функцию dual().
Например,
Код:
dual(month(DateId) & ‘-‘ & year(DateId),year(DateId) & num(month(DateId), ’00’)) as ‘Месяц-год’,

Q: Никак не могу справиться с такой задачей.
Есть сущность — контекст. В нем могут быть входящие и исходящие вызовы.
Т.е. имеем Контекст и в нем
Call ID,Направление.

Направления может иметь такие значения:
Вход (усп)
Исх (усп)
Исх (не усп)
Вход (не усп)

Необходимо посчитать число вызовов для контекстов, в которых есть только исходящие вызовы

A: ОК, возможны два варианта.
Либо в скрипте подготовить массив для контекста с флагам по направлениям.
Либо написать выражение с вложенным анализом множеств.
Хелп по ссылке

Я бы сделал два варианта и сравнил бы их по производительности на больших массивах данных.

Q: Во вложении пример Диаграмма (Сводные таблицы). Одна и та же, но
1. В развернутом по Месяцу
2.В свернутом по Месяцу виде

Задача Посчитать количество сработок Клиента за месяц, т.е. при сворачивании по месяцу должно получиться 5 (как в верхней таблице), а не 1 как сейчас.

Пробовал воспользоваться Aggr, необходимого результата не получил

A: Продублируйте первую таблицу в Aggr() и возьмите сумму по полученной таблице(по полученным значениям):
Sum(Aggr(Count({$<[Сумма]={">0″}>} [Партнер_ID]), Партнер, Филиал, Месяц-Год,День))

(возможно ли что к названию партнера привязано несколько id?)

Q: У меня ситуация следующая. Есть отчет, если проще то группа, в ней энное количество товара. Далее за выбранный период отображаются в сводной таблице сколько продалось товара, и остаток только на товар где продаж больше нуля. Реализовано функцией IF() продажи больше чем ноль то остаток показываем, если меньше или равно нулю, то остаток показываем ноль. А в настройках стоит, что позиции с нулевым выражением скрываем. Проблема в том, что итоги показывают остаток больше, так как итог сначала суммирует общее количество продаж и только потом проверяется функция IF().
Можно как-то заставить итог по остаткам отображать правильную сумму?

A: Вместо If пользуйтесь анализом множеств ( на эту тему сегодня новая статья вышла)
Попробуйте
sum({<[#Сумма]={'>0′}>} [#Сумма остатка])

Q: Есть задача:
Массив данных: Группа товара, товар, Сумма, Кол-во.
Вывести в одной таблице товар который в сумме дает 50% от итога (наибольших) по сумме
и вторая половина 50% (наименьших) по сумме.

A: подробнее можно было бы написать с подробным примером.
Надо использовать выражение типа
Код:
If(RangeSum(Above(Sum(Sales),0,RowNo()))/Sum(TOTAL Sales) <= 0.8,Sum(Sales)) и читать https://community.qlik.com/blogs/qlikviewdesignblog/2014/09/15/abc-analysis https://community.qlik.com/message/1152541#1152541 Q: В Qlik Sense подгружены плановые показатели по дням за текущий месяц (за все дни текущего месяца). Если сегодня 9 число, то надо посчитать сумму по Плану за 9 дней, если 10 число, то за 10 дней и т.д. Подскажите, пожалуйста, как это сделать?

A: Вариантов на эту тему существует несколько.
Самый простой для начинающих, создать флаговое поле в скрипте на все даты от начала месяца до текущей даты, скажем MTD равный 1 для нужных дат и составить выражение:
Код:
sum( {} План)
или не создавая поля
Код:
sum({=$(=MonthStart(Today()))<=$(=Today())'}>}План)
Но в этом случае приложение будет зависить от дня просмотра, есть еще несколько вариантов и смысл у всех один — использование фильтра, т.н. «Set analysis and set expressions»

Q: столкнулся со следующей проблемой в применении aggr, по которой прошу вашего подсказа или ссылки на источник информации для решения.

1. Aggr(sum(выражение), Номенклатура).
2. Действует (и имеет значение) выборка месяца.
3. Выражение строится на сет анализе, «отменяющем» действие выборки, — для позиций номенклатуры вычисляются некие значения(продажи предыдущих — за пределом выборки — периодов).
4. Аггрегирую по номенклутуре для того, чтобы получить значения для склада.

Насколько я могу судить, aggr вычисляет Null для позиций, которые не продавались в текущем месяце и отрезаны, тем самым, выборкой по месяцу. Такое может быть? Или все же мне надо разбираться с выражением?

Написал максимально общо, поскольку предполагаю, что ответ все-таки на поверхности. Если не так — запощу модель.

A: Из последнего руководства по Qlik Sense
ALL qualifier

In QlikView, the ALL qualifier may occur before an expression. This is equivalent to using {1} TOTAL. In such a case the calculation will be made over all the values of the field in the document, disregarding the chart dimensions and current selections. The same value is always returned regardless of the logical state in the document. If the ALL qualifier is used, a set expression cannot be used, since the ALL qualifier defines a set by itself. For legacy reasons, the ALL qualifier will still work in this version of Qlik Sense, but may be removed in coming versions.

http://help.qlik.com/en-US/sense/3.1/Subsystems/Hub/Content/Scripting/functions-statements-not-recommended.htm

Q: Необходимо посчитатьCall ID только для тех у которых
— код завершения =503
— отношение числа Call ID к числу код завершения=503 >10

Вероятно криво делаю так
=if(Count ([Call ID])/Count ([код завершения]=503)>10 ,count(if([код завершения]=503, [Call ID])))
В итоге не получаю данных для отображения, хотя они должны быть.

A: Советую изучить такую чудесную вещь как Set Analysis

Поле «для тех у которых» заменим словом «Объект» =)

Не совсем понял условия но должно быть что-то вроде этого
Код:
Count( {$<[код завершения]={'503'}, [Объект]={"=Count ([Call ID])/Count({$<[код завершения]={'503'}>}[Call ID])>10″} >} [Call ID])

Получаем следующее:
1) [код завершения]={‘503’} — мы делаем выборку по коду завершения, соответственно в массив данных для обработки попадают только те объекты у которых в принципе есть вызовы с таком кодом завершения
2) [Объект]={«=Count ([Call ID])/Count({$<[код завершения]={'503'}>}[Call ID])>10″} — мы для каждого объекта считаем отношение общего количества Call ID к количеству Call ID с кодом завершения=503, и оставляем только те объекты у которых это отношение больше 10

ПС
Возможно я не очень правильно представил себе модель данных и условия. Но общий ход мыслей должен быть ясен.

Q: Создана родительско-дочерняя таблица с помощью функции Hierarchy.
Задача состоит в том, чтобы в сводной таблице иметь возможность раскрыть созданное дерево, при этом чтобы значения показателей на различных уровнях не суммировались (значения не аддитивные).
Пробовал через sum() и only(), не вышло.

Почему не в объекте «список» в виде дерева — множество атрибутов, цветовое кодирование, сортировка и т.д.

A: Решил с помощью dimansionality()
который фактически совпадает с длиной нода в дереве (NodeDepth)

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

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

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

Q: Коллеги, подскажите, может есть какое простое решение:
есть отчет, в отчете порядка 10-15 различных таблиц.
и в каждой таблице нужно сделать порядковую нумерацию строк.
Пример:
Такая таблица есть
Менеджер Значение
Иванов
152
Петров 325
Сидоров 856
Быков 789
Сусанин 548
Такая нужна:
Порядковый номер Менеджер Значение
1 Иванов 152
2 Петров 325
3 Сидоров 856
4 Быков 789
5 Сусанин 548

Может есть какая стандартная настройка таблиц? или пробовать через FieldNumber ?

A: Судя по представленным таблицам, порядковый номер — вопрос оформления таблиц, и никакой смысловой нагрузки не несет, кроме обозначения номера строки.

Если таблицы это чарт, то используйте выражение =1 с включенным аккумулятором. Для плоских таблиц это позволит сохранить возможность динамической сортировки по любому столбцу.

Q: Добрый день, что то я совсем заблудился со сводной и aggr
Мне необходимо рассчитать конверсию покупателей в группе товара по месяцам.
Модель диаграммы:
Измерения:
[TITLE1];[YEARMONTH]
Выражения:
уникальные чеки которые покупали продукцию из группы [TITLE1]
Код: [Выделить]
Count(Distinct IDCHECK)Все уникальные чеки за период [YEARMONTH]
Код: [Выделить]
aggr(Count(Distinct IDCHECK),YEARMONTH)конверсия будет равна отношению двух выражений
————————————-
К сожалению
Код: [Выделить]
aggr(Count(Distinct IDCHECK),YEARMONTH)Выводит общее к-во чеков за период только по одной произвольной группе ????
Что я делаю не так…..
https://community.qlik.com/servlet/JiveServlet/download/1285440-282591/%D0%9A%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F.qvw
A: победил ))
Count(Distinct Total IDCHECK)

Q: Всем привет.
QlikSense
Подскажите как можно выбрать например только 2 определенных значения из измерения, чтобы в отображение фильтра были только они, а другие были скрыты.
Сразу скажу запрос править нет возможности.

A: Воспользуйтесь функцией aggr()
Выражение примерно такое:
=aggr(only({<[Поле]={'Значение1','Значение2'}>}[Поле]),[Поле])

Q: Еще вопрос, а можно как то гвоздями прибить например определенные значения фильтра, чтобы они всегда были выбраны априори, а остальные уже можно выбирать.

A: Можно.
Используйте в формулах анализ множеств.
В зависимости от задачи и модели данных возможны варианты, например с флагами на значения постоянного фильтра и, опять же, анализ множеств.

Q: Помогите, пожалуйста, с объединением измерений!

Имеются данные по 2 разным типам транзакций (запасы и взаиморасчеты, пример сильно упрощенный):

1. ОсновнойМенеджер — КредиторскаяЗадолженность
Иванов 1000
Петров 2000
Сидоров 3000
2. Инженер-ОстатокНач
Иванов 10000
Петров 6000
Васильев 7000

Как создать диаграмму (сводную таблицу), которая объединила бы данные:

Менеджер/Инженер-КредиторскаяЗадолженность-ОстатокнаНачало
Иванов 1000 10000
Петров 2000 6000
Сидоров 3000 —
Васильев — 7000
?
https://community.qlik.com/servlet/JiveServlet/download/1269594-278703/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80.qvw

A: Методом проб и ошибок нашел решение.

В диаграмме Добавить вычисляемое измерение Инженер&ОсновнойМенеджер.
Но в реальном кейсе возникли некоторые проблемы с исчислением выражений, связанных с агрегированием.
Есть еще варианты решения?

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

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

Q: В диаграмме значения выражений ограничены следующими модификаторами в выражении множеств:
Sum({}SalesUAH)
Все ок, первый скриншот.

Кода же я добавляю еще одно выражение как константу или переменную (некое среднее значение, для сравнения с столбцами), то значения оси Х как бы скидываються и показываются все возможные варианты, которые были «отфильтрованы» модификаторами в выражении множеств. Второй скриншот.
Можно их как то не показывать?

A: Можно добавить то же условие выражение для фильтрации?
Или использовать опорные линии.
В Qlikview это «строка ссылки» (трудности перевода 🙂 )

Q: В диаграмме написал вот такое выражение множеств:
(Sum({}Sales).

Но хотелось бы, чтоб при выборе «St1» или «St2» или «St3» данные отфильтровывались, соответственно выбору. Как надо переписать запрос, чтобы данные ограничивались/фильтровались при выборе одного из значений «ТМ»?

A: Используйте операции с множествами. В данном случае знак * — пересечение множеств

Для примера
Код:
Sum({}Sales

ТМ={«St1», «St2», «St3»} — множестов с 3 предопределенными элементами ТМ
ТМ=P(ТМ) — все возможные элементы ТМ (влияют все текущие отборы в приложение)

Тогда если пользователь выберет кого-то из этих трех предопределенных элементов тогда в таблице останется только он один.
Но есть моменты. Если пользователь выберет, допустим, год 2016 и какого-то из 3 там нет, то его не будет в таблице.
Нужно играться с множествами пока не получите то что хотите

Q: Возник такой вопрос:

Есть таблица с полями:
«Клиент», «Период транзакции», «ПериодНачМес «, «ПериодКонМес».

Хочу посчитать сумму продаж за период между «ПериодНачМес » и «ПериодКонМес».
Добавляю меру и пишу такое выражение:

Sum({$<Период={">=ПериодНачМес<=ПериодКонМес"}>} [Стоимость])

ПериодНачМес = «Дата начала месяца последней транзакции».
ПериодКонМес = «Дата окончания месяца последней транзакции».

Не работает.

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

A: Не вполне понятно как выглядит ваша исходная таблица.
В частности, на первый взгляд должно срабатывать выражение sum(Стоимость) в случае, если вашими измерениями являются «ПериодНачМес» и «ПериодКонМес».

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

Например на одном листе есть сводная таблица
» Магазин, Группа товара, Товар, ДАТА, и рассчитанный результат если есть на остатках то 1 и если есть продажа то 1. все расчеты идут IF больше 0 то 1.

Соответственно если скрыть дату или товар, то сначала формула считает if полностью по свернутый показатель(по всем товарам/датам) а затем в ячейку вписывает 1.

Можно ли оставить эту сводною таблицу в развернутом виде и ссылаясь на нее использовать рассчитанные показатели в другой сводной таблицы для дальнейших расчетов. Например просуммировать 1 и получить количество дней продаж каждого товара.

Понимаю что можно подготовить данные в скрипте, но это не всегда можно сделать. И требования постоянно меняются, а отчеты растут.

A: Использовать массив данных одного объекта как источник данных для другого … сомнительная идея в принципе.
У клика хороший набор функций, может стоит посмотреть на решение задачи в этом ключе?
Например, количество дней продаж можно посчитать примерно так
Код:
count({<[Продажи Количество]={'>0′}>} distinct Дата)

Q: Есть такая таблица
Клиент , Товар , Цена
Клиент1, Мышка, 100
Клиент1, Монитор , 100
Клиент1, Клавиатура, 100
Клиент2, Клавиатура , 100
Клиент2, Монитор , 100
Клиент 3, Монитор , 100
Клиент 3, Клавиатура, 100

Как найти клиента не купившего не одной мышки ?

A: Оптимальный вариант использовать Set Analysis.

Например, выражение вида
Sum({<[Клиент]={"=SubStringCount(Concat([Товар]),'Мышка')=1"}>}[Цена])

выборка [Клиент]={«=SubStringCount(Concat([Товар]),’Мышка’)=1»} исключает всех клиентов, которые не покупали мышки.

Чтобы было понятнее как получилось такое выражение немного иллюстрации
http://i95.fastpic.ru/big/2017/0628/f2/e7cecb229fdf9b29319d23b0613c7ff2.png

Q: Нужно создать отчет с подсчетом прироста чеков. С учетом работы салонов.
Тк в прошлом году в мае месяце Салон 1 работал только 10 дней. То и сопоставить майские дни за 2017 г нужно с днями за 2016 г, когда салон был открыт.

Наименование салона | Кол-во чеков 2017 | Кол-во чеков 2016 | Прирост чеков
Салон 1 | 1000 | 400 | 150 %
Салон 2 | 1200 | 1300 | — 8%

Верный вариант
Наименование салона | Кол-во чеков 2017 | Кол-во чеков 2016 | Прирост чеков
Салон 1 | 500 | 400 | 25 %
Салон 2 | 1200 | 1300 | — 8%

A: С ходу выражение не составлю, но скорее всего нужно играться с Set Analysis.

Так же, если вы постоянно сравниваете временные отрезки, то стоит обратить внимание на такую штуку как Alt State.
Вкратце:
В приложении будет несколько изолированных «состояний». Выборки в одном состоянии не будут влиять на другие. Т.е. одна таблица строится в одном состоянии, вторая во втором. Либо в одной таблице можно применять выборки из разных состояний.
Тогда пользователь уже сам выбирает какие периоды он хочет сравнивать и делает соответствующие выборки в каждом из состояний. Для облегчения выборок можно настроить ему стандартные кнопочки DateToDate, MonthToMonth, YearToDate и т.п.

Q: подскажите пож. как можно в Qlik осуществить следующее.

1) как сравнить среднее значение(цена) по подгруппе со значениями(цены) в группе, для выявления кто купил по большей цене чем средняя(Avg(Total)) или меньшей.

я написал такую формулу:

if ([цена без ПДВ]>=Aggr (Avg(TOTAL ([цена без ПДВ]),[ID Access]), ‘выше среднего’, ‘ниже среднего’))

но Qlik по ходу не берет в расчет Total, а сравнивает все значения в группе.

A: Не совсем понятно зачем Вы используете Aggr() в данном выражении. Более того, зачем его использовать снаружи Avg(). Таким образом, Вы можете получить более 1го среднего значения цены для каждого допустимого ID Access значения.
И похоже что у Вас неправильный синтаксис: Avg(TOTAL ([цена без ПДВ]) — лишняя круглая скобка перед словом «цена».
Рекомендую либо поменять местами Avg и Aggr — если все же нужно учитывать ID Access значения.
Либо убрать Aggr вовсе.
Также формулу Avg можно прописать следующим образом:
Avg(TOTAL <[ID Access]> [цена без ПДВ]) — это выражение будет Вам возвращать среднюю цену внутри каждого значения [ID Access], при условии что ID Access используется как Измерение в диаграмме/таблице.

Q: Что то я совсем заблудился со сводной и aggr
Мне необходимо рассчитать конверсию покупателей в группе товара по месяцам.
Модель диаграммы:
Измерения:
[TITLE1];[YEARMONTH]
Выражения:
уникальные чеки которые покупали продукцию из группы [TITLE1]
Код:
Count(Distinct IDCHECK)
Все уникальные чеки за период [YEARMONTH]
Код:
aggr(Count(Distinct IDCHECK),YEARMONTH)
конверсия будет равна отношению двух выражений
————————————-
К сожалению
Код:
aggr(Count(Distinct IDCHECK),YEARMONTH)
Выводит общее к-во чеков за период только по одной произвольной группе ????
Что я делаю не так…..

A: Аггр возвращает список, и в таблице он подставит то значение, по которому формируется строка.
С Total не экспериментировали?
Count(Distinct Total IDCHECK)

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

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

FAQ по техническим вопросам о Qlik Sense/Qlik View часть 2

Q: прошу помощи,
у меня нет опыта, поэтому мои вопросы могут показаться неадекватными.
Сценарий -1:
1. есть данные которые нужно визулизировать анализировать и все такое, допустим объем данных 3 гигабайта
2. допустим что для обработки данных объемом 3 гигабайта в оперативной памяти, нужно 8 гигабайт оперативки
3. Потом вдруг понадобилось обработать объем данных 5 гигабайт
Вопрос, как поведет себя qlik sense? он не сможет обрабатывать 5 гигабайт? сможет обрабатывать но начнут притормаживания? qlik sense будет использовать что-то типа файла подкачки на диске?
Сценарий-2:
1. Есть БД под управлением Oracle, в этой БД содержится сотни милионов записей фактов, каждая запись имеет дату.
2. пользователь который не имеет технической квалификации по работе с системой, должен выбирать в протсом интерфейсе период данных за которое он хочет анализировать данные
вопрос — в qlik sense есть возможность натсроить интерфейс/права так чтобы учитывалась период данных при загрузке данных из БД в Qlik

A:З гигабайта в источнике в процессе создания приложения на QLIK-продуктах чудесным образом превращаются в существенно меньший объем. 🙂
Приложения Qlik Sense и Qlikview работают в оперативной памяти, отсюда и требования к ее объему, чтобы все работало 🙂
По доступам, на официальном форуме эта тема довольно долго обсуждалась. Решения есть.

Q: Просмотр профиля

Планируем переход на продукты Qlik. Есть несколько вопросов
« : Ноябрь 01, 2015, 12:02:23 am »
Добрый день
Наша Компании рассматривает варианты перехода на решения от Qlik. Хочу уточнить несколько технических вопросов, важных для нашей инфраструктуры:
1) Существует продукт для трансляции дашбордов в интернет с наших локальных серверов (https)?
Если существует, то по принципу облачных вычислений на серверах Qlik, или на локальных серверах клиента?
2) Каким образом производится администрирование учетных записей пользователей и уровень доступа к данным?
3) Продукты от Qlik работают с источником кубом табличной модели MS SQL Analysis Services (SSAS)?
Буду очень благодарен за помощь и советы

A: Таким продуктом могут быть системы Qlik (как QlikView, так и Qlik Sense).
Для трансляции дэшбордов в интернет с локальных серверов (https) достаточно стандартного функционала QlikView, при этом нет необходимости дополнительных настроек и разработок, поскольку система работает в стандарте HTML5.
Дополнительно к этому существует возможность размещения и в облаке (для Qlik Sense).
Администрирование удаленных учетных записей производится через Qlik Management Console, где определяется уровень доступа к приложениям и элементам самого документа (визуализациям: диаграммам и графикам).
Дополнительно можно использовать Section Access через скрипт в QlikView, который позволяет разграничить права доступа к данным для пользователя или группы пользователей.
Продукты Qlik напрямую не работают с MS SQL Analysis Services, но могут брать данные из модели, на основе которых генерируется табулярная модель.

Q: А это означает, что вы можете начать свое лето за увлекательным изучением Qlik Sense Desktop и его 4 новых функций, включая следующие.
1. Интеллектуальная загрузка данных. Подключение источников данных на основе предложенных вариантов имен поля и значений данных.
2. Интеллектуальное сжатие данных. Миллион или даже миллиард точек данных? Нет проблем с обновленными точечными данными.
3. Печать и экспорт. Простая печать объектов и листов как PDF или изображения.
Но это всего 3 функции? Нет, есть еще одна!

Теперь вы можете обогатить содержимое и аналитику с помощью Qlik DataMarket. Это предложение «данных как услуги» (DaaS) обеспечивает доступ к готовым к использованию внешним источникам данных, таких как данные о погоде и курсе валют, и доступно бесплатно непосредственно в Qlik Sense Desktop.

A: Работа с источниками данных стала проще, не пойму роль диспетчера данных. Измерения и меры все равно прописываются из просмотра.
В целом — отлично!
Data Market куцая в бесплатном варианте, но может и пригодится. Погодных данных по России нет.

Q: Подскажите пожалуйста касательно опции os events log path (рисунок ниже) , запускали макросы и форматировали как по инструкции,какие-то данные загружало,но не совсем понятно как меняется картина в общем.,т.е. какие уникальные данные можно получить от журнала событий ОС .Дает ли это возможность использовать анализ не только для клика .

A: Вопрос не в приложении. Оно лишь загружает данные и отображает их своими объектами.
То же самое можно делать в различных системах. С разным уровнем сложности и своими особенностями.
Анализ событий (логи) в системах сделан более менее похоже. Как правило, в каждом случае есть возможность либо формировать логи в удобный для Qlikview формат либо они уже в текстовом формате.
А если какие-то данные уже из приложений надо выгружать для других систем.
Ну для начала попробуйте самый простой способ:
store * from … into file.csv (txt);
Можно параллельно с сохранением QVD файла делать и текстовую копию, удобно для отладки в работе с небольшими данными.

Q: Добрый день все!Вопрос следующего характера: возможно ли ивенты windows поместить в отчеты от Клика?Если да,то примерно каков ход действий?

A: https://community.qlik.com/docs/DOC-4307#comment-19886
Задача больше не по клике а к сисадмину. Требуется настроить логирование в удобном виде.
Либо конвертация evtx в csv, либо в MSSQL, а дальше «как по маслу» 😉

Q: Имеется очень легкий вопрос, на который, пока не нахожу ответа.

Как вывести в txt-файл лог загрузки «Script Execution Progress»

A: флажок в настройках документа «Создание файла журнала» решит проблему.
Если требуется отдельный лог на каждый запуск, то ставим «галочку» в опции — «Отметка времени в имени файла журнала».
Файлы будут в той же папке, что и приложение.

Q: Коллеги, задался вопросом. А возможно созданное приложение встроить на сайт?
Как я понимаю что бы встроить Qlik View на сайт, необходимо обладать серверной лицензией и собственно сервером. А вот как дела обстоят с Qlik Sense? Вроде где-то читал, что он специально сделан, что бы облегчить функции интеграции с web?

A: Когда запускаешь Qlik Sense, даже не локалке, уже запускается веб сервер.
Проверьте http://localhost:4848/hub

Q: Добрый день коллеги:
1. Создал приложение.
2. Загрузил его в cloud
3. А вот просмотреть его как пользователь не могу, постоянно пишет http://prntscr.com/7gzjin

Вопрос: что делать?
Пробовал со всеми последними версиями браузеров, не работает.

A: Облако еще только-только начинает работать.
Обращайтесь в облачную поддержку.

Q:
Не подскажете как можно подключиться в клике по sftp?

A:
Но каталоги с FTP можно подключить как сетевые диски и, теоретически, использовать как обычно.
Но с учетом того, что быстродействие таких соединений не всегда радует, я бы рекомендовал синхронизацию папок сервера с локальными папками, например через WinSCP.

P.S. Полезные ссылки
http://ramzes.ws/blog/synchronize-ftp
http://lpf.maxsite.com.ua/use-winscp
http://winscp.net/eng/docs/lang:ru

Q: Подскажите, какой аналог DateDiff есть в клике?

A: Есть такой вариант,
DateDiff в составе библиотеки функций для Qlikiview и Qlik Sense
Базовый набор функций даты и времени в документации

Q: В таком случае — синхронизация папок.

Это что такое?)

A: Кстати, встречался с использованием Яндекс-диска для синхронизации между удаленными станциями.
Вот уж чего не следует делать, так использовать такие сервисы в работе.

Q: Добрый вечер. Не подскажите ли возможно в qlikview прослеживать изменения данных, используемых в программе, разными пользователями. В случае, например, если первоначальный файл, используемый в qlikview, корректируют одновременно 2 работника?

A: Можно информацию поподробнее:
— состав QlikView (локальная, сервер, Publisher).

Q: Доброго всем времени суток. достался в наследство qlikview. первоначально машина была в рабгруппе, после того как завели в домен, не работают отчеты у пользователей. Подскажите как победить проблему. http://img.flashtux.org/img13350c011ff4x89482e3e.png

A: Скорей всего, машинка с бесплатным вариантом Qlikview.
Сменили учетную запись, программа решила что ее поставили заново и включила ограничения использования. Почитайте в документации нюансы по поводу использования бесплатной версии.
И судя по всему, вы или до вас уже использовали 3 попытки. Осталась одна попытка и риск вообще не открыть приложения.
В этой ситуации следует либо решить вопрос с лицензиями (т.е. купить), либо создать приложения заново.
Перенос приложений много времени не займет, главное чтобы старое открывалось.
Скрипт копируется через текстовый файл, объекты создаются заново. Если, конечно же, не очень много хитрой графики и дизайна.

Q: Инструменты разработчика Qlikview/Qlik Sense — Notepad++

A: Со временем, даже у начинающего разработчика накапливается набор различных скриптов обработки и подготовки данных. Работать с ними в Qlikview не очень удобно, порой приходится держать открытыми несколько сценариев, компонуя новое приложение.
Можно использовать обычный текстовый редактор и выгрузку в qvs-файлы, но без расцветки работать уже непривычно.
Отличным решением проблемы служит бесплатный редактор Notepad++ и библиотека синтаксиса Qlikview.

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

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

FAQ по техническим вопросам о Qlik Sense/Qlik View часть 1

Q: Вам нужна постоянная авторизация при запуске Qlik Sense?

A: Qlikview и Qlik Sense имеют одинаковое ядро, и должны одинаково выполнять скрипты.
Если Qlik Sense и Qlikview одинаково будут выпадать в ошибку при выполнении скрипта — ошибка в алгоритме, и новая версия Qlik Sense вам не поможет. Если же в QV все отработает без ошибок — проблема в Qlik Sense.

Версии, предоставляемые разработчиком для всех и для клиентов, могут отличаться.

Q: Помогите пожалуйста!!!
После обновления Qlik Sense Desktop пытаюсь создать сводную таблицу, через какое-то время после работы вылетает ошибка «Внутренняя ошибка подсистемы».
Сводная таблица переходит в режим обновления с кнопкой «Отменить», и на этом всё. Никакие дальнейшие манипуляции с приложением не дают работать, хоть удаляй и настраивай заново. Сначала это было на старых приложениях (которые настраивал до обновления), настроил новое, тоже самое.

A: У меня подобная ошибка была из-за линейного графика. В свойствах линейного графика, в разделе Дополнения-Обработка данных я снял галку Включить нулевые значения и ошибка пропала.

Скорее всего эта ошибка из-за нулевых, минусовых, пустых значений.

Q: Помогите решить следующий вопрос:
При открытии файла программа выдает сообщение:

Данный файл был опознан как Ваш собственный. Однако необходимо обновить ключ в документе, чтобы отразить изменения в вашей копии Personal Edition с момента создания этого документа.

Документ будет обновлен и загружен без данных. После окончания операции, пожалуйста, СОХРАНИТЕ документ и выполните загрузку данных.

И теперь файл ничего не отображает. Как все вернуть обратно?

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

Если обновление данных не произошло, но скрипт доступен — проверяйте процесс загрузки данных.
В случае, когда уже нет попыток восстановления а скрипт надо открыть — используйте Qlik Sense.
В последней версии есть и конвертер приложений Qlikview, который преобразует измерения, объекты и выражения в основные объекты нового приложения Qlik Sense.

Q: Порекомендуйте, пожалуйста, как лучшего всего обновить QVS
Сейчас стоит 12.00, планирую накатить 12.10

Вопрос в том, каким образом оставить возможность «откатить» все назад, в случае каких- либо проблем.
QVS развернут на виртуальном Windows сервере.
Бэкапить всю виртуалку или можно ограничиться C:\Program Files\QlikView ?

Может у кого-то был опыт — ключи лицензий нормально наследуются при обновлении?

A: Я обычно такие операцию «репетирую» на копии. А в случае с промышленным решением, которое находится в работе, считаю, это просто обязательным этапом.
Разверните сервер локально и протестируйте обновление на нем.
И проблем не будет.
Насчет отката с версии 12.10 на 12.00 — не уверен.

Q: Возник такой вопрос. Можно ли перенести на сервер, приложение с Personal Edition, созданное на локальной машине, так чтобы все данные сохранились. Если можно, то каким образом?

A: Если у вас сервер с лицензией, то да. А вот в обратную сторону (открыть не своё приложение, если 4 попытки закончились), не получится.

Q: Есть файл qlik который загружает все необходимые параметры из базы конфигурации, формирует скрипт загрузки, загружает данные из различных источников, пишет лог загрузки, и выгружает все таблицы в .qvd.
Так как таких физических мест формирования данных довольно много (>20) то ставить полный qlik особо не хочется и принято решение компилировать .exe и дальше с ним работать. Все было нормально пока не понадобилось контролировать лог загрузки. Дописал функцию экспорта лога в формате .xml в скрипте загрузки в параметрах разрешил чтение и запись в БД. Ну и соответственно в qvw все работает на ура. формируется, пишется и логируется. После компиляции в exe и запуска приложения, в момент начала загрузки появляется сообщение «qmem:///ИмяФайла.qvw contains an incorrect path.» и после нажатия «Ок» предлагается сохранить данный файл в qvw. и уже не важно сохранишь или отменишь сохранение дальше пойдет нормальная загрузка.
————
Может кто подскажет как побороть данное сообщение аля Application.DisplayAlerts = False

A: Привет, а если не exe-шник а просто десктопную версию ставить?

Q: Можно ли в планировщике настроить следующий таск:

Перед обновлений данных приложения сохранить бэкап необновленного приложения в определенное место на диске.

A: Можно написать powershell/bat/vbscript/jscript скрипт, который копирует текущую версию приложения в backup. Затем создать задачу в планировщике Windows на ежедневный запуск данного скрипта.

Q: Помогите решить задачу:
Есть дерево папок в которые систематически добавляются файлы и после обработки удаляются
Пример папок:
..\Регион 1
..\Регион 2
..\Регион 3
и тд.
Но так как не всегда все папки содержат файлы скрипт соответственно выдает ошибку о том что файл для обработки не найден
Как обрабатывать только папки содержащие файлы исключая пустые папки из загрузки?

A: Если у вас Desktop, то меняем параметр на StandardReload=0 в файлике Settings.ini. Находится он C:\Users\<...>\Documents\Qlik\Sense

Если сервер, то QMC-Engines, там заходим в настройки нашего «engine», там Advanced, убираем галочку Standard Mode, перезапускаем службу.

Q: Мы недавно обновили QlikView сервер с 10 версии на 11 и все отчеты стали заметно дольше выгружаться, очень заметно тормозить. Отчеты не переписывались. Может кто сталкивался и знает в чем может быть дело. Или есть какие то общие рекомендации по оптимизации кода. Переписать какие то функции, которые справлялись в 10 версии, но в новой тормозят.

A: посмотри в англоязычном сообществе. Может и обсуждалось.
У меня с переходом на десктопе с 10 на 11 был один глюк. Перестали работать некоторые скрипты на целероне.

Q: Предлагаю обсудить вопрос использования продуктов Qlik.

Мой вариант ответа под номером 5.
Все-таки Qlikview удобнее для написания скрипта и отладки моделей. Вот только не пойму — быстрее от того что привычнее лично мне или действительно скорость разработки в Qlik Sense ниже чем на Qlikview?

A: Интересное мнение. Если 1С-ка файловая- возможно и соглашусь с тем что данные вытянуть быстрее средствами 1С, но в случае с SQL-базами все как раз наоборот. Средствами 1С сделать аналитику уровня QLIK Невозможно!!!

Q: подскажите пожалуйста как можно ускорить работу приложение qlikview. У меня в приложение много записей, тормозит сильно сводная таблица и некоторые диаграммы. Долго перевыбирает данные.

A: На эту тему уже много обсуждений есть в инете.
Суть такая — сводные сами по себе сложные объекты. А если в них еще и выражение с непростым синтаксисом (набором процедур), то при любом обновлении состояния окружения происходит перерасчет всех выражений.
Начинайте оптимизацию с выражений. И для начала сводную просто уберите, «поиграйтесь» на простой таблице. Если возможно, уберите расчеты на уровен скрипта, оставив в приложени простые агрегатные выражения и т.д.
Здесь все индивидуально, может просто планку памяти вставить и все решится?

Q: Есть приложение, в планировщики поставил, чтобы оно обновлялось каждые 15 минут. Мне нужно(если такое возможно), чтобы планировщик не обновлял данные ночью, т.е. например надо, чтобы он загружал данные с 8:00 до 20:00 каждые 15 минут, а остальное время не обновлял данные. Если так можно сделать, подскажите пожалуйста как. Заранее спасибо.

A: Если организовано через планировщик винды то так:
ставите расписание с повтором каждые 15 минут и запуском vbs скрипта, в котором проверяете текущее время. Если оно в нужном промежутке, то запускаете Ваше приложение на выполнение.

Q: Возможно ли из QlikView и QlikSense экспортировать таблицы,переменные,диаграммы в Word с помощью/без помощи Н-принтинга?

A: Доводилось тестировать NPrinting в cвязке с QlikView, можно выгружать и таблицы и диаграммы в Word, причем все интуитивно понятно (набросать шаблон, запланировать обновление, при необходимости задать адресатов. и в нужное время будут у вас отчеты заданного формата с актуальными данными). Без NPrinting сам не пробовал, но думаю макросы помогут, если есть умельцы такой макрос написать, по крайней мере когда-то натыкался на выгрузку в Power Point, а выгрузка в Excel точно освящена на community.
Касательно Qlik Sense утверждать не берусь, c NPrinting думаю все будет без проблем, а вот насчет выгрузки без него ничего утверждать не стану, пока не доводилось сталкиваться с такими задачами.

Q: При обновлении документа в QlikView через таск менеджер, при сохранении документ сваливается с ошибкой, если в этот момент документ открывается, считывается пользователем. Приходится по новой запускать обновление, а это занимает много времени. Может кто знает как это исправить?

A: Сделайте отдельный документ для обновления qvd-файлов.
А обновление приложения с визуализацией доверьте пользователю.

Q: Подскажите, пожалуйста, в чем может быть причина, что не освобождается память, если даже закрыты все документы QlikView и никаких расчетов не происходит. Вижу, что занято 80 % памяти, при этом все держит QlikView.

A: Замечал, что exe-файл после закрытия QlikView может продолжать существовать на сервере или на компьютере в фоновом режиме. Как вариант, можно убить процесс, через диспетчер задач. Но с этим нужно быть внимательным! 🙂

Q: помогите пожалуйста,
как расчитать объем оперативной памяти который нужен для Qlik Sense.
если известен количество строк модели, количество столбцов, и объем одной записи.
к примеру 20 столбцов
40 млн записей
и одна запись весит 2кб

A: Самый лучший способ — эксперимент.
Сгенерируйте тестовую таблицу, увеличивая число записей фиксируйте объем занятой памяти.
Но учтите, что еще будет визуализация, которой тоже надо где-то «крутиться».

Q: Коллеги не могу войти в qlikcloud.com, может кто вкурсе

A: проверь почту.
Была рассылка по поводу изменения процедуры входа в Qlik Sense Cloud.

Q: Подскажите,пожалуйста, есть ли возможность обрезать модель в клик сенсе по текущим выборкам и как это сделать? Нужно оставить данные только за один год

A: Я так понял, вас интересует наличие функции как в Qlikview — «Сокращение данных»?
На таком же уровне, увы — нет.
Но динамическое сокращение данных на основе секции доступа работает и в Qlik SENSE.

Q: Поделитесь опытом, может быть кто-то сталкивался с подобными задачами.
Хотим интегрировать QlikSense и базу данных Oracle, с прикрученной к ней системой полнотекстового поиска Sphinx.
В идеале сценарий следующий:
1. Прямо в веб-приложение Qlik добавляется поисковая панель (поисковая строка и некоторые настраиваемые параметры поиска)
2. Формируем в этой панели поисковый запрос, нажимаем «найти»
3. Sphinx проводит поиск в БД и возвращает IDшники из таблицы фактов обратно в Qlik.
4. Дальше работаем с этой «выборкой» стандартными способами (накладываем фильтры, выбираем периоды и пр.)
Подскажите, есть ли какие-то ограничения со стороны Qlik и его API для такого сценария
Может еще какие-то подводные камни?

A: Вроде бы схема возможна в реализации.
Но я бы все-таки начал со стандартных механизмов фильтрации в Qlikview и Qlik Sense.

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

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

FAQ по справочным материалам Qlik Sense/Qlik View

Q: Часто возникают вопросы, где скачать учебники, документацию и т.п. по Qlikview.

A: Все просто:
1. Читаем руководство «Создание приложений QlikView» на сайте http://solutions.atkcg.ru/manuals
2. Смотрим видео «Qlikview за 8 шагов» на хостинге ютуб.
3. Изучаем help.qlik.com и скачиваем набор документации в pdf-формате.
4. С сайта qlik.com скачиваем дистрибутив (включая учебник с примерами).
5. Устанавливаем и выполняем уроки по учебнику.
Ищем ответы на вопросы в документации, сообществах и если ответ не найден, тогда задаем вопросы.
Хороший набор видеороликов на канале Practical-qlikview от Mark O’Donovan, автора ряда обучающих книг по Qlikview и Qlik Sense
http://www.youtube.com/user/practicalqlik
Рекомендую всем
Сайт автора — http://www.techstuffy.com
Книга «Discovering Qlikview» Tom Meers
Книга «Qlikview 11 Developer’s Guide» B. Harmsen
Книга «Qlikview Scripting» Matt Floyd

Q: Каким образом рассчитать оборачиваемость и показатель GMROI в QV?
Может есть ссылка на справочник по работе с функциями?

A: Описание функций, как обычно, в документации.
Специальных функций под эти цели в Qlikview и Sense нет.
Можете подготовить пример для обсуждения?

В целом, по теме — ничего сложного нет.
Если хромаем в теории, пользуемся поисковиком. Лично мне нравится этот сайт
А дальше уже переводим в формулы, согласно сформированной модели и сверяемся с контрольным примером, заранее и достоверно рассчитанным.

Q: Подскажите, пожалуйста, где можно купить книгу QlikView 11 for Developers ?
И какие еще книги можете посоветовать?

A: Плюс официальный сайт со справочными материалами.
http://help.qlik.com

Q: Кто-то проходил аттестацию по QlikView? Она проходит только на английском языке? Может есть у кого-то примерные вопросы?

A: На qlik-daily на эту тему:
http://blog.atkcg.ru/kak-projti-sertifikaciyu-qlikview-11-developer-sovety-byvalogo/
http://blog.atkcg.ru/sertificiruemsya-na-administratora-qlik-sovety-byvalogo-chast-2/

Q: Давно заметила за собой такой недостаток, что очень некрасиво пишу формулы и непонятно остальным оформляю скрипт загрузки. Сейчас стала стараться писать его правильно, но все равно не до конца понятно и красиво. Есть ли установленный правила оформления скрипта и больших выражений?Где их можно почитать?

A: Под сетами понимаются выражения задающие условия отбора?
Код:
{<[Календарь ПериодNum]={$(=max([Календарь ПериодNum]))}>}
В оформлении никакого криминала не вижу.
Но есть пара замечаний, личных, не базирующихся на каких-либо стандартах.
1. Именование полей, смешанные названия типа [Календарь ПериодNum]. Легче работь с моделью где все поля именуются по одному принципу и желательно на одном языке. Смешанные названия отнимают время на понимание и ввод с клавиатуры.
2. Расчеты в выражениях. Следует помнить, что при каждом изменении выборки происходит перерасчет всех выражений в приложении. Я бы рекомендовал избавиться от выражения:
Код:
((P_RATE)/100)*P_OUT_PORTF_VAL)/1000
переместив эту задачку в скрипт подготовки данных.

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

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

41 queries in 0,501 seconds