Tổng tích lũy, còn được gọi là tổng số đang chạy, là một chỉ số KPI hữu ích để theo dõi các giá trị tổng cộng theo thời gian. Nếu dữ liệu của bạn được lưu trữ trong Amazon Redshift, thì việc tính tổng tích lũy trong Redshift khá dễ dàng. Hãy xem cách tính toán tổng số lần chạy trong Redshift.
Cách tính Tổng số đang chạy trong Redshift
Dưới đây là các bước để tính toán tổng số lần chạy trong Redshift. Giả sử bạn có bảng sau chứa doanh số hàng ngày
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 | +------------+------+
Giả sử bạn muốn tính tổng doanh số bán hàng tích lũy, như vậy,
+------------+------+-----------------+ | 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 | +------------+------+-----------------+
Đây là truy vấn SQL để tính toán tổng số đang chạy trong Redshift. Vì Redshift về cơ bản là PostgreSQL, nên tất cả các hàm và biểu thức của nó đều có sẵn trong PostgreSQL. Vì vậy, chúng tôi sẽ sử dụng một Hàm Window, có sẵn trong PostgreSQL, để làm như vậy.
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
Hãy xem xét chi tiết truy vấn trên. Hàm SUM ở trên tính tổng tích lũy cho mỗi hàng. Tuy nhiên, chúng tôi sử dụng hàm Window OVER giúp chúng tôi xác định số hàng được sử dụng để tính toán tổng số đang chạy trong Redshift.
Phần thưởng đã đọc:Cách tính trung bình động trong Redshift
Đầu tiên, chúng tôi sắp xếp dữ liệu của mình theo thứ tự thời gian trước order_date để đảm bảo rằng chúng tôi cộng các hàng phù hợp cho mỗi tổng tích lũy. Tiếp theo, đối với mỗi hàng, chúng tôi yêu cầu Redshift tổng bán cột cho tất cả các hàng trước đó. Chúng tôi làm điều đó bằng cách sử dụng chức năng cửa sổ OVER và đề cập đến các hàng giữa hàng trước và hàng hiện tại không bị ràng buộc . Có nghĩa là, đối với mỗi hàng, chỉ xem xét các hàng trước đó cho tổng tích lũy.
Khi khung cửa sổ thay đổi cho mỗi hàng, chỉ các hàng trước đó sẽ được sử dụng để tính tổng số đang chạy.
Nếu bạn muốn lọc dữ liệu của mình trước khi tính toán tổng số chạy trong Redshift, bạn có thể làm như vậy bằng cách thêm mệnh đề WHERE, như được hiển thị bên dưới.
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>;
Phần thưởng đọc:Cách tạo Pivot Table trong PostgreSQL
Ngoài ra, vì Redshift về cơ bản là PostgreSQL, bạn cũng có thể sử dụng truy vấn trên để tính toán tổng số đang chạy trong PostgreSQL.
Sau khi bạn tính toán tổng tích lũy trong Redshift, bạn có thể sử dụng công cụ trực quan hóa dữ liệu Redshift để vẽ nó trên biểu đồ đường. Dưới đây là ví dụ về biểu đồ đường cho tổng tích lũy, được tạo bằng Ubiq.
Nếu bạn muốn tạo biểu đồ &trang tổng quan từ cơ sở dữ liệu Redshift, bạn có thể thử Ubiq. Chúng tôi cung cấp bản dùng thử miễn phí 14 ngày.