Triển khai Data Warehouse với Qlik (P2)

Trong bài viết trước, chúng ta đã tìm hiểu khái niệm, cấu trúc dữ liệu và kiến trúc tổng thể của một hệ thống Data Warehouse. Câu hỏi thực tế đặt ra là các khái niệm này được áp dụng hoặc triển khai như thế nào vào QlikView hoặc Qlik Sense?

QlikView và Qlik Sense đều được thiết kế không phải chỉ như một công cụ (tool) mà là một nền tảng (platform) hoàn chỉnh. Theo đó, ngoài service chính là Qlik Engine chuyên xử lý các tác vụ tính toán và vẽ biểu đồ, phiên bản Enterprise của QlikView và Qlik Sense còn cung cấp các dịch vụ phụ trợ như Qlik Management Console (QMC), đảm bảo hiện thực được tất cả các công đoạn trong một hệ thống Data Warehouse.

Như đã trình bày ở bài viết trước, kiến trúc của các hệ thống Data Warehouse thường bao gồm các lớp (layer) sau:

  • Data Source Layer
  • Data Extraction Layer
  • Staging Area
  • ETL Layer
  • Data Storage Layer
  • Data Logic Layer
  • Data Presentation Layer
  • Metadata Layer
  • System Operations Layer

Để hiểu về khả năng triển khai Data Warehouse với Qlik, ta hãy xem xét các thành phần của QlikView/ Qlik Sense tương ứng với các layer trên. Sự tương ứng này được tóm tắt trong hình sau:

Các thành phần của Qlik tương ứng với các lớp Data Warehouse

Data Source Layer

Đây là các nguồn dữ liệu OLTP mà Qlik có khả năng kết nối thông qua các data connector. Ở layer này, bạn chỉ cần tập trung trả lời câu hỏi: các hệ thống nghiệp vụ mà bạn cần tích hợp vào Data Warehouse có khả năng kết nối dữ liệu với Qlik không? Trong phần lớn trường hợp câu trả lời là có, chỉ cần hệ thống hỗ trợ một trong các giao diện trao đổi dữ liệu (data interface) sau:

Data Extraction Layer

Ở layer này, Qlik cung cấp các data connector cho phép kết nối QlikView và Qlik Sense với nhiều nguồn dữ liệu khác nhau. Data connector trong Qlik rất đa dạng, từ các connector tích hợp sẵn trong Qlik Engine (data file, webfile) đến các connector bên ngoài (REST, Essbase, SAP, ODBC Connector package, v.v). Bạn có thể tìm hiểu thêm chi tiết ở loạt bài viết Kết nối Qlik với nguồn dữ liệu.

Staging Area

Các tổ chức Data Warehouse đơn giản không cần dùng đến bước Staging. Data connector trích xuất dữ liệu từ nguồn và đẩy dữ liệu thẳng vào Qlik Engine. Engine đọc dữ liệu trực tiếp từ dòng dữ liệu của data connector và thực hiện các bước biến đổi mà không cần phải lưu dữ liệu xuống các file trung gian.

Khi cần triển khai Staging Area, cách hiện thực thường thấy trong Qlik là xây dựng một QlikView/ Qlik Sense application chuyên dụng, dùng các data connector lấy dữ liệu thô từ data source và lưu vào các file QVD (QlikView Data file). QVD là một định dạng file dữ liệu riêng của Qlik, được thiết kế để tối ưu hóa tốc độ đọc dữ liệu vào QlikView/ Qlik Sense với dung lượng lưu trữ tối thiểu trên đĩa cứng. Dữ liệu từ các file QVD hàng chục GB có thể được load vào Qlik trong vài giây.

ETL Layer

Bản thân reload script trong QlikView / Qlik Sense chính là một công cụ ETL, đủ khả năng hiện thực hầu hết các logic biến đổi dữ liệu. Ở layer này, một QlikView/ Qlik Sense application có thể được xây dựng, làm nhiệm vụ load dữ liệu thô từ các file QVD trong Staging Area, làm sạch, kết hợp và biến đổi thành dữ liệu chuẩn trong Data Warehouse. Reload script hỗ trợ nhiều câu lệnh khác nhau để thực hiện các thao tác trên dữ liệu như xử lý chuỗi, định dạng ngày tháng, join các bảng dữ liệu, v.v.

Data Storage Layer

Tương tự như Staging Area, dữ liệu đã được làm sạch và chuẩn hóa ở bước ETL được lưu xuống các file QVD khác. Dữ liệu trong các file QVD này đã sẵn sàng để sử dụng trong các BI dashboard.

Data Logic Layer

Giai đoạn này là lúc các QlikView/ Qlik Sense dashboard bắt đầu được xây dựng. Ở layer này, chuyên viên BI có thể chuẩn bị các expression để tính toán số liệu nghiệp vụ cần phân tích. Expression trong Qlik có thể thực hiện được các logic phức tạp (tham khảo loạt bài Set Analysis trong Qlik). Ngoài ra, Qlik Sense cũng hỗ trợ tính năng Master Items, giúp người thiết kế dashboard định nghĩa trước các dimension/ measure trong application (xem loạt bài Master Items trong Qlik Sense).

Data Presentation Layer

Ở giai đoạn này, QlikView và Qlik Sense cung cấp công cụ trực quan hóa dữ liệu thông qua các visualization object. Tùy vào loại số liệu, mục tiêu phân tích và đối tượng tiếp nhận thông tin mà người thiết kế Dashboard có thể lựa chọn biểu đồ phù hợp đề trình bày thông tin.

Qlik hỗ trợ hầu hết các loại biểu đồ từ thông dụng như pie chart, bar chart, map chart đến các loại ít phổ biến hơn như funnel chart, box plot hay waterfall chart, v.v. Đối với các loại biểu đồ đặc thù chưa được hỗ trợ trong các visualization object có sẵn của Qlik, bạn luôn có thể tải các biểu đồ mở rộng (extension) từ Qlik Branch. Đây là một cộng đồng được tổ chức bởi Qlik, bao gồm các developer liên tục cập nhật các extension nhằm không ngừng tăng cường khả năng trực quan hóa dữ liệu trong QlikView và Qlik Sense.

Thiết kế biểu đồ nhanh chóng với các visualization object và extension trong Qlik Sense

Trong các bài viết trước, blog Viet Qlikies cũng đã trình bày nhiều ví dụ sử dụng các visualization object khác nhau trong Qlik Sense. Bạn có thể tham khảo các bài viết trong chuyên mục Thiết kế dashboard của blog.

Dashboard không phải là phương tiện duy nhất để truyền tải thông tin trong Data Warehouse đến người dùng cuối. Ngoài các dashboard trực quan, Qlik còn cung cấp khả năng tạo báo cáo tĩnh với công cụ Qlik NPrinting. Không chỉ thiết kế báo cáo từ dữ liệu trong QlikView hoặc Qlik Sense, NPrinting còn có thể tạo hàng loạt báo cáo với nội dung tùy chỉnh và tự động gửi báo cáo đến nhiều người sử dụng cùng lúc.

Metadata Layer

Trong các ứng dụng QlikView/ Qlik Sense và QVD data file, Metadata được lưu trữ trong các thành phần sau:

  • Mô hình dữ liệu (data model) của ứng dụng. Khi mở data model, bạn có thể thấy được các bảng dữ liệu, tên và kiểu dữ liệu của các field trong ứng dụng đó.
  • Master dimensions: Qlik Sense cho phép thêm các mô tả và gắn nhãn cho các Master dimension, giúp người dùng dễ dàng phân loại, tìm kiếm và hiểu được mục đích của các dimension.
  • QVD lineage: Dữ liệu trong các QVD file đều được mã hóa dưới dạng nhị phân (binary), thích hợp cho việc load dữ liệu nhanh vào QlikView/ Qlik Sense. Tuy nhiên, ngoài phần binary data, các file QVD cũng chứa một vùng dữ liệu dạng XML lưu trữ metadata, bao gồm nguồn gốc dữ liệu, định nghĩa và kiểu dữ liệu của các filed. Phần dữ liệu XML này được gọi là data lineage của file QVD. Nếu thử mở 1 file QVD bằng Notepad, bạn sẽ thấy phần metadata dạng XML bên cạnh binary data như trong hình bên dưới.
Lineage data trong file QVD

System Operations Layer

Ở phiên bản Enterprise, gói sản phẩm QlikView và Qlik Sense bao gồm một dịch vụ quản lý toàn bộ hệ thống, gọi là Management Service trong QlikView và Repository Service trong Qlik Sense. Các service này có thể được điểu chỉnh thông qua giao diện Qlik Management Console (QMC). QMC giúp người quản trị hệ thống cấu hình và theo dõi hoạt động của hệ thống ở mức độ chi tiết rất cao. Một số chức năng cơ bản như sau:

  • Quản lý người dùng: Thiết lập các kết nối với Active Directory, LDAP server hoặc các dịch vụ thư mục khác để xác thực (authenticate) người sử dụng
  • Thiết lập lịch trình thực hiện các tác vụ ETL và reload dữ liệu trong các ứng dụng, ví dụ như chạy ETL để trích xuất dữ liệu từ hệ thống nguồn vào 3h sáng hằng ngày.
  • Phân quyền: Người dùng hoặc nhóm người dùng nào được quyền xem dashboard nào
  • Quản lý tài nguyên hệ thống: Điều chỉnh mức độ sử dụng RAM/ CPU của các ứng dụng, ưu tiên tài nguyên cho các ứng dụng quan trọng, thiết lập cảnh báo khi mức độ sử dụng tài nguyên vượt quá ngưỡng an toàn.
Một phần giao diện Management Console trong Qlik Sense

Qlik Data Catalyst – giải pháp quản lý dữ liệu quy mô lớn của Qlik

Cuối năm 2018, Qlik đã cho ra mắt sản phẩm Qlik Data Catalyst, một hệ thống quản lý dữ liệu doanh nghiệp ở quy mô lớn. Sản phẩn này ra đời sau thương vụ Qlik mua lại Podium Data – một công ty chuyên cung cấp giải pháp quản lý dữ liệu.

Qlik Data Catalyst cung cấp khả năng thu thập, quản lý và lập danh mục dữ liệu (data catalog) trên toàn bộ dữ liệu của doanh nghiệp. Sản phẩm này hiện đang được sử dụng bởi một số doanh nghiệp có khối lượng dữ liệu nghiệp vụ rất lớn (hằng tỷ dòng dữ liệu) như ngân hàng hoặc trung tâm tài chính.

Danh mục dữ liệu (data catalog) trong Qlik Data Catalyst

Ở phần cuối bài viết này, mình sẽ chỉ điểm qua một số đặc điểm nổi trội của Qlik Data Catalyst so với QlikView/ Qlik Sense ở góc độ triển khai Data Warehouse:

  • Có thể triển khai trên các nền tảng lưu trữ dữ liệu và máy chủ hiện đại, bao gồm Hadoop, Amazon Web Services, Microsoft Azure và Google Cloud Platform.
  • Cung cấp khả năng quản lý metadata chuyên nghiệp. Trong kiến trúc Data Warehouse với QlikView/ Qlik Sense, ở Metadata Layer, metadata được lưu trữ ở nhiều thành phần khác nhau. Điều này có thể gây khó khăn cho người sử dụng trong việc định vị dữ liệu nếu số lượng field là rất lớn. Qlik Data Catalyst cho phép tổ chức metadata thành các catalog với giao diện quản lý thống nhất và dễ dàng truy cập bởi toàn bộ người dùng. Với data catalog được tổ chức tốt, việc chọn ra dữ liệu cần thiết để xây dựng BI dashboard được thực hiện thuận tiện như mua hàng online theo đúng nghĩa: Bạn đăng nhập vào Qlik Data Catalyst, tìm kiếm trên các catalog, xem định nghĩa và thông tin chi tiết của các bảng dữ liệu, chọn ra bảng dữ liệu bạn cần, thêm vào “giỏ hàng” (cart) và xác nhận. Data Catalyst sẽ tự động chuẩn bị các bảng dữ liệu trong “đơn hàng”, bạn có thể load vào QlikView/ Qlik Sense và bắt đầu xây dựng dashboard ngay lập tức mà không cần nhiều thao tác trên reload script như các ứng dụng thông thường.
  • Ở ETL layer, Qlik Data Catalyst hỗ trợ xây dựng quy trình biến đổi dữ liệu dưới dạng sơ đồ trực quan. Thay vì phải viết reload script trong QlikView/ Qlik Sense để hiện thực các logic như join bảng A với bảng B, cắt 10 ký tự trong cột ID của bảng C v.v., với Data Catalyst bạn có thể kéo thả các công đoạn xử lý (operator) và liên kết các operator để tạo thành một luồng công việc (workflow).
Tạo ETL workflow trực quan trong Qlik Data Catalyst