Skip to main content
Announcements
YOUR OPINION MATTERS! Please take the Qlik Experience survey you received via email. Survey ends June 14.
cancel
Showing results for 
Search instead for 
Did you mean: 
tatianastydneva
Partner - Contributor III
Partner - Contributor III

Добавление вычисляемой колонки

Добрый день.

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

Имена строк у меня добавляются из базы с помощью выборки:

"If(table_code='f_01.01' and rc_code_de_colonne='010' and rc_code_de_ligne='050', 'Financial assets held for trading',

If(table_code='f_01.01' and rc_code_de_colonne='010' and rc_code_de_ligne='100', 'Financial assets designated at fair value through profit or loss',

If(table_code='f_01.01' and rc_code_de_colonne='010' and rc_code_de_ligne='240', 'Derivatives – Hedge accounting',

If(table_code='f_01.01' and rc_code_de_colonne='010' and rc_code_de_ligne='270', 'Tangible assets',

If(table_code='f_01.01' and rc_code_de_colonne='010' and rc_code_de_ligne='300', 'Intangible assets',

If(table_code='f_01.01' and rc_code_de_colonne='010' and rc_code_de_ligne='360', 'Other assets ',

If(table_code='f_01.01' and rc_code_de_colonne='010' and rc_code_de_ligne='380', 'TOTAL ASSETS'

)))))))"


Колонки - это поле "Дата сдачи отчета".

Т.е. в значениях я получаю значение на определенную дату. Мне нужно минимально отнять от колонки 2017-09-30 колонку 2017-06-30. Проблема в том, что т.к. поле "Дата сдачи отчета" в базе единое я не могу просчитать разницу, указывая поля.

Sans titre.png

Я пробовала использовать формулы анализа

sum({$<table_code={'f_01.01'}, rc_code_de_colonne={'010'}, rc_code_de_ligne={'100'}, date_d_arrete={'2017-09-30'}> value_monetary} - sum({$<table_code={'f_01.01'}, rc_code_de_colonne={'010'}, rc_code_de_ligne={'100'}, date_d_arrete={'2017-06-30'}> value_monetary}))

Но это все равно не сработало.

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

Спасибо заранее!

1 Solution

Accepted Solutions
tatianastydneva
Partner - Contributor III
Partner - Contributor III
Author

Да, я примерно так и сделала вчера Работет и, надеюсь, работать продолжит.

Только я не метками размечала, а через переменные задавала, т.к. рассчета колонки как такового нет, я ставлю в колонку поле "дата сдачи отчета", а так как дат в базе 2 - Клик разбивает данные по 2 колонкамм автоматически. Любые рассчеты с полем "дата сдачи отчета" приводят к тому, что вместо даты появляется "0", "1" или "-1". Приходится выкручиваться.

View solution in original post

10 Replies
timofeykim
Partner - Contributor II
Partner - Contributor II

Здравствуйте!

Выполните разницу колонок метками. В выражении, где выполняете расчет колонки в поле метка введите 2017-09-30 и 2017-06-30 соответственно.

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

=[2017-09-30 ] - [2017-06-30].

Может при операции с метками в редакторе выражений предупреждать об ошибке, нужно проигнорировать.

Eugeny_Ilyin
Creator II
Creator II

Привет.
Татьяна, посмотрите вот это расширение:

https://github.com/leematthewshome/Qlik-Sense-Transposed-Table-Extension

В нем строки задаются выражениями, а колонки измерением.

Так будет легче получить желаемый результат.

О том, как добавлять колонки для расчета разницы - написано в док-файле.

tatianastydneva
Partner - Contributor III
Partner - Contributor III
Author

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

sum(${<table_code={'f_01.01'}, rc_code_de_colonne={'010'}, rc_code_de_ligne={'100'}, date_d_arrete={'2017-09-30'}>} value_monetary) -

sum(${<table_code={'f_01.01'}, rc_code_de_colonne={'010'}, rc_code_de_ligne={'100'}, date_d_arrete={'2017-06-30'}>} value_monetary)

К тому же в приведенном расширении я не могу задать именно нужный мне вид таблицы: мера не выводит колонки по датам

Eugeny_Ilyin
Creator II
Creator II

Колонки по датам задаются измерением,
в случае простой таблицы, для получения значения колонки можно использовать column(n)

Если вы задаете для каждой даты отдельное выражением, то в третьей колонке можете написать простое выражение column(2)-column(1)

Eugeny_Ilyin
Creator II
Creator II

Измерения можно создать через скрипт, используя выражение aggr(), valuelist() ( но лучше через скрипт).

tatianastydneva
Partner - Contributor III
Partner - Contributor III
Author

Это не работает, потому что Клик в простой таблице не хочет показывать 1 строку и 2 столбца значений, он мне выдает таблицу вида:

Имя2017-06-302017-09-30
Показатель1215487-
Показатель1-587523

Как мне его убедить в таком случае выдавать мне таблицу в ее адекватном виде:

Имя2017-06-302017-09-30
Показатель1215487587523

?

Eugeny_Ilyin
Creator II
Creator II

Можете выложить или скинуть сообщением фрагмент данных?

Или само приложение.

tatianastydneva
Partner - Contributor III
Partner - Contributor III
Author

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

Спасибо за помощь!

tatianastydneva
Partner - Contributor III
Partner - Contributor III
Author

Да, я примерно так и сделала вчера Работет и, надеюсь, работать продолжит.

Только я не метками размечала, а через переменные задавала, т.к. рассчета колонки как такового нет, я ставлю в колонку поле "дата сдачи отчета", а так как дат в базе 2 - Клик разбивает данные по 2 колонкамм автоматически. Любые рассчеты с полем "дата сдачи отчета" приводят к тому, что вместо даты появляется "0", "1" или "-1". Приходится выкручиваться.