Столкнулась с нелогичным (для меня) поведением древовидной таблицы. У меня есть две размерности: dkt и budgetitemgroupid. В одной dkt может быть несколько budgetitemgroupid, одна budgetitemgroupid может быть только в одном dkt. Также у меня есть два факта: sales_lk и back_margin_lk.
Я хочу посчитать процент back_margin_lk от sales_lk. Следующая формула корректно работает для сводной таблицы: *if(sum(sales_ax)!=0,sum(back_margin_lk)/sum(sales_ax)100,0):bm
Но если применить формулу для древовидной таблицы, то она корректно работает для нижнего уровня (budgetitemgroupid), и выдает не те числа, которые ожидаешь увидеть для dkt.
Как правильно считать процент back_margin_lk от sales_lk, чтобы расчет был корректным для всех уровней? Как вообще древовидная таблица обрабатывает агрегационные функции? Если о пишу sum(back_margin_lk)/sum(sales_ax) и смотрю на размерность dkt, не разворачиваясь до budgetitemgroupid, как оно тогда считается?
{
frame: {
h: 3,
w: 8,
x: 2,
y: 0,
},
width: 30,
display: {
topBar: {
visible: false,
},
},
dataSource: {
koob: ‘financial_model.financial_model_lk’,
limit: 1280,
style: {
‘*’: {
maxWidth: 60,
minWidth: 60,
headerStyle: {
maxWidth: 60,
minWidth: 60,
whiteSpace: ‘normal’,
},
},
measures: {
bm: {
title: ‘БМ, %’,
},
sum_sales_lk: {
title: ‘Продажи (ЛК)’,
},
sum_back_margin_lk: {
title: ‘Маржа после расходов, доходов и рекламных расходов (БМ)’,
},
},
},
xAxis: ‘dkt;budgetitemgroupid’,
yAxis: ‘measures’,
sortBy: ‘-sum_back_margin_lk’,
filters: {
period: true,
mpl_name: true,
short_name: true,
budgetitemgroupid: true,
},
measures: [
‘sum(sales_lk):sum_sales_lk’,
‘sum(back_margin_lk):sum_back_margin_lk’,
*'if(sum(sales_lk)!=0,sum(back_margin_lk)/sum(sales_lk)100,0):bm’,
],
dimensions: [
‘dkt’,
‘budgetitemgroupid’,
],
},
dashboard_id: 0,
title: ‘’,
description: null,
view_class: ‘tree-table-simple’,
}