Dự báo chuỗi thời gian trong Snowflake bằng SQL
Dự báo nhu cầu, quản lý chuỗi cung ứng & hàng tồn kho, lập kế hoạch tài chính rất quan trọng đối với hoạt động kinh doanh. Modelstar cho phép bạn làm điều đó trong Snowflake, chỉ với 1 dòng SQL.
![](https://post.nghiatu.com/assets/images/m/max/724/1*0arcxHyLoSO9q7v_87SIkw.png)
Dự báo chuỗi thời gian là gì và các trường hợp sử dụng của nó là gì?
Dự báo chuỗi thời gian là một kỹ thuật để dự đoán các giá trị dựa trên dữ liệu được lấy mẫu theo thời gian lịch sử.
Dự báo là cơ bản cho quản lý
Dự báo có thể giúp các công ty đưa ra quyết định kinh doanh đúng đắn về quản lý chuỗi cung ứng, quản lý hàng tồn kho (về số lượng và thời điểm nhập kho lại), lập kế hoạch tài chính, lộ trình sản phẩm và chiến lược tuyển dụng, v.v. Với kết quả dự báo chính xác và kịp thời, ban quản lý doanh nghiệp có thể hiểu rõ hơn về cách phân bổ nguồn lực hoặc tận dụng các cơ hội thuận lợi.
Những thách thức kỹ thuật để dự báo
Dự báo là một ứng dụng của phân tích chuỗi thời gian. Có một số thành phần để xem xét:
- Tính thời vụ: thay đổi định kỳ theo thời gian. Ví dụ: Kỳ nghỉ hè và nghỉ đông diễn ra hàng năm hoặc mức tiêu thụ cà phê vào buổi sáng cao hơn là hàng ngày.
- Xu hướng: thay đổi liên tục không theo chu kỳ. Ví dụ: Tăng trưởng doanh số của công ty trong 5 năm qua.
- Disruptive event: sự thay đổi đột ngột. Nó có thể được thúc đẩy bởi cả các yếu tố có thể dự đoán được, chẳng hạn như ngày lễ hoặc bảo trì dịch vụ và các vấn đề không thể đoán trước, chẳng hạn như lỗi hoặc lỗi ngẫu nhiên.
Những thách thức kỹ thuật của việc thực hiện
Python có một hệ sinh thái phong phú để triển khai các thuật toán dự báo và học máy. Khả năng Snowpark mới của Snowflake mang Python đến Kho dữ liệu của bạn, sử dụng UDF để chạy Python trong SQL là yếu tố thay đổi cuộc chơi đối với các chuyển đổi mà bạn có thể thực hiện trên dữ liệu của mình. Tuy nhiên, có thể khó khăn và tốn thời gian nếu bạn muốn triển khai giải pháp đầu cuối để thực hiện dự báo. Modelstar giải quyết vấn đề này bằng cách cung cấp một giải pháp hợp lý hóa để mang siêu năng lực của Python vào SQL.
Modelstar là một dự án mã nguồn mở và được xây dựng dựa trên các tính năng mới ra mắt gần đây của Snowflake, chẳng hạn như Snowpark. Nó tự động xử lý các phụ thuộc, tạo tác mô hình và tệp I/O trong điện toán Snowflake.
Lớp lót SQL 1 để dự báo
Modelstar cho phép bạn vận chuyển và quản lý các mô hình dự báo cũng như trực quan hóa kết quả mô hình hóa bằng 1 dòng SQL bên trong Snowflake. Về cơ bản, Modelstar cung cấp các thuật toán dự báo được tạo sẵn và hiển thị chúng dưới dạng thủ tục được lưu trữ SQL trong cơ sở dữ liệu của bạn. Trong ví dụ này, chúng tôi sẽ sử dụng univariate_time_series_forecast
( API doc ). API này dựa trên thư viện mã nguồn mở Prophet , đây là một trong những thuật toán dự báo được sử dụng rộng rãi nhất trong ngành.
Hướng dẫn này cung cấp các bước để xây dựng mô hình dự báo chuỗi thời gian và báo cáo. Nó bao gồm:
- Khái niệm cơ bản: về các trường hợp sử dụng và công nghệ dự báo bán hàng.
- Công cụ Modelstar CLI: Hướng dẫn cài đặt Modelstar
univariate_time_series_forecast
Cú pháp SQL: lớp lót SQL 1 để tạo dự báo- Báo cáo dự báo: kết quả dự báo sẵn sàng được sử dụng bởi các nhóm kinh doanh
![](https://post.nghiatu.com/assets/images/m/max/724/0*paHe0TZrXPWL0GTN.png)
Chuẩn bị cho hành trình
Đây là hướng dẫn bắt đầu nhanh để thiết lập Modelstar nếu bạn là người dùng Modelstar lần đầu tiên.
Bước #1: Cài đặt Modelstar
$ pip install modelstar
Xác minh cài đặt bằng kiểm tra phiên bản nhanh:
$ modelstar --version
Bước #2: Khởi tạo dự án
$ modelstar init forecast_project
Bây giờ bạn sẽ thấy một forecast_project
thư mục được tạo trong thư mục làm việc của mình.
Bước #3: Cấu hình phiên
Bên trong forecast_project
thư mục, tìm tệp modelstar.config.yaml
và mở nó bằng trình chỉnh sửa yêu thích của bạn. Thêm thông tin và thông tin đăng nhập tài khoản Snowflake của bạn vào đó. Vui lòng đặt tên cho phiên với bất kỳ tên nào. Trong ví dụ này, chúng tôi sử dụng snowflake-test
. Thông tin đăng nhập trong tệp này được sử dụng để kết nối với kho dữ liệu Snowflake của bạn. (Lưu ý: Không chuyển tệp modelstar.config.yaml vào CI/CD, kiểm soát phiên bản của bạn.)
# ./modelstar.config.yaml
# MODELSTAR CONFIGURATION FILE
---
sessions:
- name: snowflake-test
connector: snowflake
config:
account: WQA*****
username: <username>
password: <password>
database: MODELSTAR_TEST
schema: PUBLIC
stage: test
warehouse: COMPUTE_WH
Bước #4: Ping bông tuyết
Bây giờ chúng ta có thể bắt đầu phiên Modelstar từ thiết bị đầu cuối của bạn. Bên trong thư mục của dự án Modelstar mới được tạo (trong ví dụ của chúng tôi là ./forecast_project/
), hãy chạy lệnh này:
$ modelstar use snowflake-test
Ping thành công sẽ dẫn đến kết quả như sau:
![](https://post.nghiatu.com/assets/images/m/max/724/0*xkb6p4xI6ZSjbqKl.png)
Bước #5: Đăng ký thuật toán dự báo cho Snowflake
Modelstar cung cấp sẵn thuật toán dự báo và quản lý các thành phần phụ thuộc cho thuật toán này, vì vậy bạn không cần phải làm như vậy. Để làm cho điều này có sẵn trong kho Snowflake của bạn, hãy chạy lệnh sau:
$ modelstar register forecast:univariate_time_series_forecast
![](https://post.nghiatu.com/assets/images/m/max/724/0*a_kqw10gypV96xDW.png)
Bước #6: Tải dữ liệu bán hàng mẫu lên Snowflake (tùy chọn, nếu bạn đang sử dụng tập dữ liệu của riêng mình )
Nếu bạn muốn thử thuật toán dự báo trên tập dữ liệu bán hàng mẫu, hãy chạy lệnh này để tạo bảng dữ liệu trong kho dữ liệu của bạn. Bạn có thể bỏ qua bước này nếu muốn sử dụng dữ liệu của riêng mình.
$ modelstar create table sample_data/time_series_data.csv:TS_DATA_TABLE
Xây dựng mô hình dự báo bằng cách sử dụng SQL 1 tuyến tính
Chạy tập lệnh này trong Trang tính
Sử dụng lệnh sau trong Snowflake để xây dựng mô hình dự đoán (ví dụ bên dưới sử dụng dữ liệu mẫu được tải lên ở bước #6):
CALL UNIVARIATE_TIME_SERIES_FORECAST('TS_DATA_TABLE', 'DS', 'Y', 40, 'M');
![](https://post.nghiatu.com/assets/images/m/max/724/1*9uPq-MrLBmwFiVOHEvJ8kg.png)
Để chạy thuật toán dự báo trên dữ liệu
Về cơ bản, thuật toán dự báo chạy bên trong Snowflake dưới dạng Thủ tục được lưu trữ. Nó nhận các tham số sau:
Để định cấu hình khoảng thời gian dự báo của riêng bạn, hãy kiểm tra tài liệu API này để biết danh sách đầy đủ các bí danh đơn vị.
Kiểm tra kết quả
Sau khi đào tạo mô hình kết thúc, trong cửa sổ Kết quả bông tuyết, một lần chạy thành công sẽ xuất ra một chuỗi json tương tự như sau:
{
"return_table": "RESULT_UNIVARIATE_TIME_SERIES_FORECAST",
"run_id": "3NvQXnHQqUdYG4Fu"
}
Kiểm tra bảng
Hãy kiểm tra bảng kết quả từ lần chạy bằng cách sử dụng:
SELECT * FROM RESULT_UNIVARIATE_TIME_SERIES_FORECAST;
DS
(datetime
): ngày giờY_FORECAST
,YHAT_LOWER
,YHAT_UPPER
(float): trung bình, liên kết dưới và trên của giá trị dự đoán (xemUncertainty Intervals
trong phần Thuật ngữ để biết ý nghĩa của chúng).
![](https://post.nghiatu.com/assets/images/m/max/724/1*2SLSV77WwJt37PDYR08IVA.png)
Một báo cáo ghi lại thông tin về lần chạy, với các vật phẩm máy học được tạo tự động bằng Modelstar. Để kiểm tra báo cáo, chỉ cần chạy lệnh này trong máy tính cục bộ của bạn:
$ modelstar check <run_id>
![](https://post.nghiatu.com/assets/images/m/max/724/0*iVXLmzOhXujR3_0O.png)
Như đã đề cập, một báo cáo sẽ hiển thị trong trình duyệt của bạn:
![](https://post.nghiatu.com/assets/images/m/max/724/0*tNt0aL8ovoAVsU6a.png)
Có gì trong báo cáo
Báo cáo gồm 3 phần:
- Thông tin meta của lần chạy này
- Biểu đồ dự báo: để kiểm tra chất lượng mô hình hóa và kết quả dự báo.
- Phân tích thành phần: để minh họa xu hướng và tính thời vụ mà mô hình của bạn đã “học được”, bao gồm xu hướng tổng thể, tính thời vụ hàng năm và hàng tuần (mô hình theo chu kỳ hơn 1 năm/tuần).
![](https://post.nghiatu.com/assets/images/m/max/724/0*RbDtqLKdMgRoRcCO.png)
![](https://post.nghiatu.com/assets/images/m/max/724/0*fnXW4SyMBs24x15A.png)
![](https://post.nghiatu.com/assets/images/m/max/724/0*cOIeT029azHFKTQG.png)
Dự báo trong mẫu và ngoài mẫu: Từ dự báo trong mẫu, bạn có thể kiểm tra mức độ phù hợp của mô hình dự báo với dữ liệu thực tế. Dự báo ngoài mẫu cho thấy dự đoán về tương lai.
Khoảng không chắc chắn: dải giữa giới hạn trên và dưới. Điều đó có nghĩa là có 80% xác suất giá trị thực nằm trong khoảng đó. Yêu cầu cao hơn về độ chắc chắn dẫn đến dải rộng hơn (xem bài viết của Bartosz ). Sự không chắc chắn cũng tăng lên khi chúng ta tiến xa hơn vào tương lai, dẫn đến một dải rộng hơn như là một hàm của thời gian.
Phần kết luận
Dự báo là cơ bản cho quản lý kinh doanh. Mục tiêu của chúng tôi là gửi chức năng Dự báo cho Snowflake để đào tạo mô hình Máy học và đưa ra dự đoán bằng cách sử dụng nó. Chúng tôi đã đạt được tất cả những điều này chỉ với 1 dòng SQL. Cùng với điều này, một báo cáo chạy có chứa các chi tiết của chạy cùng với phân tích dự báo được tạo ra. Điều này đã được thực hiện bởi Modelstar .
Kiểm tra kho lưu trữ GitHub của Modelstar: tại đây , đánh dấu sao để được cập nhật mới nhất. Trong trường hợp có lỗi, sự cố hoặc yêu cầu tính năng cho trường hợp sử dụng của bạn, hãy liên hệ trên Github hoặc mở một sự cố trên GitHub .
- Kho lưu trữ GitHub:https://github.com/modelstar-labs/modelstar
- Tài liệu:https://modelstar.io/docs/quickstart/