A. TỔNG QUAN GIẢI PHÁP
KPIM xây dựng và giới thiệu về giải pháp phân tích dữ liệu thời gian thực của Fabric, Real-Time Intelligence, tận dụng API từ các trang web cung cấp dữ liệu chứng khoán để truy xuất dữ liệu trực tiếp, kết hợp với các tính năng mạnh mẽ của Fabric nhằm đáp ứng nhu cầu doanh nghiệp. Bên cạnh đó, còn bao gồm mẫu báo cáo Power BI Report được kết nối trực tiếp với dữ liệu qua Eventhouse, cho phép tự động cập nhật các phép biến đổi, tổng hợp, và kích hoạt theo thời gian thực.
Giải pháp này mang đến giao diện thân thiện, dễ sử dụng, hỗ trợ theo dõi và giám sát luồng dữ liệu qua các hệ thống lưu trữ như Lakehouse và Eventhouse, cùng với bảng phân tích thời gian thực (Real-time Dashboard). Người dùng có thể dễ dàng theo dõi và quản lý các biến động trên sàn giao dịch với độ trễ chỉ tính bằng giây, từ đó đưa ra các quyết định kịp thời và chính xác. Các cổ phiếu thuộc các sàn nổi tiếng như HOSE và VN30 đều được giám sát chặt chẽ qua hệ thống này.
Không chỉ dừng lại ở việc thu thập và biến đổi dữ liệu thời gian thực, giải pháp còn hỗ trợ kích hoạt các sự kiện tự động khi có biến động xảy ra. Real-Time Intelligence không yêu cầu dữ liệu phải liên tục với tốc độ và khối lượng cao, mà cung cấp các giải pháp dựa trên sự kiện, thay vì theo lịch trình cố định. Giải pháp này có thể áp dụng trong nhiều lĩnh vực kinh doanh khác nhau, như ô tô, sản xuất, IoT, phát hiện gian lận, quản lý hoạt động kinh doanh và phát hiện bất thường.
B. CHI TIẾT GIẢI PHÁP
KPIM giới thiệu việc triển khai giải pháp này qua việc áp dụng một vấn đề thực tế: phân tích dữ liệu chứng khoán theo thời gian thực. Real-Time Analytics (RTA) có khả năng tổng hợp và xử lý mạnh mẽ với lượng dữ liệu lớn từ nhiều nguồn khác nhau, cung cấp nhiều loại hình biểu đồ và tính năng thiết kế báo cáo đa dạng, có khả năng cập nhật dữ liệu thời gian thực, và tính năng phân quyền truy cập báo cáo ở nhiều cấp độ khác nhau.
Tổng Quan về Fabric Real-Time Intelligence:
Dữ liệu dạng quan sát, thu thập từ nhiều nguồn như ứng dụng, thiết bị cảm ứng, và tiếp xúc giữa người với người, là loại dữ liệu tăng trưởng nhanh nhất hiện nay. Dữ liệu này thường bán cấu trúc dưới dạng JSON và Text, có số lượng lớn và schema thay đổi nhanh chóng, làm cho việc lưu trữ trong các nền tảng Datawarehouse truyền thống trở nên khó khăn. Real-time Analytics là phương pháp tốt nhất để phân tích loại dữ liệu này, với các tính năng chính như:
- Công cụ truy vấn hiệu suất cao: Sử dụng ngôn ngữ truy vấn Kusto Query Language (KQL) để tìm kiếm hiệu quả dữ liệu có cấu trúc, bán cấu trúc và không cấu trúc.
- Khả năng mở rộng: Nền tảng có thể mở rộng quy mô theo nhu cầu dữ liệu và truy vấn mà không ảnh hưởng đến hiệu suất.
- Tích hợp với Fabric: Liên kết liền mạch với các dịch vụ khác của Fabric như Data Factory và Data Lake, giúp xây dựng các pipeline dữ liệu toàn diện.
- Dễ sử dụng: Giao diện thân thiện và quy trình đơn giản giúp cả nhà khoa học dữ liệu công dân và kỹ sư dữ liệu cao cấp đều dễ dàng sử dụng.
- Nhiều kết nối: Hỗ trợ hầu hết các kết nối thông dụng nhất trên thị trường hiện nay.
Mô hình tổng quan của Workload
Eventstream (Capture & Process):
Khám phá dữ liệu streaming: Real-Time hub là trung tâm khám phá và quản lý dữ liệu streaming, bao gồm các luồng dữ liệu, nguồn dữ liệu từ Microsoft như Azure Event Hubs, Azure IoT Hub, Azure SQL DB Change Data Capture (CDC), Azure Cosmos DB CDC, PostgreSQL DB CDC.
Kết nối với dữ liệu streaming: Event streams hỗ trợ nhiều nguồn và đích dữ liệu, ví dụ như Apache Kafka clusters, AWS Kinesis, Google GCP Pub/Sub.
Xử lý dữ liệu streams: Sử dụng các khả năng xử lý sự kiện để lọc, làm sạch, biến đổi và tổng hợp dữ liệu.
Event House (Storage):
Lưu trữ và phân tích dữ liệu: Eventhouses là công cụ phân tích lý tưởng để xử lý dữ liệu streaming, với khả năng truy vấn nhanh và phức tạp trên dữ liệu có độ phân giải cao.
Truy vấn dữ liệu: Dữ liệu lưu trữ trong eventhouses có thể được truy vấn bằng KQL hoặc T-SQL.
Reflex (Act & Trigger):
Kích hoạt hành động: Thiết lập các cảnh báo Reflex để phản ứng với các mẫu dữ liệu hoặc điều kiện trong thời gian thực, ví dụ như cảnh báo người dùng, thực thi các mục công việc trong Fabric, hoặc kích hoạt các workflow của Power Automate.
Real Time Dashboard hoặc Power BI (Analyze):
Trực quan hóa dữ liệu: Các insights từ dữ liệu có thể được trực quan hóa trong các bộ query KQL, dashboard thời gian thực và báo cáo Power BI. Các dashboard và báo cáo này đi kèm với các tương tác mặc định giúp đơn giản hóa quá trình hiểu dữ liệu.
Kích hoạt hành động từ insights: Các insights này có thể chuyển thành hành động với Data Activator, như thiết lập cảnh báo Reflex từ các phần khác nhau của Fabric để phản ứng với các mẫu dữ liệu hoặc điều kiện trong thời gian thực.
C. CÁC BƯỚC THỰC HIỆN:
Phần 1: Set up các dịch vụ trên Fabric
Hình 1: Flow tổng quan
Tạo Eventstream:
- Đăng nhập vào Microsoft Fabric và di chuyển vào phần workload Real-time Intelligence.
Hình 1.2: Giao diện Fabric
- Chọn tạo mới Eventstream.
Hình 1.3: Tạo Eventstream
- Đặt tên cho Eventstream và cấu hình các thiết lập khác như là nguồn dữ liệu (ví dụ: từ Azure Event Hub, Azure IoT Hub, hoặc từ một Custom App).
Hình 1.4: Đặt tên cho Eventstream
Kết nối với nguồn dữ liệu:
Kết nối với nguồn dữ liệu: Trong project này chọn Custom App, Fabric sẽ set up 1 Event hub, đơn giản nhất cho chúng ta.
Hình 1.5: Set up Source là Custom App
Chọn Destinations:
Sau khi thiết lập nguồn dữ liệu, bạn có thể định tuyến dữ liệu từ Eventstream đến các đích đến khác nhau. Ví dụ: KQL Database, Lakehouse, Power BI, Reflex, và các custom endpoints khác.
Hình 1.6: Custom App
Khám phá dữ liệu streaming: Real-Time hub là trung tâm khám phá và quản lý dữ liệu streaming, bao gồm các luồng dữ liệu, nguồn dữ liệu từ Microsoft như Azure Event Hubs, Azure IoT Hub, Azure SQL DB Change Data Capture (CDC), Azure Cosmos DB CDC, PostgreSQL DB CDC.
Hình 1.7: Set up Destination
Hình 1.8: Các Key cần thiết để thiết lập kết nối
Sau khi đã thiết lập một Eventstream để bắt đầu lưu trữ và xử lý dữ liệu, bước tiếp theo là chọn tính năng Custom App trong Eventstream để triển khai nhanh chóng. Chúng ta sẽ sử dụng Event Hubs với các Keys và Names đã được tạo sẵn, giúp việc triển khai trở nên dễ dàng hơn.
- Chọn Event Hubs:
- Trong Eventstream, chọn tùy chọn Custom App để thiết lập một Event Hub.
- Event Hub sẽ tự động tạo các Keys và Names cần thiết cho việc kết nối.
- Truy cập và sao chép thông tin Key:
- Nhấp vào phần Keys để xem và sao chép thông tin.
- Thông thường, các thông tin Key này sẽ bao gồm Primary Key và Secondary Key.
- Sao chép thông tin Key để sử dụng trong quá trình kết nối.
- Kết nối và thiết lập Destination:
- Sử dụng các Key đã sao chép để kết nối ứng dụng của bạn với Event Hub.
- Trước khi đẩy dữ liệu lên Fabric, tiếp tục thiết lập Destination để định tuyến dữ liệu.
Bằng cách sử dụng Event Hubs và các Key có sẵn, bạn có thể nhanh chóng và dễ dàng triển khai và kết nối dữ liệu với hệ thống Fabric, đảm bảo quá trình thu thập và xử lý dữ liệu diễn ra suôn sẻ và hiệu quả.
Phần 2: Ingest dữ liệu thời gian thực vào Fabric:
Hình 1.9: Minh hoạ workload
- Thực hiện Real-Time Analytics với dữ liệu chứng khoán
- Trong phần này, chúng ta sẽ gọi API, xử lý dữ liệu, và trực quan hóa kết quả bằng các công cụ của Microsoft Fabric. Dưới đây là ba phương pháp cụ thể để gọi API và xử lý dữ liệu:
- Gọi API từ Power Automate:
- Sử dụng Power Automate để tự động hóa quá trình gọi API và chuyển dữ liệu vào Fabric.
- Gọi API từ Local:
- Sử dụng script chạy trên máy tính cá nhân để gọi API và gửi dữ liệu đến Fabric.
- Gọi API từ Notebook:
- Sử dụng các dịch vụ đám mây như Azure hoặc Google Colab để gọi API và ingest dữ liệu vào Fabric.
Phương Pháp Chi Tiết
1. Gọi API từ Power Automate
Power Automate là một công cụ “low-code” cho phép tự động hóa các quy trình và tích hợp nhiều ứng dụng khác nhau. Chúng ta sẽ sử dụng Power Automate để gọi API chứng khoán và gửi dữ liệu đến Fabric.
- Bước 1: Đăng nhập vào trang chủ Power Automate và tạo một Flow mới.
- Bước 2: Thiết lập một trigger theo lịch (ví dụ: mỗi phút) để tự động gọi API.
- Bước 3: Gọi API từ Power Automate và xử lý dữ liệu nhận được.
- Bước 4: Gửi dữ liệu lên Fabric qua Event Hub.
2. Gọi API từ Local
Chúng ta có thể sử dụng script Python chạy trên máy tính cá nhân để gọi API và gửi dữ liệu đến Fabric. Thư viện VNSTOCK cung cấp các hàm cần thiết để gọi API chứng khoán.
- Bước 1: Import các thư viện và module cần thiết (ví dụ: datetime, logging, vnstock, pandas).
- Bước 2: Đọc thông tin cấu hình từ file config.csv để lấy thông tin kết nối.
- Bước 3: Khởi tạo đối tượng VNSTOCK và gọi API để lấy dữ liệu chứng khoán.
- Bước 4: Tạo DataFrame từ dữ liệu nhận được và gửi dữ liệu lên Event Hub.
3. Gọi API từ Notebook
Sử dụng các dịch vụ đám mây như Azure hoặc Google Colab để gọi API và ingest dữ liệu vào Fabric.
- Bước 1: Import các thư viện và module cần thiết.
- Bước 2: Thiết lập kết nối đến Event Hub từ Notebook.
- Bước 3: Gọi API và xử lý dữ liệu tương tự như trên máy tính cá nhân.
- Bước 4: Gửi dữ liệu lên Fabric.
Xử Lý và Trực Quan Hóa
Sau khi dữ liệu được lấy từ API và ingest vào Fabric, chúng ta sẽ thực hiện các bước sau để xử lý và trực quan hóa dữ liệu:
Lưu trữ và Xử lý:
- Sử dụng Eventstream trong Fabric để ghi lại, chuyển đổi và định tuyến dữ liệu thời gian thực đến các điểm đến khác nhau như KQL Database và Lakehouse.
Trực quan hóa:
- Sử dụng Power BI để trực quan hóa dữ liệu và tạo các báo cáo động, giúp capture các thay đổi trong thời gian thực.
Phần 3: Thực Hành:
Power Automate
Giới thiệu Power Automate:
Power Automate là một ứng dụng “low-code” dành cho doanh nghiệp, cho phép người dùng tích hợp và đồng bộ hóa tất cả các ứng dụng, cũng như tự động hóa quy trình phân tích dữ liệu. Được xây dựng trên nền tảng điện toán đám mây bảo mật của Microsoft, Power Automate mang đến khả năng tự động hóa quy trình làm việc một cách dễ dàng và hiệu quả.
Power Automate được coi là người kế thừa của SharePoint Designer, cung cấp các giải pháp cho nhiều tình huống kinh doanh phổ biến. Với giao diện trực quan và khả năng kéo thả, người dùng có thể tạo các luồng công việc phức tạp mà không cần viết mã. Điều này giúp tối ưu hóa quy trình công việc, giảm thiểu thời gian và công sức, đồng thời đảm bảo tính chính xác và nhất quán trong việc xử lý dữ liệu.
Bước 1: Đăng Nhập và Tạo Flow
- Truy cập trang web Power Automate và đăng nhập bằng tài khoản Microsoft của bạn.
Bước 2: Tạo Flow
- Nhấn vào nút Tạo trên thanh điều hướng.
- Chọn Dòng tự động (Flow) để bắt đầu tạo một luồng tự động hóa.
Trang chính của Power Automate
Tạo Flow
Tạo Flow để Gọi API và Gửi Dữ liệu lên Fabric:
- Trong giao diện Power Automate, chọn Tạo một luồng làm việc đám mây theo lịch.
Thiết lập thời gian trigger cho Flow
- Thiết lập thời gian trigger cho flow, ví dụ: mỗi phút để kiểm tra và gọi API
Thiết Lập Biến Chứa Danh Sách
- Thêm hành động Initialize Variable để khởi tạo biến chứa danh sách các mã chứng khoán, ví dụ: FPT, ACB, TCB, ….
- Tạo một biến kiểu Array và liệt kê các mã chứng khoán bạn muốn lấy dữ liệu.
.
Gọi API Chứng Khoán
- Sử dụng hành động HTTP để gọi API chứng khoán từ web VPS.
- Cung cấp đường dẫn API và thiết lập các thông số cần thiết (ví dụ: phương thức GET, URL endpoint, headers, v.v.).
Giao Diện Dữ Liệu Từ web VPS
Kết Quả của Pipeline:
- Dữ liệu sẽ được lấy ở dạng JSON và xử lý trong flow của Power Automate.
- Nếu thành công, dữ liệu sẽ được đẩy lên Fabric tại Event Hub.
- Kiểm tra và xác nhận dữ liệu đã được gửi lên thành công.
Gọi API từ Local bằng Python:
Giới thiệu về VNSTOCK:
Trang chủ VNSTOCK cung cấp một thư viện miễn phí để truy cập dữ liệu chứng khoán và tài chính toàn diện. Thư viện này giúp đơn giản hóa việc gọi API và tự động hóa quy trình, phù hợp cho các nhà đầu tư muốn tiếp cận dữ liệu từ nhiều nguồn mà không cần nhiều kỹ năng kỹ thuật. Việc gọi dữ liệu từ API tích hợp trong VNSTOCK trở nên đơn giản chỉ bằng việc sử dụng các hàm có sẵn.
Tổng quan mã nguồn
Bước 1: Import các Thư viện và Module cần thiết:
- datetime: Để lấy thời gian hiện tại.
- logging, os: Các thư viện và module liên quan đến điều khoản của Vnstock.
- Vnstock: Thư viện vnstock3 để gọi API lấy dữ liệu chứng khoán.
- pandas: Để xử lý dữ liệu dưới dạng DataFrame.
- EventHubProducerClient, EventData: Các lớp từ thư viện azure.eventhub để gửi dữ liệu lên Azure Event Hub.
- csv: Để đọc thông tin cấu hình từ file CSV.
Bước 2: Đọc Thông tin Cấu hình từ File config.csv:
- Mở file config.csv để lấy thông tin connection_str và eventhub_name để kết nối và gửi dữ liệu lên Event Hub.
Bước 3: Khởi tạo Đối tượng VNSTOCK và Lấy Dữ liệu
- Sử dụng thư viện vnstock3 để khởi tạo đối tượng stock với mã cổ phiếu VN30F1M từ nguồn dữ liệu VCI.
Lấy danh sách các cổ phiếu trong VN30 và giá chứng khoán hiện tại:
- stock.listing.symbols_by_group(‘VN30’).tolist(): Lấy danh sách các cổ phiếu trong VN30.
- stock.listing.all_symbols(): Lấy tất cả các mã cổ phiếu và thông tin liên quan.
- stock.trading.price_board(ticker_list): Lấy thông tin bảng giá (listing, match, bid_ask) cho danh sách mã cổ phiếu.
Bước 4: Gửi Dữ liệu đến Azure Event Hub
- pd.DataFrame: Chuyển đổi dữ liệu từ dictionary sang DataFrame để dễ dàng xử lý.
- Sau đó đơn giản chỉ cần send dữ liệu đó tới Eventhub
Sử dụng Notebook:
Sử dụng các dịch vụ đám mây như Azure hoặc GG colab để gọi API và ingest dữ liệu vào Fabric.
Tổng quan mã nguồn trên Notebook
Thử Nghiệm trên Google Colab hoặc Azure Notebook
Bạn có thể dễ dàng thử nghiệm các bước trên Google Colab bằng cách sao chép mã nguồn vào một notebook mới và thực thi từng bước.
Notebook mẫu trên Google Colab
Bạn có thể tham khảo và sử dụng notebook mẫu đã được cung cấp miễn phí bởi Vnstock tại VNSTOCK Notebook trên Google Colab.
Notebook và tài liệu mẫu:
1_vietnam_stock_vnstock3.ipynb – Colab (google.com)
Lịch sử phiên bản | Dễ dùng, dễ tuỳ biến & tự động hoá. (vnstocks.com)
Phần 4: Biến Đổi Dữ Liệu Trước Khi Lưu Trữ
Bước 1: Truy cập vào Eventstream chúng ta đã tạo sẵn trước đó
Dữ liệu được ingest
- Dữ liệu được ingest từ một trong ba cách trên (Power Automate, Local bằng Python, hoặc từ Notebook trên dịch vụ đám mây). Sau khi dữ liệu được gọi từ Power Automate và đưa vào Custom Event Hub trên Fabric, chúng ta sẽ bắt đầu biến đổi dữ liệu.
Thiết Lập Destination và Biến Đổi Dữ Liệu
- Tùy theo nhu cầu dự án, chúng ta có thể tùy chỉnh và quản lý số lượng destinations này một cách linh hoạt. Ở đây, chúng ta đã thiết lập một Lakehouse và một Eventhouse trên hệ thống.
Thực Hiện Biến Đổi Dữ Liệu
- Trước khi dữ liệu được đưa vào Destination, chúng ta sẽ thực hiện các bước transform để dữ liệu đúng định dạng hoặc theo yêu cầu. Sử dụng tính năng Event Processing để thực hiện các phép biến đổi.
Giao diện Event Processing
Bước 2: Chọn Event Processing của mỗi Destination, để có thể transform chúng.
- Dữ liệu sau khi được đẩy lên còn khá thô và khó có thể bắt đầu bước phân tích, nên cần biến đổi chúng. Chẳng hạn như đổi tên các cột và kiểu dữ liệu của chúng.
Một số Operation để có thể transform dữ liệu
Một Số Phép Biến Đổi (Operations)
- Aggregate: Sử dụng phép biến đổi này để tính toán một tổng hợp (Sum, Min, Max hoặc Trung bình) mỗi khi có một dòng mới được capture trong một khoảng thời gian nhất định. Phép biến đổi này cũng cho phép đổi tên các cột và lọc tổng hợp dựa trên các cột trong dữ liệu của bạn.
- Expand: Tạo ra dòng mới cho các giá trị trong mảng.
- Filter: Lọc các dữ liệu dựa trên một tham số cụ thể chẳng hạn giá trị cột Value phải >5, =5, phụ thuộc vào kiểu dữ liệu, Filter sẽ chỉ giữ các dòng thoả điều kiện.
- Group by: Sử dụng phép biến đổi Group by để tính toán các tổng hợp trên tất cả các sự kiện trong một khoảng thời gian nhất định. Bạn có thể nhóm theo các giá trị trong một hoặc nhiều trường. Giống như Aggregate, phép biến đổi này cho phép đổi tên các cột và cung cấp nhiều tùy chọn hơn cho tổng hợp và bao gồm các tùy chọn phức tạp hơn cho các cửa sổ thời gian. Bạn có thể thêm nhiều hơn một phép tổng hợp mỗi lần biến đổi. Các tổng hợp có thể bao gồm:
- Average
- Count
- Maximum
- Minimum
- Standard Deviation
- Sum
- Variance
Link tham khảo chi tiết hơn:
Process event data with the event processor editor – Microsoft Fabric | Microsoft Learn
Sử Dụng Chức Năng Manage Field trong Fabric
Hãy sử dụng chức năng Manage Field trong Fabric để lọc và chỉnh sửa các cột cần thiết, cũng như thay đổi tên và kiểu dữ liệu của chúng. Fabric cung cấp nhiều built-in function giúp xử lý dữ liệu một cách hiệu quả và đơn giản.
Add add column để lấy mọi cột
Áp Dụng Built-in Functions
Ví dụ, nếu dữ liệu thiếu phần thời gian lúc xử lý, chúng ta sẽ sử dụng một hàm có sẵn trong Fabric để thêm thông tin thời gian. Sau khi hoàn tất set-up, chúng ta sẽ đẩy dữ liệu real-time lên Event.
Phần 5: Tạo Sample Dashboard
Dashboard các Mã cổ phiếu VN30
Dashboard với dữ liệu trực tiếp từ EventHouse
Viết bài: Nguyễn Trần Đức Anh