Suma skumulowana, znana również jako suma bieżąca, to przydatna metryka kluczowego wskaźnika wydajności do monitorowania łącznych wartości w czasie. Jeśli twoje dane są przechowywane w Amazon Redshift, dość łatwo jest obliczyć skumulowaną sumę w Redshift. Zobaczmy, jak obliczyć sumę biegową w Redshift.
Jak obliczyć sumę bieżącą w przesunięciu ku czerwieni
Oto kroki, aby obliczyć sumę biegową w funkcji Redshift. Załóżmy, że masz poniższą tabelę zawierającą dzienną sprzedaż
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 | +------------+------+
Załóżmy, że chcesz obliczyć skumulowaną sumę sprzedaży, w ten sposób
+------------+------+-----------------+ | 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 | +------------+------+-----------------+
Oto zapytanie SQL do obliczenia sumy bieżącej w funkcji Redshift. Ponieważ Redshift jest w zasadzie PostgreSQL, wszystkie jego funkcje i wyrażenia są dostępne w PostgreSQL. W tym celu użyjemy funkcji Window, dostępnej w 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
Przyjrzyjmy się szczegółowo powyższemu zapytaniu. Powyższa funkcja SUMA oblicza skumulowaną sumę dla każdego wiersza. Jednak używamy funkcji okna OVER, która pomaga nam zdefiniować liczbę wierszy, które mają być użyte do obliczenia sumy bieżącej w funkcji Redshift.
Przeczytaj bonus:Jak obliczyć średnią kroczącą w przesunięciu ku czerwieni
Najpierw sortujemy nasze dane chronologicznie według data_zamówienia aby upewnić się, że zsumujemy właściwe wiersze dla każdej sumy skumulowanej. Następnie dla każdego wiersza informujemy Redshift, aby zsumował sprzedaż kolumna dla wszystkich poprzednich wierszy. Robimy to za pomocą funkcji okna OVER i wspominamy wiersze między nieograniczonym poprzednim i bieżącym wierszem . Oznacza to, że dla każdego wiersza rozważ tylko poprzednie wiersze jako sumę skumulowaną.
Gdy ramka okna zmienia się dla każdego wiersza, tylko poprzednie wiersze zostaną użyte do obliczenia sumy bieżącej.
Jeśli chcesz filtrować dane przed obliczeniem sumy bieżącej w Redshift, możesz to zrobić, dodając klauzulę WHERE, jak pokazano poniżej.
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>;
Przeczytaj bonus: Jak utworzyć tabelę przestawną w PostgreSQL
Ponadto, ponieważ Redshift jest w zasadzie PostgreSQL, możesz również użyć powyższego zapytania do obliczenia sumy bieżącej w PostgreSQL.
Po obliczeniu skumulowanej sumy w funkcji Redshift możesz użyć narzędzia do wizualizacji danych Redshift, aby wykreślić ją na wykresie liniowym. Oto przykład wykresu liniowego dla skumulowanej sumy, utworzonego za pomocą Ubiq.
Jeśli chcesz tworzyć wykresy i pulpity nawigacyjne z bazy danych Redshift, możesz wypróbować Ubiq. Oferujemy 14-dniowy bezpłatny okres próbny.