Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
tatianastydneva
Partner - Contributor III
Partner - Contributor III

Странности в отображении значений

Добрый день! 

Столкнулась с интересным явлением в QlikSense: при замене лейбла почему-то меняется значение на графике. 

Вот смотрите: формула. 

1.png

дублирую формулу если на скрине плохо видно:

=If(table_code='s.26.01.01.02' and rc_code_de_colonne='C0060' and rc_code_de_ligne='R0200', libelle_de_ligne,
If(table_code='s.26.01.01.02' and rc_code_de_colonne='C0060' and rc_code_de_ligne='R0300', libelle_de_ligne,
If(table_code='s.26.01.01.02' and rc_code_de_colonne='C0060' and rc_code_de_ligne='R0100', libelle_de_ligne,
If(table_code='s.26.01.01.02' and rc_code_de_colonne='C0060' and rc_code_de_ligne='R0400', libelle_de_ligne,
If(table_code='s.26.01.01.02' and rc_code_de_colonne='C0060' and rc_code_de_ligne='R0600', libelle_de_ligne,
If(table_code='s.26.01.01.02' and rc_code_de_colonne='C0060' and rc_code_de_ligne='R0700', libelle_de_ligne
))))))

Редактор говорит что все ок. Вот значения, которые мы видим на графике: 

2.png

(обвела кружочком те, что нам надо. Если плохо видно: Equity Risk 13.94/35.44; Spread Risk 127/499.46).

А вот я в формуле у 2 показателей заменяю поле "Лейбл" на сам лейбл этого показателя: 

3.png

дублирую формулу если на скрине плохо видно:

=If(table_code='s.26.01.01.02' and rc_code_de_colonne='C0060' and rc_code_de_ligne='R0200', 'Equity risk',
If(table_code='s.26.01.01.02' and rc_code_de_colonne='C0060' and rc_code_de_ligne='R0300', libelle_de_ligne,
If(table_code='s.26.01.01.02' and rc_code_de_colonne='C0060' and rc_code_de_ligne='R0100', libelle_de_ligne,
If(table_code='s.26.01.01.02' and rc_code_de_colonne='C0060' and rc_code_de_ligne='R0400', 'Spread Risk',
If(table_code='s.26.01.01.02' and rc_code_de_colonne='C0060' and rc_code_de_ligne='R0600', libelle_de_ligne,
If(table_code='s.26.01.01.02' and rc_code_de_colonne='C0060' and rc_code_de_ligne='R0700', libelle_de_ligne
))))))

Редактор снова говорит что все ок. Вот значения, которые мы видим на графике: 

4.png

 

(обвела кружочком те, что нам надо. Если плохо видно: Equity Risk 127/35.44; Spread Risk 13.94/499.46). 

Т.е. мы видим, что когда я меняю поле "Лейбл" на сам лейбл этого показателя значение за 2016 год магическим образом меняется. 

Я проверила в базе - там все ок, в другие графики все приходит верно. Но вот именно в этот и почему-то именно эти 2 значения путаются местами. Верные значения те, что во 2 случае (Equity Risk 127/35.44; Spread Risk 13.94/499.460).

Но почему когда я именно им даю вместо конкретного лейбла поле "Лейбл" у них путаются показатели? Я же, по сути, ничего критично не меняю в формуле. Помогите найти разгадку, пожалуйста 🙂 

1 Solution

Accepted Solutions
Sergey_Polekhin
Employee
Employee

Я не вполне понимаю логики того, что вы считаете, поэтому общие рекомендации:

С точки зрения синтаксиса проблем в ваших выражениях действительно может и не быть, о чём вам и сообщает редактор. Редактор может проверить только синтаксис, но не смысл выражения

А вот со смыслом - сложности. Ваши два выражения отличаются ровно тем, что в результате проверки условия в первом выражении, вы используете для расчётов значения поля libelle_de_ligne, а во втором - заменяете эти значения на строку символов 'Equity risk'. Ещё раз подчеркну, что 'Equity risk' - это не название поля, а именно набор символов 'Equity risk'.

Именно поэтому и результаты получаете различные.

Вопрос лишь в том, что именно вы хотели получить.

 

 

View solution in original post

5 Replies
Sergey_Polekhin
Employee
Employee

Я не вполне понимаю логики того, что вы считаете, поэтому общие рекомендации:

С точки зрения синтаксиса проблем в ваших выражениях действительно может и не быть, о чём вам и сообщает редактор. Редактор может проверить только синтаксис, но не смысл выражения

А вот со смыслом - сложности. Ваши два выражения отличаются ровно тем, что в результате проверки условия в первом выражении, вы используете для расчётов значения поля libelle_de_ligne, а во втором - заменяете эти значения на строку символов 'Equity risk'. Ещё раз подчеркну, что 'Equity risk' - это не название поля, а именно набор символов 'Equity risk'.

Именно поэтому и результаты получаете различные.

Вопрос лишь в том, что именно вы хотели получить.

 

 

tatianastydneva
Partner - Contributor III
Partner - Contributor III
Author

Это дайменшен, который достает из базы те значения, которые я ему задаю (по 3 показателям: код таблицы, rc-код колонки и rc-код строки). В поле "libelle_de_ligne" хранится лейбл строки.  

Чтобы было понятнее, какого типа данные лежат в базе: около миллиона таблиц на 100+ строк и 100+ столбиков каждая. Доставать надо только десяток показателей, т.е. чтобы выбрать 1 из нескольких миллионов - надо задать его тремя уникальными координатами, что я и делаю в дайменшене. Код C0060 - это код колонки, поэтому, чтобы различать показатели, я и вывожу им лебл строки (код строки начинается с R). 

Я понимаю, что название лейбла для Клика просто набор символов. Но почему, когда я вывожу ему этот набор символов - он достает показатель корректно, а когда даю поле "Лебл строки" - нет? С фильтрами тестировала. Сделала 6 фильтров: дата, код таблицы, rc-код колонки, rc-код строки, лейбл строки, значение. При наборе фильтров "дата, код таблицы, rc-код колонки, rc-код строки" показатели "лейбл строки, значение" отфильтрованы верно, т.е. Клик видит правильный лейбл строки для нужного значения, но почему-то именно в Bar chart путается, что показывать. Вот мне и интересно почему так происходит. Если в фильтрах все ок - значит проблем с выбором данных нет. 

Anna_Klimkova
Employee
Employee

Татьяна, 

а какая у вас формула для меры?

tatianastydneva
Partner - Contributor III
Partner - Contributor III
Author

Only(value_monetary)/1000000

т.е. выводится "только значение поля value_monetary". 

tatianastydneva
Partner - Contributor III
Partner - Contributor III
Author

Всем спасибо за советы! Клиент сказал, что это "ошибка на его стороне". Поверим ему на слово 🙂