Неофициальный форум пользователей Qlik Sense & Qlikview

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: Elena от 10 апреля 2018, 03:44:39

Название: Показать часть таблицы по заданному параметру
Отправлено: Elena от 10 апреля 2018, 03:44:39
Здравствуйте, уважаемые специалисты QV!
Помогите мне, пожалуйста, разобраться с таблицей, как в ней можно вывести имена(поле "name" и соответствующие им суммы(столбец "PeopleCount" ) занимающих  первые 75% доли от общей суммы:
То есть должны быть выведена вот эта часть таблицы:

Названия строк   Сумма по полю PeoplesCount   Доля
Ada   1482000   18,19%
Aaron   1110000   13,62%
Ace   846000   10,38%
Abdullah   669000   8,21%
Abdul   504000   6,19%
Abraham   456000   5,60%
Abel   417000   5,12%
Abbott   358000   4,39%
Abigail   258000   3,17%
Доля этой выборки  составляет 74.86% примерно 75%
Я приложила файл QV к сообщению. Скажите можно ли решить требуемый вопрос написанием подходящего выражения или необходимо писать макрос?
Буду невероятно благодарна помощи!
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: admin от 10 апреля 2018, 07:45:19
Привет.
Попробуйте создать таблицу с измерением name и выражением:
if(
RangeSum(
Above(
sum(aggr(Sum (PeoplesCount),name))/sum(aggr(Sum (total PeoplesCount),name))
,0,RowNo()))<0.75,
Sum (PeoplesCount))
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: Elena от 11 апреля 2018, 09:32:43
Хм, спасибо за совет, сделала как вы сказали, но результат неутешительный....не выводит нужный диапазон, да ещё и сумма в итоге на миллион превышает совокупную исходную...
А у вас  получилось вывести первые 75% ? может я что-то не так делаю....
Должно получиться на выходе:
(https://qliksense-forum.ru/qvf/proxy.php?request=http%3A%2F%2F%26lt%3Bahref%3D%26quot%3Bhttps%3A%2F%2Fibb.co%2FmanWCH%26quot%3B%26gt%3B%26lt%3Bimgsrc%3D%26quot%3Bhttps%3A%2F%2Fthumb.ibb.co%2FmanWCH%2Ftable.jpg%26quot%3Balt%3D%26quot%3Btable%26quot%3Bborder%3D%26quot%3B0%26quot%3B%26gt%3B%26lt%3B%2Fa%26gt%3B&hash=f915c57c4a4f6bea75602a325c1c7238f14a0459)
https://ibb.co/manWCH (https://ibb.co/manWCH)
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: admin от 11 апреля 2018, 07:44:49
Формула рабочая:
if(RangeSum(
Above(
sum(aggr(Sum (PeoplesCount),name))/sum(aggr(Sum (total PeoplesCount),name))
,0,RowNo())
)<0.75,
sum(aggr(Sum (PeoplesCount),name)),0)

Таблицу сортируем по выражению для поля name sum(aggr(Sum (PeoplesCount),name))
[smg id=86]

Проверял в Qlik Sense, но это сути не меняет.
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: admin от 12 апреля 2018, 09:55:25
Выше выложил рабочую формулу.
Вам необходимо будет понять работу функций:
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: Elena от 12 апреля 2018, 10:13:37
Простите меня, что я вас отвлекаю, но посмотрите мой файл в который я вставила код.
В нём выводится абсолютно вся таблица, а не только 75 процентов и к тому же какие-то странные суммы....
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: admin от 12 апреля 2018, 10:15:41
Сортировку делали?
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: Elena от 12 апреля 2018, 10:22:06
сортировку делала, может какая-то ещё существует сортировка, но мне надо чтобы вывелось на экран только то что у вас на картинке, а не вся таблица только отсортированная....мне необходимо в дальнейшем выгружать из QV в ексель эту часть(75 проц от всего)
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: Elena от 12 апреля 2018, 11:17:24
А можно ли как-то выделить нижнюю границу искомого списка? Тогда достаточно применить простую формулу Sum (PeoplesCount)/sum(Sum (total PeoplesCount), отсортировать и настроить так чтобы цветом выделилась граница и тогда легко было бы видно что зафильтровать и выгрузить
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: admin от 12 апреля 2018, 11:26:33
Используйте обычную таблицу вместо сводной.
Вы выводите значение PeoplesCount как измерение, зачем? все выражения строятся по Name и Сумме для каждой строки.
Уберите расчет доли, его тоже надо делать с условиями.
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: Elena от 12 апреля 2018, 01:44:22
А в можете приложить свой файл с формулой...не могу я понять почему у меня она не срабатывает...
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: admin от 12 апреля 2018, 03:06:01
Я открываю в Qlik Sense ваш файл.
Оставьте 2 столбца, имя и формулу.
включите простую таблицу.
в Сортировке по name пропишите формулу sum(aggr(Sum (PeoplesCount),name)).
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: Elena от 12 апреля 2018, 05:13:36
но когда я (уже в простой таблице) отфильтровываю первые имена занимающие 75 процентов, то обнуляются суммы последних пяти из зафильтрованного списка(( я файл таблицы прикрепила
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: admin от 12 апреля 2018, 07:09:10
Цитата: Elena от 12 апреля  2018, 05:13:36  
но когда я (уже в простой таблице) отфильтровываю первые имена занимающие 75 процентов,

Каким образом?
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: Elena от 20 апреля 2018, 04:24:53
Добрый день, отсортированный список(только 75 процентов)  мне надо вывести в ексель, поэтому я выделяю в QV первые имена, чтобы отправить в файл нужную информацию. При этом последние в данном примере пять имен обнуляются((
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: admin от 21 апреля 2018, 06:34:34
Текущий пример можете выложить?
Название: Re: Показать часть таблицы по заданному параметру
Отправлено: Elena от 24 апреля 2018, 10:04:28
Добрый день, приложила файл с фильтром