Skip to main content
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". Приходится выкручиваться.