Giới thiệu về kiểu báo cáo OLAP

OLAP là gì?

- OLAP được viết tắt bởi Online Analytical Processing.
- OLAP là một công nghệ được dùng để sắp xếp cơ sở dữ liệu công việc lớn và hỗ trợ nghiệp vụ thông minh.
- Cơ sở dữ liệu OLAP được chia thành một hoặc nhiều khối và mỗi khối được tổ chức và được thiết kế khối người quản trị cho phù hợp với cách bạn truy xuất và phân tích dữ liệu sao cho nó dễ dàng hơn để tạo.
- Cung cấp cho người dùng 1 cái nhìn trực quan về dữ liệu qua đó đem ra những so sánh ,hướng giải quyết tốt cho vấn đề cần nhận định.
- Báo cáo olap cũng có thể được áp dụng để đưa ra trang dashboard.

Minh họa

Code file minh họa

rpt_login.dic

code file rpt_login.dic

View==/olap/olap.jsp
Logic
    FirstFocus==LOG_DATE
Field
    DateRange==LOG_DATE
        Value==l7d
        TimePicker==true
        Format==dd/MM/yyyy HH:mm:ss
        Trim
        LiveValidation
            Presence
    Submit==GEN_HTML
Layout==Simple
    Panel
        Layout==Simple
            Control==LOG_DATE
            Control==GEN_HTML
Query
    TableName==adm_module_log aml, adm_module am, adm_module amp, adm_user au
    Dimension
        LOG_DATE==trunc(aml.LOG_DATE)
            Format==dd/MM/yyyy
        PARENT_MODULE_NAME==amp.DESCRIPTION
        USER_NAME==au.USER_NAME
        ACTION_TYPE==aml.ACTION_TYPE
            MappedValue==ACTION_TYPE_TABLE
    Measure
        CNT==1
            AggregateFunction==SUM
    Condition==aml.module_id=am.module_id and aml.user_id=au.user_id and am.parent_id=amp.module_id
        aml.LOG_DATE==LOG_DATE_FROM
            Format==aml.LOG_DATE >= TO_DATE(?,'DD/MM/YYYY HH24:MI:SS')
        aml.LOG_DATE==LOG_DATE_TO
            Format==aml.LOG_DATE <= TO_DATE(?,'DD/MM/YYYY HH24:MI:SS')
    PostStatement==ORDER BY 1,5 desc
ReportOptions=:
:{
    breakIndex:2
:}

rpt_loginVN.dic

Code file rpt_loginVN.dic

#reference /resource/com/ftl/wak/LiveValidationVN.dic
#reference /resource/com/ftl/wak/CommonVN.dic
Title==Báo cáo thống kê lưu lượng truy cập
Caption==BÁO CÁO THỐNG KÊ LƯU LƯỢNG TRUY CẬP
LOG_DATE==Ngày truy cập
    Total==Tổng ngày
PARENT_MODULE_NAME==Nhóm chức năng
    Total==Tổng nhóm chức năng
MODULE_NAME==Chức năng
    Total==Tổng chức năng
USER_NAME==Người truy cập
    Total==Tổng người truy cập
ACTION_TYPE==Tác động
    Total==Tổng tác động
ACTION_TYPE_TABLE
    S==Xem
    I==Thêm
    U==Sửa
    D==Xóa
    E==Thực hiện
CNT==Số lần
Excel
    Header=:
    :{
        <tr>
            <td colspan="3">Chúc các bạn một ngày tốt lành</td>
        </tr>
        <tr></tr><tr></tr>
    :}
    Footer=:
    :{
        <tr></tr><tr></tr>
        <tr>
            <td colspan="3"></td><td colspan="3">Hà nội ngày tháng năm</td>
        </tr>
    :}

Hình ảnh minh họa

Giao diện list báo cáo.

anh%201.png

Biểu đồ hình tròn

bieu%20do%20hinh%20tron.png

Biểu đồ đường

bieu%20do%20hinh%20doc.png

Biểu đồ hình cột dọc

hinh%20cot%20nam%20doc.png

Biểu đồ hình cột nằm ngang

hinh%20cot%20nam%20ngang.png

Biểu đồ vùng

bieu%20do%20vung.png

Quy trình làm 1 báo cáo OLAP.

Viết câu lệnh sql.

- Mọi báo cáo đều phải bắt đầu từ việc viết câu lệnh SQL.Như ở báo cáo này thì câu lệnh SQL sau sẽ được sử dụng:

SELECT TRUNC(aml.LOG_DATE),
  amp.DESCRIPTION,
  au.USER_NAME,
  aml.ACTION_TYPE,
  1,
  grouping(TRUNC(aml.LOG_DATE)),
  grouping(amp.DESCRIPTION),
  grouping(au.USER_NAME),
  grouping(aml.ACTION_TYPE)
FROM adm_module_log aml,
  adm_module am,
  adm_module amp,
  adm_user au
WHERE aml.module_id=am.module_id
AND aml.user_id    =au.user_id
AND am.parent_id   =amp.module_id
GROUP BY cube(TRUNC(aml.LOG_DATE),amp.DESCRIPTION,au.USER_NAME,aml.ACTION_TYPE)
ORDER BY 1,5 DESC

Áp dụng theo báo cáo OLAP

Include OLAP

  • Sử dụng :
View==/olap/olap.jsp

chèn vào vị trí đầu trang.
  • Các thư mục chứa code OLAP gồm có

- Thư mục : web/olap
- Class OlapHelper.java thuộc package com.ftl.wak.mgr trong gói flt_wak_1.0.

Khai báo các Dimension

  • Dimension được hiểu là chiều dữ liệu,thay thế khai báo các cột được group by trong FieldList.Đây cũng chính là các trường dữ liệu được bạn SELECT ra trong câu lệnh SQL.

SQL

SELECT TRUNC(aml.LOG_DATE),
  amp.DESCRIPTION,
  au.USER_NAME,
  aml.ACTION_TYPE,

Khai báo Dimension trong báo cáo OLAP
    Dimension
        LOG_DATE==trunc(aml.LOG_DATE)
            Format==dd/MM/yyyy
        PARENT_MODULE_NAME==amp.DESCRIPTION
        USER_NAME==au.USER_NAME
        ACTION_TYPE==aml.ACTION_TYPE
            MappedValue==ACTION_TYPE_TABLE

Sử dụng drill-down

        USER_NAME
            Level
                USER_NAME==au.USER_NAME
                ACTION_TYPE==aml.ACTION_TYPE
                    MappedValue==ACTION_TYPE_TABLE

Bạn cũng có thể sử dụng node Level để biến giao diện theo kiểu drill-down

Khai báo Measure

  • Measure là giá trị đo lường,thường là giá trị số,là kết quả group by theo dimension được khai báo bên trên.
  • Ở báo cáo này thì giá trị đo lường được tính là tổng số lần với việc sử dụng hàm SUM:
    Measure
        CNT==1
            AggregateFunction==SUM

Ngoài SUM ra ta cũng có thể dùng 1 trong số các hàm sau đây
  • COUNT : Đếm
  • MIN : Lấy ra giá trị nhỏ nhất
  • MAX : Lấy ra giá trị lớn nhất
  • DISTINCTCOUNT : Đếm không lặp lại các giá trị con

-Ngoài các hàm trên,ta còn có thể xem chi tiết hơn về Mearsure tại đây

Group by cube

-Với những báo cáo thông thường,việc viết group by cube phải viết 1 cách tường minh :

PostStatement==GROUP BY cube(TRUNC(aml.LOG_DATE),amp.DESCRIPTION,au.USER_NAME,aml.ACTION_TYPE) ORDER BY 1,5 DESC

thì đối với OLAP thì ta không cần,chỉ cần khai báo như sau:
PostStatement==ORDER BY 1,5 DESC

Node ChartScript

  • Ví dụ :
ChartScript=:
:{
    if(chartOptions.xAxis == null)
        chartOptions.xAxis = {};
    chartOptions.xAxis.reversed = true;
:}

Trong đó
  • chartOptions.xAxis.reversed = true; được định nghĩa để order lại ngay tháng theo thứ tự ngược lại.

Node ChartOptions

  • Ví dụ:
ChartOptions=:
:{
    yAxis: {
        labels: {//chinh sua unit cho bao cáo olap
            formatter: function() {
                return 'Bps';
            }
        },
    },
    plotOptions:{
        series:{   //dừng tính năng ấn vào số liệu trên báo cáo
            point:{
                events:{
                    click:function(){
                        preventDefault();
                    }
                }
            }
        }
    }
:}

Trong đó
  • labels: Chỉnh sửa unit cho báo cáo OLAP
  • series: Dừng tính năng ấn vào số liệu trên báo cáo

Node ReportOptions

  • Là tùy chọn do WAK bổ sung,khai báo layout,format mặc định khi hiển thị biểu đồ.
  • Ví dụ
ReportOptions=:
:{
    render:"lineChart", 
    pieSerieIndex: 0,   
    breakIndex:1        
:}

Trong đó:
  • render: Mặc định biểu đồ ở dạng nào
  • pieSerieIndex :mặc định mearsure nào (index)
  • breakIndex :mặc định break nào (index)

Ngoài các node trên, có thể tham khảo các cấu trúc khác ở đây

Comment

Thêm bình luận mới