Кумулативната обща сума, известна още като текуща сума, е полезен показател за KPI за наблюдение на общите стойности на сумата във времето. Ако вашите данни се съхраняват в Amazon Redshift, тогава е доста лесно да се изчисли кумулативната сума в Redshift. Нека да видим как да изчислим общия обем на движение в Redshift.
Как да изчислим текущия общ брой в червено изместване
Ето стъпките за изчисляване на общия брой в Redshift. Да приемем, че имате следната таблица, която съдържа ежедневни продажби
postgres-#> create table sales(order_date date,sale int); postgres-#> insert into sales values('2020-03-01',30), ('2020-03-02',35),('2020-03-03',25),('2020-03-04',40),('2020-03-05',30); postgres-#> select * from sales; +------------+------+ | order_date | sale | +------------+------+ | 2020-03-01 | 30 | | 2020-03-02 | 35 | | 2020-03-03 | 25 | | 2020-03-04 | 40 | | 2020-03-05 | 30 | +------------+------+
Да приемем, че искате да изчислите кумулативната сума на продажбите, така,
+------------+------+-----------------+ | order_date | sale | cumulative_sale | +------------+------+-----------------+ | 2020-03-01 | 30 | 30 | | 2020-03-02 | 35 | 65 | | 2020-03-03 | 25 | 90 | | 2020-03-04 | 40 | 130 | | 2020-03-05 | 30 | 160 | +------------+------+-----------------+
Ето SQL заявката за изчисляване на текущата сума в Redshift. Тъй като Redshift е основно PostgreSQL, всичките му функции и изрази са налични в PostgreSQL. Така че ще използваме функция Window, налична в PostgreSQL, за да го направим.
postgres=# SELECT order_date , sum(sale) over (order by order_date asc rows between unbounded preceding and current row) FROM sales ORDER BY order_date; order_date | sum ------------+----- 2020-03-01 | 30 2020-03-02 | 65 2020-03-03 | 90 2020-03-04 | 130 2020-03-05 | 160
Нека разгледаме по-подробно горната заявка. Функцията SUM по-горе изчислява кумулативната сума за всеки ред. Въпреки това, ние използваме функцията на прозореца OVER, която ни помага да дефинираме броя на редовете, които да се използват за изчисляване на текущата сума в Redshift.
Бонус за четене:Как да изчислим пълзящата средна в червено изместване
Първо, ние подреждаме данните си хронологично по order_date за да гарантираме, че събираме правилните редове за всяка кумулативна сума. След това за всеки ред казваме на Redshift да сумира продажба колона за всички предходни редове. Правим това с помощта на функцията на прозореца OVER и споменаваме редове между неограничен предходен и текущ ред . Това означава, че за всеки ред вземете предвид само предходните редове за кумулативна сума.
Тъй като рамката на прозореца се променя за всеки ред, само предходните редове ще бъдат използвани за изчисляване на текущата сума.
Ако искате да филтрирате данните си, преди да изчислите общия брой в Redshift, можете да го направите, като добавите клауза WHERE, както е показано по-долу.
postgres=# SELECT order_date , sum(sale) over (order by order_date asc rows between unbounded preceding and current row) FROM sales ORDER BY order_date WHERE <condition>;
Бонусно четене: Как да създадете обобщена таблица в PostgreSQL
Освен това, тъй като Redshift е основно PostgreSQL, можете също да използвате горната заявка, за да изчислите общия обем в PostgreSQL.
След като изчислите кумулативната сума в Redshift, можете да използвате инструмент за визуализация на данни Redshift, за да я начертаете на линейна диаграма. Ето пример за линейна диаграма за кумулативна сума, създадена с Ubiq.
Ако искате да създавате диаграми и табла за управление от базата данни Redshift, можете да опитате Ubiq. Предлагаме 14-дневен безплатен пробен период.