My Post (1)

Business Intelligence (BI) trên nền tảng GCP (Phần 7): Xây dựng report nâng cao với BigQuery & Data Studio

  • Phần 1: BI là gì?
  • Phần 2: Tiêu chí để lựa chọn BI & Cloud BI
  • Phần 3: Google Cloud BI Solution
  • Phần 4: BigQuery – Data Warehouse
  • Phần 5: Google Data Studio – BI Real-time Report Tool
  • Phần 6: Xây dựng report cơ bản với BigQuery & Data Studio
  • Ở bài viết trước chúng ta đã xây dựng được một mô hình BI cơ bản với BigQuery và Data Studio theo kiến trúc như sau:

    Mô hình BI cơ bản với BigQuery & Data Studio

    Hệ thống report có 2 người sử dụng chính là Report Viewer – chỉ có quyền xem report, và Report Editor – có quyền chỉnh sửa report.

    Mô hình này có một hạn chế lớn: Report Viewer có thể xem toàn bộ report với đầy đủ thông tin – chưa có phân quyền dữ liệu theo viewer. Thực tế chúng ta cần phân quyền dữ liệu theo phòng ban, theo cấp bậc. Mỗi phòng ban chỉ được xem dữ liệu thuộc về phòng ban đó, quản lý cấp cao có thể xem dữ liệu tổng hợp của tất cả phòng ban mà mình quản lý. Về cơ bản là như thế. Bên cạnh đó, Report Viewer chỉ nên tương tác với Data Studio, hạn chế tối đa quyền trên BigQuery.

    Vậy chúng ta phải làm sao để giải quyết bài toán này?

    Hãy cùng xem mô hình nâng cấp như sau:

    Mô hình BI nâng cao với BigQuery & Data Studio

    Sự khác biệt đến từ cách thức chúng ta tổ chức dataset: thay vì chỉ một dataset lưu trữ toàn bộ dữ liệu, chúng ta sử dụng 4 dataset với các vai trò khác nhau:
    – *_raw: lưu trữ toàn bộ dữ liệu gốc
    – *_resource: chỉ lưu trữ dữ liệu cần thiết sử dụng cho report (đã được xử lý, phân tích)
    – *_permission: lưu trữ cơ chế phân quyền dữ liệu
    – *_gate: cổng giao tiếp với BI report tool

    Các bạn có thể thấy rất rõ ràng là connector của Data Studio chỉ giao tiếp với dataset cz_report_gate. Cùng xem trong cz_report_gate có những gì?

    Dataset cz_report_gate

    Chỉ có view và hoàn toàn không có table! Những view này được tạo thành từ các table trong 2 dataset cz_report_resourcecz_report_perrmission:

    Dataset cz_report_permission & cz_report_resource

    Hãy cùng xem kỹ hơn cách tạo view cz_report_gate.v_FACT_FULL_TRANS cũng như bảng cz_report_permission.PERMISSION:

    Query dùng cho viewcz_report_gate.v_FACT_FULL_TRANS
    Table cz_report_permission.PERMISSION

    Key word trong giải pháp này đó là sử dụng function SESSSION_USER() để lấy được email của account đang truy cập vào dataset cz_report_gate. Trong ví dụ này mình chỉ cấp quyền truy cập dữ liệu cho 2 user thông qua bảngcz_report_permission.PERMISSION: một user được phép truy cập đến 4 region trong khi user còn lại chỉ được truy cập 1 region. Và dĩ nhiên 2 user này chỉ có quyền read tối thiểu trên dataset cz_report_gate.

    Tới đây chúng ta lại phát sinh một vấn đề lớn: đó là làm thế nào để 2 user này thông qua viewcz_report_gate.v_FACT_FULL_TRANS có thể đọc dữ liệu của 2 table cz_report_permission.PERMISSIONcz_report_resource.FACT_FULL_TRANS mà không được phép truy cập 2 dataset chứa 2 table này?

    Giải pháp đó là sử dụng authorized views, và chúng ta có một hô hình đầy đủ như sau:

    Mô hình BI đầy đủ với BigQuery & Data Studio

    Các bạn lưu ý khi tạo connector giữa BigQuery & Data Studio chúng ta cần chọn chế độ Viewer’s Credentials.

    Cấu hình Data Studio connector

    Kết quả chúng ta có được cùng một report nhưng view của user khác nhau theo cấu hình phân quyền:

    View của user A – xem được toàn bộ region
    View của user A – chỉ xem được một region

    Các bạn hãy thử làm lại demo như mình vừa hướng dẫn để hiểu kĩ hơn về mô hình này nhé.

    Hẹn gặp lại các bạn trong bài viết tiếp theo!

    Tags: No tags

    Comments are closed.