OLAP Cube
Big Data
6
White

Bùi Hồng Hà viết ngày 19/01/2016

Giới thiệu

Có một giai đoạn, công ty mình định triển khai OLAP Cube để nâng cao khả năng phân tích dữ liệu nên mình có theo dõi dự án Apache Kylin. Hôm nay vào thì thấy là dự án này đã "tốt nghiệp" khỏi Apache Incubator và trở thành một dự án Apache. Điều này có nghĩa là Apache Kylin đã đủ ổn định để có thể đưa ra chạy trên môi trường sản phầm. Chắc là còn xa mới triển khai middleware như này ở công ty mình, tuy vậy mình thấy middleware này có mô hình OLAP Cube có vẻ thú vị nên mình muốn viết qua về khái niệm này.

OLAP Cube

alt text

OLAP Cube là thuật ngữ dùng để chỉ dữ liệu có nhiều chiều (Cube) mà có thể xử lý phân tích online (OLAP). Nếu số chiều của dữ liệu lớn hơn 3, dữ liệu này còn được gọi là hypercube.

Dữ liệu nhiều chiều có thể hiểu đơn giản là dữ liệu mà bạn muốn nhóm theo các tiêu chí khác nhau. Ví dụ trong wiki đưa ra là bạn muốn nhóm dữ liệu tài chính của một công ty theo sản phẩm, khung thời gian, thành phố.. để so sách cho dự án hay lương nhân viên. Các tiêu chí nhóm dữ liệu này (sản phẩm, khung thời gian, địa điểm...) là một chiều dữ liệu vì nó cung cấp một góc nhìn khác đến dữ liệu hiện có.

Một thuật ngữ quan trọng trong OLAP Cube là Slicer. Slicer hiểu giống hệt nghĩa đen của nó trong tiếng Anh là lát cắt. Khi ta cắt Cube ra theo một chiều nào đó thì tất cả các dữ liệu trên Slicer sẽ có chung 1 chiều (nói cách khác là 1 chiều cố định).

Ví dụ giả sử ta có số liệu dữ liệu dân số theo vùng miền, đổ tuổi, giới tính, thời gian của cả nước Việt Nam, thì dân số Hà Nội là 1 slicer.

Ưu điểm của OLAP Cube

OLAP Cube dù sao cũng chỉ là một mô hình tưởng tượng về dữ liệu Spreadsheet mà ta có vậy tưởng tượng dữ liệu như một OLAP Cube thì có ưu điểm gì?

Ưu điểm 1

Giống như triết lý của Pattern Language hay Ubiquitous Language -- gọi tên và mô tả dữ liệu theo 1 mô hình nào đó cung cấp cho ta một vốn từ ngữ để nhanh chóng đưa ra nhận thức chung về một vấn đề -- OLAP Cube đưa ra các vốn từ giúp ta nhanh chóng mô tả được cách phân tích dữ liệu hơn.

Các vốn từ trong OLAP Cube bao gồm:

  • Slice
  • Dice
  • Drill Down
  • Roll up
  • Pivot

Slice

Slice chỉ việc cố định một giá trị trong một chiều dữ liệu và và cắt khối dữ liệu liên quan đến giá trị đó ra khỏi Cube. Ví dụ với dữ liệu dân số ở trên, Slice là việc cố định thành phố cần tìm hiểu là Hà Nội. 1000 lời nói không bằng một bức ảnh nên mình copy ảnh từ wiki lên đây

alt text

Theo hình vẽ, dữ liệu được cố định cho năm 2004 và cột dữ liệu tương ứng được trích xuất ra.

Dice

Dice chỉ việc lấy một khối dữ liệu bằng cách chọn một vài dữ liệu trong một chiều (hình dung là nhiều slice một lúc).

alt text

Drill Down / Up

Drill Down chỉ việc trích xuất dữ liệu dần dần bằng cách thu hẹp số chiều dữ liệu lại. Ví dụ bạn có dữ liệu dân số quốc gia và muốn biết trong tổng dân số Hà Nội có bao nhiêu nam, bao nhiêu nữ thì bạn sẽ Drill Down vào chiều thành phố là Hà nội và sau đó xem dữ liệu Nam và Nữ tương ứng

Hình dung Drill Down như kiểu chặt chém (Slice & Dice) hộp dữ liệu cho đến khi bạn nhìn thấy thứ bạn muốn nhìn.

Drill Up là quá trình ngược lại của Drill Down là việc tổng hợp dữ liệu dần dần theo chiều.

(Hình Wiki khó hiểu nên mình không đem về)

Roll Up

Roll Up chỉ quá trình bạn tổng hợp dữ liệu theo một công thức nào đó theo các chiều dữ liệu. Ví dụ vẫn với dữ liệu dân số, bạn muốn tính tỉ lệ nam : nữ của dân số cả nước, bạn sẽ muốn tính tổng số nam theo tất cả các chiều (ví dụ thành phố, độ tuổi) và tổng số nữ theo tất cả các chiều và Roll Up các con số này để cho ra kết quả tỉ lệ nam : nữ.

Pivot

Pivot là quá trình bạn xoay cái Cube dữ liệu để xem tất cả các mặt các khía cạnh mà nó mô tả. Ví dụ với dữ liệu dân số, bạn sẽ muốn Pivot dữ liệu theo ngày tháng, theo thành phố, theo giới tính...

alt text

Dù không đúng lắm nhưng mình muốn đưa khối Rubik đang quay để mô phỏng quá trình Pivot

Ưu điểm 2

Với các vốn từ ở trên như là các Operation để trích xuất dữ liệu, ta có mô hình để mô tả dữ liệu. Với BigData, giả sử bạn có rất nhiều dữ liệu lưu trữ trên Hadoop và mỗi lần bạn cần query một phần dữ liệu trong đó theo các chiều khác nhau. Nếu dùng Map-Reduce, mỗi lần phân tích bạn sẽ lại phải quét lại dữ liệu từ đầu và việc này khá tốn thời gian nếu dữ liệu lớn. Tuy vậy, nếu bạn biết trước các chiều dữ liệu mà bạn muốn lựa chọn, bạn có thể định nghĩa schema và trích xuất dữ liệu trước rồi lưu vào một hệ thống quản lý dữ liệu hỗ trợ dữ liệu đa chiều. Đối với Kylin, họ chọn HBase để lưu dữ liệu đa chiều này và cung cấp Routing Module để Route query đến HBase hay Hadoop tuỳ theo query và dữ liệu muốn trích xuất.

Nếu bạn thắc mắc cụ thể hơn một chút là làm thể nào để lưu dữ liệu kiểu Cube (nhiều chiều) dùng HBase, có lẽ bạn sẽ muốn tham khảo Star Schema

Kết Luận

Bài viết giới thiệu về OLAP Cube, Middleware hỗ trợ mô hình OLAP Cube Apache Kylin và tóm tắt ưu điểm của OLap Cube. Hy vọng qua bài viết, các bạn hình dung phần nào về thuật ngữ trong Data Warehouse này.

Học và áp dụng vốn từ mới (Slice / Dice / Drill down / Roll up / Pivot) cũng sẽ giúp bạn nhanh chóng mô tả cách phân tích dữ liệu hơn. Nếu bạn là người làm nghề phân tích dữ liệu hãy Slice / Dice / Drill Down / Roll up / Pivot và giúp đồng nghiệp bạn Slice / Dice / Drill Down / Roll up / Pivot nhé.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Bùi Hồng Hà

59 bài viết.
287 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
75 8
Bài viết tổng hợp cơ chế hoạt động của https Chút ít về chữ ký điện tử Chữ ký điện tử là cơ chế bao gồm 3 thuật toán: Thuật toán chọn một khóa...
Bùi Hồng Hà viết 3 năm trước
75 8
White
44 7
Giới thiệu Gần đây thấy bản thân chém gió rất nhiều về MapReduce, Hadoop v.v nhưng chưa thấy có bài viết nào tổng hợp + giải thích cụ thể về MapRe...
Bùi Hồng Hà viết hơn 2 năm trước
44 7
White
35 1
Giới thiệu Google là một công ty dẫn đầu về phần mềm xử lý Big Data. Hầu hết các phần mềm xử lý dữ liệu như Hadoop đều có nguồn gốc ý tưởng từ Goo...
Bùi Hồng Hà viết hơn 2 năm trước
35 1
Bài viết liên quan
White
14 0
Giới thiệu Công ty mình có một vấn đề (BigData) cần giải quyết như sau: "Trong số người dùng đang bình luận vào 1 video (bình luận là thời gian t...
Bùi Hồng Hà viết hơn 2 năm trước
14 0
White
15 0
Lang thang hacker news tìm được một phần nhỏ (Link) của một bác ở Anh tổng hợp về stack mà google đã tạo và sử dụng. Chi tiết về các stack được tổ...
cpplover viết 3 năm trước
15 0
White
35 1
Giới thiệu Google là một công ty dẫn đầu về phần mềm xử lý Big Data. Hầu hết các phần mềm xử lý dữ liệu như Hadoop đều có nguồn gốc ý tưởng từ Goo...
Bùi Hồng Hà viết hơn 2 năm trước
35 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
59 bài viết.
287 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!