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

Для разработчиков => Вопросы по Qlikview и Qlik Sense => Тема начата: vbkashtanov@gmail.com от июня 06, 2019, 09:26:07 pm

Название: Подставить в поле значение поля :)
Отправлено: vbkashtanov@gmail.com от июня 06, 2019, 09:26:07 pm
Всем привет!
Я так называемый клик-чемпион, так что сильно не ругайтесь.
Вопрос элементарный.
Как в функции диаграммы в выражении в мере использовать ссылку на поле, а не само значение поля?

Например, есть таблица:
Товар - Выручка - Переданная выручка - Прямые затраты - Накладные затраты
АА - 100 - 50 - 80 - 15
BB - 200 - 150 - 180 - 13

И есть таблица

Группа - Статья
Реализация - Выручка
Реализация - Переданная выручк
Затраты - Прямые затраты
Затраты - накладные затраты

Я сделал диаграмму вида "Таблица"
Группа - Статья - Сумма

Если в выражениее "Суммы" прописывать:
if([Статья]='Выручка',sum([Выручка])), и т.д. то всё работает.
Но так не пишут
Как переписать выражение, чтобы sum([ххх]) вместо xxx проставлялась ссылка на текущее поле [Статья?]

Естественно, что sum([[Статья]]) или sum(['[Статья]']) не работает
Название: Re: Подставить в поле значение поля :)
Отправлено: admin от июня 07, 2019, 08:04:55 am
Привет,
все просто.
Вам необходимо преобразовать столбцы данных в строки.
Смотрите теорию с примером здесь (https://help.qlik.com/ru-RU/sense/February2019/Subsystems/Hub/Content/Sense_Hub/DataModeling/best-practices-data-modeling.htm#anchor-1).
После чего одного выражения будет достаточно чтобы получить сумму по статьям (колонкам исходной таблицы данных).
Название: Re: Подставить в поле значение поля :)
Отправлено: vbkashtanov@gmail.com от июня 07, 2019, 10:17:26 am
Спасибо, но мне не нужно преобразовывать данные в строки.

Я хочу знать, есть ли в qlik возможность преобразования текстовой строки в переменную или поле
Название: Re: Подставить в поле значение поля :)
Отправлено: admin от июня 07, 2019, 01:18:32 pm
Цитата: vbkashtanov@gmail.com от июня 07, 2019, 10:17:26 amСпасибо, но мне не нужно преобразовывать данные в строки.

Я хочу знать, есть ли в qlik возможность преобразования текстовой строки в переменную или поле
Есть, но как это относится к вашей задаче?

Вот пример:
t1:
LOAD * INLINE [
    Товар, Выручка, Переданная выручка, Прямые затраты, Накладные затраты
    AA, 100, 50, 80, 15
    BB, 200, 150, 180, 13
];

СтатьиЗатрат:
LOAD * INLINE [
    Группа, Статья
    Реализация, Выручка
    Реализация, Переданная выручка
    Затраты, Прямые затраты
    Затраты, Накладные затраты
];

Данные:
CrossTable(Статья, Сумма)
LOAD Товар,
     Выручка,
     [Переданная выручка],
     [Прямые затраты],
     [Накладные затраты]
Resident t1;
drop Table t1;

И все, выражение Sum(Сумма)  даст корректный результат во всех сочетаниях измерений.
Название: Re: Подставить в поле значение поля :)
Отправлено: vbkashtanov@gmail.com от июня 07, 2019, 06:41:45 pm
Если есть, напишите, пожалуйста, как.
Не могу найти. Заранее благодарен!
Название: Re: Подставить в поле значение поля :)
Отправлено: admin от июня 08, 2019, 10:46:07 am
Выше я привел пример решения для вашей задачи.
Ваш Исходник, скажем так, не готов к тому, чтобы его анализировали. ))
Поэтому его следует привести к нормальной форме, собрать статьи в одно поле, деньги в другое, организовать связи. Т.о. мы сформируем модель данных.
И это не особенность клика, это основы работы с данными.
В вашей БД, из которой сформирован отчет (который приведен в качестве исходника), скорей всего так и организованно.

Название: Re: Подставить в поле значение поля :)
Отправлено: vbkashtanov@gmail.com от июня 08, 2019, 06:25:31 pm
Уважаемый администратор.
Большое спасибо, но мне не нужен пример решения конкретной задачи. Его я, как понял, на самом деле зря привёл.
Я хочу в общем виде знать, есть ли механизм в qlik в выражении диаграммы использовать поля не с непосредственной ссылкой на них, а через имя, передаваемое или переменной, или другим полем.
Например вместо например sum([Статья5]) нужно написать что-то типа sum(номерстатьи), при этом номерстатьи - поле, содержащее "Статья5".
Вы ответили, что такой механизм есть. Если не затруднит, напишите, как это сделать.
Пожалуйста, не могу найти
Название: Re: Подставить в поле значение поля :)
Отправлено: vbkashtanov@gmail.com от июня 08, 2019, 10:56:04 pm
Ни кто не знает?
Название: Re: Подставить в поле значение поля :)
Отправлено: admin от июня 08, 2019, 11:27:54 pm
Цитата: vbkashtanov@gmail.com от июня 08, 2019, 06:25:31 pmПожалуйста, не могу найти

https://help.qlik.com/ru-RU/sense/February2019
Там все ответы.
Рекомендую внимательно изучить раздел по выражениям. (https://help.qlik.com/ru-RU/sense/February2019/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/use-expressions-in-visualizations.htm)
Название: Re: Подставить в поле значение поля :)
Отправлено: vbkashtanov@gmail.com от июня 09, 2019, 10:38:50 am
>> Там все ответы.
Я и забыл, что это русский форум.
Кто-нибудь, всё-таки, может дать ответ?
Неужели ни кто не знает?
Название: Re: Подставить в поле значение поля :)
Отправлено: vbkashtanov@gmail.com от июня 09, 2019, 10:43:04 am
Цитата: admin от июня 08, 2019, 11:27:54 pm
Цитата: vbkashtanov@gmail.com от июня 08, 2019, 06:25:31 pmПожалуйста, не могу найти

https://help.qlik.com/ru-RU/sense/February2019
Там все ответы.
Рекомендую внимательно изучить раздел по выражениям. (https://help.qlik.com/ru-RU/sense/February2019/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/use-expressions-in-visualizations.htm)

По вашей ссылке в разделе по выражениям три абзаца, содержащие общие слова ("воду").
Если не знаете ответа, зачем давать ссылки на ничего не содержащие документы?
Название: Re: Подставить в поле значение поля :)
Отправлено: admin от июня 10, 2019, 11:47:42 am
Цитата: vbkashtanov@gmail.com от июня 09, 2019, 10:43:04 am
Цитата: admin от июня 08, 2019, 11:27:54 pm
Цитата: vbkashtanov@gmail.com от июня 08, 2019, 06:25:31 pmПожалуйста, не могу найти

https://help.qlik.com/ru-RU/sense/February2019
Там все ответы.
Рекомендую внимательно изучить раздел по выражениям. (https://help.qlik.com/ru-RU/sense/February2019/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/use-expressions-in-visualizations.htm)

По вашей ссылке в разделе по выражениям три абзаца, содержащие общие слова ("воду").
Если не знаете ответа, зачем давать ссылки на ничего не содержащие документы?
Три абзаца?,,, ))
Там больше десятка подразделов только на эту тему.
Вы зациклились на решение задачи в клике только тем способом, который вам знаком.
Ознакомьтесь с анализом множеств, использованием переменных, как минимум.
Как надо решать вашу задачу - я привел пример в сообщении выше (http://qlikview-forum.ru/qvf/index.php?msg=5673).
Как хотите решить задачу вы - неправильно.
Название: Re: Подставить в поле значение поля :)
Отправлено: vbkashtanov@gmail.com от июня 10, 2019, 03:17:45 pm
МНЕ НЕ НУЖНО РЕШАТЬ ЗАДАЧУ. Я её придумал на ходу, в качестве иллюстрации.
Я ХОЧУ ЗНАТЬ, КАК использовать значение одного поля в качестве поля в выражении диаграммы.
В ОБЩЕМ ВИДЕ.
Если qlik так не может, или Вы не знаете, так и напишите.
Вместо воды
Название: Re: Подставить в поле значение поля :)
Отправлено: vbkashtanov@gmail.com от июня 10, 2019, 04:20:01 pm
Мне специалисты по qlik подсказали, что qlik так не может
Всем спасибо!
Название: Re: Подставить в поле значение поля :)
Отправлено: admin от июня 10, 2019, 09:14:47 pm
В клике нет такого понятия как ссылка на поле, следовательно и нет такого функционала какой вы имеете в виду буквально.
Но, в клике развитый механизм выражений.
Кроме непосредственного выражения, которое может быть довольно сложным и представлять собой "подзапросы по модели данных", можно использовать указания переменных, в которой хранится выражение или часть выражения, с цепной зависимостью от других переменных.
Очень развит функционал расширенного анализа множеств - отдельная очень большая тема.
Можно указывать поля таблиц, в которых содержится формула, или в которых содержится имя переменной, в которой содержится формула.  :)  Можно, но к чему эти сложности?
~80% решения задачи в qlik содержится в модели данных, формируемых скриптом при расчете приложения.
Поэтому всегда начинаем плясать с формирования таблиц и связей между ними, с учетом имеющихся лучших практик.
Много хорошего материала - вот здесь (https://datayoga.ru/bookofmarathon21).
Название: Re: Подставить в поле значение поля :)
Отправлено: vbkashtanov@gmail.com от июня 10, 2019, 09:25:43 pm
Большое спасибо!