Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Группировка периода

Коллеги, нужна помощь.

Есть таблица продаж с датами.

Но период нужно сгруппировать так:

например сегодня 25.12.2016

тогда год будет равен: 25.12.2016 - 25.12.2015 - это соответсвенно 2016, далее 25.12.2015 - 25.12.2014 - это 2015 и т.д

т.е. нужно все продажи сгруппировать именно таким образом, полное накопление за последние 12 месяцев и показать динамику.

Дата отчета будет выбираться и от нее нужно вести все расчеты, ну это уже в идеале, а главное сгруппировать все данные как я описал выше

1 Solution

Accepted Solutions
Anna_Klimkova
Employee
Employee

Владислав,

Можно попробовать прямо в диаграмме сделать сдвиг даты на число дней, не хватающих до конца года от даты отчета.

Создайте переменную vToday    =num(Today()) 

А в диаграмме заменяем измерение Год на вычисляемое измерение

= yearДата +
YearEnd(Дата) - AddYears(vToday, -Year(vToday)+Year(Дата))
)

View solution in original post

4 Replies
Not applicable
Author

Привет.

Если это нужно/можно рассчитать на этапе загрузки, то можно вот так (частный случай для 2016 и 2017 годов):

SET v_TodayVirtual_D = '04.01.2017';

LET v_TodayVirtual_N = Num(v_TodayVirtual_D);

LET v_DayFirst2017 = '01.01.2017';

LET v_DayCount = v_TodayVirtual_D - v_DayFirst2017 + 1;

Data:

LOAD * Inline [

NN,        DATE,            PRICE,    Q

1,        29.12.2016,        50,        2

2,        30.12.2016,        10,        52

3,        31.12.2016,        1,        1

4,        01.01.2017,        2,        60

5,        02.01.2017,        80,        1

6,        03.01.2017,        400,    3

7,        04.01.2017,        55,        45

];

STORE * from Data into Data.qvd (qvd);

DROP Table Data;

Data:

LOAD NN,

    DATE,

    PRICE,

    Q,

    Year(DATE) as YEAR_REAL,

    If (DATE >= '$(v_DayFirst2017)', Year(DATE), If (DATE + $(v_DayCount) >= '$(v_DayFirst2017)', Year(DATE + $(v_DayCount)))) as YEAR_VIRTUAL

FROM Data.qvd (qvd);

Если, это нужно рассчитать в дашборде, то нужно делать справочник периодов. То есть, для каждого дня, должно соответствовать 365 дней в справочнике периодов.

Anonymous
Not applicable
Author

мысль интересная, должно подойти, сегодня попробую

Anna_Klimkova
Employee
Employee

Владислав,

Можно попробовать прямо в диаграмме сделать сдвиг даты на число дней, не хватающих до конца года от даты отчета.

Создайте переменную vToday    =num(Today()) 

А в диаграмме заменяем измерение Год на вычисляемое измерение

= yearДата +
YearEnd(Дата) - AddYears(vToday, -Year(vToday)+Year(Дата))
)

Anonymous
Not applicable
Author

ТО, что надо, спасибо.

Я только переменную буду определять через календарь, ну что бы можно было выбрать дату и от нее все считать.