Kumulativ total, også kendt som løbende total, er en nyttig KPI-metrik til at overvåge samlede sumværdier over tid. Hvis dine data er gemt i Amazon Redshift, så er det ret nemt at beregne kumulativ sum i Redshift. Lad os se, hvordan man beregner løbende total i Redshift.
Sådan beregnes løbende total i rødforskydning
Her er trinene til at beregne løbende total i Redshift. Lad os sige, at du har følgende tabel, der indeholder daglige salg
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 | +------------+------+
Lad os sige, at du vil beregne den kumulative sum af salg, som sådan,
+------------+------+-----------------+ | 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 | +------------+------+-----------------+
Her er SQL-forespørgslen til at beregne løbende total i Redshift. Da Redshift grundlæggende er PostgreSQL, er alle dets funktioner og udtryk tilgængelige i PostgreSQL. Så vi vil bruge en vinduesfunktion, tilgængelig i PostgreSQL, til at gøre det.
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
Lad os se på ovenstående forespørgsel i detaljer. SUM-funktionen ovenfor beregner den kumulative sum for hver række. Vi bruger dog en vinduesfunktion OVER, som hjælper os med at definere antallet af rækker, der skal bruges til at beregne løbende total i rødforskydning.
Bonuslæsning:Sådan beregnes glidende gennemsnit i rødforskydning
Først bestiller vi vores data kronologisk efter order_date for at sikre, at vi lægger de rigtige rækker sammen for hver kumulativ sum. Dernæst for hver række fortæller vi Redshift at summere salg kolonne for alle foregående rækker. Vi gør det ved at bruge vinduesfunktionen OVER, og nævner rækker mellem ubegrænset foregående og nuværende række . Det vil sige, for hver række skal du kun overveje de foregående rækker for kumulativ sum.
Da vinduesrammen ændres for hver række, vil kun de foregående rækker blive brugt til at beregne løbende total.
Hvis du vil filtrere dine data, før du beregner løbende total i Redshift, kan du gøre det ved at tilføje WHERE-sætning, som vist nedenfor.
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>;
Bonuslæser: Sådan opretter du pivottabel i PostgreSQL
Da Redshift dybest set er PostgreSQL, kan du også bruge ovenstående forespørgsel til at beregne løbende total i PostgreSQL.
Når du har beregnet den kumulative sum i Rødforskydning, kan du bruge et Redshift-datavisualiseringsværktøj til at plotte det på et linjediagram. Her er et eksempel på et linjediagram for kumulativ total, oprettet ved hjælp af Ubiq.
Hvis du vil oprette diagrammer og dashboards fra Redshift-databasen, kan du prøve Ubiq. Vi tilbyder en 14-dages gratis prøveperiode.