BI and GIS
-
Upload
hung-tran-huy -
Category
Documents
-
view
48 -
download
0
Transcript of BI and GIS
1. Thông tin chung1.1. Giới thiệu SpagoBI- Business Interlegence (BI) là 1 tập hợp các công cụ và quy trình cung cấp cái nhìn từ tổng thể đến chi tiết phục
vụ cho quá trình quản lý và ra quyết định của tổ chức kinh tế.- SpagoBI là một hệ thống Open Source cung cấp bộ công cụ phân tích khá mạnh và đầy đủ:
o Báo cáo.o OLAP: Cung cấp cho người dùng cái nhìn nhiều chiều về 1 khối dữ liệu.o KPI models: có thể tạo và quản lý bộ chỉ số KPI, cũng như gửi cảnh báo đến người dùng khi có những
thay đổi ko mong muốno Báo cáo địa lý (GEO/GIS): Cung cấp các số lieu trên nền bản đồ, tạo cài nhìn tổng quan,dễ nắm bắt.o Cockpits(Dashboard): bảng tổng hợp nhiều báo cáo nhỏ.o QbE (Query by example): Cung cấp khả năng tự tạo báo cáo cho người dùngo RealTime Console: Cung cấp các số liệu theo thời gian thựco AdhocReport: Cho phép người dùng import 1 file dữ liệu có cấu trúc (vd xls, csv) vào hệ thống và tự
tạo các báo cáo đồ thị theo giao diện QbE. File dữ liệu được import ko gây ảnh hưởng hay xuất hiện trong dữ liệu của người dùng khác nếu không được người dùng đó chấp nhận chia sẻ.
- Bộ SpagoBI bao gồm:o SpagoBI Server: Thành phần chính cung cấp các tính năng phấn tích và xử lý của hệ thống Spagoo SpagoBI Studio: Bộ công cụ tạo và chỉnh sửa các báo cáo được Spago phát triên trên nền eclip để cung
cấp giao diện cho người phát triển. Tuy nhiên hiện tại khá nhiều chức năng của bộ công cụ này chưa hoàn chỉnh hoặc gặp lỗi.
o SpagoBI Meta: Cung cấp công cụ quản lý Metadata, tương tự như chức năng các chức năng quản lý và tạo Metadata của SpagoBI Studio<Chưa nghiên cứu sâu> .
1.2. Mục đích nghiên cứu:- Nắm được khả năng xử lý của hệ thống SpagoBI- Tích hợp SpagoBI vào hệ thống ERP.ONE như 1 module báo cáo.1.3. Công việc còn tồn đọng:- Tạo dataset nhận dữ liệu từ một service.- Báo cáo GIS cho phép lựa chọn chuyển đổi layer giá trị: Mục đích phục vụ việc zoom trên map từ tổng thế đến
chi tiết:o Hiện tại hệ thống Spago chỉ hỗ trợ hiển thị và tạo 1 layer giá trị, ví dụ doanh số bán hàng theo quốc
gia.- Tạo báo cáo drilldown: các báo cáo dạng biểu đồ, GEO, GIS đều hỗ trợ việc gọi 1 báo cáo nhỏ hơn khi click vào
1 khu vực.2. Cài đặt Spago:
2.1. Cài đặt bộ demo:- Cài đặt jdk phiên bản 1.6 (Hiện tại bản 4.1 vẫn chạy với jdk 1.6 chưa cập nhật lên jdk 1.7)- Download bộ cài đặt all-in-one từ trang: http://forge.ow2.org/project/showfiles.php?group_id=204- Giải nén bộ cài đặt. (VD: D:\SpagoBI-Server)
- Tạo 2 biến môi trường:o JAVA_HOMEo CATALINA_HOME
- Chạy file StartupSpagoBI.bat trong thư mục ..\bin- Vào web theo địa chỉ: http://localhost:8080/SpagoBI (Có phân biệt hoa thường). Phiên bản điện thoại vào
theo đường dẫn: http://<ipserver>:8080/SpagoBIMobileEngine.2.2. Cài đặt với DB oracle:- Download script_db dùng cho oracle trên trang: http://forge.ow2.org/project/showfiles.php?group_id=204- Tạo 1 schema (vd:SpagoBI) và gán quyền dba cho user vừa tạo và chạy 2 script:
o ORA_create o ORA_create_quartz_schema
- Làm tương tự với cài đặt hệ thống demo.- Chỉnh sửa file :
o …\conf\ server.xml:
Bỏ đoạn:
<Resource name="jdbc/spagobi" auth="Container" type="javax.sql.DataSource" driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:file:${catalina.base}/database/spagobi" username="sa" password="" maxActive="20" maxIdle="10" maxWait="-1"/>
<Resource name="jdbc/foodmart" auth="Container" type="javax.sql.DataSource" driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:hsql://localhost:9001/foodmart" username="sa" password="" maxActive="20" maxIdle="10" maxWait="-1" validationQuery="select 1 from INFORMATION_SCHEMA.SYSTEM_USERS"
removeAbandoned="true" removeAbandonedTimeout="3600"/>
<Resource name="jdbc/bam" auth="Container" type="javax.sql.DataSource" driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:file:${catalina.base}/database/bam" username="sa" password="" maxActive="20" maxIdle="10" maxWait="-1"/>
<Resource auth="Container" factory="de.myfoo.commonj.work.FooWorkManagerFactory" maxThreads="5" name="wm/SpagoWorkManager" type="commonj.work.WorkManager"/>
Thay bằng:
<Resource name="jdbc/spagobi" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:orcl" username="spagobi" password="123456" maxActive="20" maxIdle="10" maxWait="-1"/>
URL: đường dẫn đến DB Oracle
USERNAME/PASSWORD: tên user/Password vừa tạo
o …\webapps\SpagoBI\WEB-INF\classes\hibernate.cfg.xml:
Bỏ đoạn
<property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
Thay bằng:
<property name="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</property>
- Chạy file Startup.bat trong thư mục ..\bin- Vào web theo địa chỉ: http://localhost:8080/SpagoBI (Có phân biệt hoa thường). Phiên bản điện thoại vào
theo đường dẫn: http://<ipserver>:8080/SpagoBIMobileEngine.2.3. Upgrade phiên bản:- Download Script và bộ cài đặt của phiên bản mới- Backup database của hệ thống (vd: User SpagoBI)- Rename thư mục SpagoBI hiện tại (vd:SpagoBI-Server SpagoBI-Server_old)- Thực hiện cài đặt như bước 1.2 với hệ thống- Với DB: Chỉ chạy script update (Chọn đúng script update của phiên bản đang sử dụng: vd 4.0 4.1)- Copy toàn bộ nội dung trong thư mục “resources” của hệ thống cũ sang hệ thống mới
2.4. Tạo thêm ngôn ngữ:- Đăng nhập vào hệ thống SpagoBI với tài khoản admin
- Configuration Managerment- Trong mục Select Category chọn “LANGUAGE_SUPPORTED”- Thêm 1 đoạng vào cuối của chuỗi (VD: [vn,VN])
- Chỉnh sửa file: ..\webapps\SpagoBI\themes\sbi_default\css\analiticalmodel\execution\main.css
Bổ sung thêm dòng :
.icon-vn {background-image: url('../../../img/vn_VN.gif') !important;
}
- Thêm biểu tượng cho loại ngôn ngữ vừa thêm vào thư mục: .. \webapps\SpagoBI\themes\sbi_default\img
Tham khảo kích cỡ và định dạng theo những ngôn ngữ có sẵn (VD:en_EN)
- Dịch tất cả các file messeage có trong các thư mục: Tất cả các file .properties có trong thư mục đều phải copy, và sửa tên dưới dạng <Tên ban đầu>_vn_VN.properties
o .. \webapps\SpagoBI\WEB-INF\classes\MessageFiles\
o .. \webapps\SpagoBI\js\src\ext\sbi\locale
o .. \webapps\SpagoBIQbeEngine\js\spagobi\locale\....
o .. \webapps\SpagoBIGeoReportEngine\js\src\ext\sbi\locale
o .. \webapps\SpagoBIConsoleEngine\js\spagobi\locale
- Tham khảo thêm: http://wiki.spagobi.org/xwiki/bin/view/spagobi_server/Internazionalization2.5. Lỗi có thể gặp:- Sau khi cài đặt 1 số chức năng hiển thị ko đầy đủ:
o Bộ script dữ liệu oracle của phiên bản bị thiếu (VD script của bản 4.1)o Chạy bộ script của phiên bản trước + script update trong phiên bản mới.
3. Tạo các thành phần cơ bản3.1. Tạo DataSource:
Mục đích: Tạo 1 kết nối đến db chứa dữ liệu mong muốn:
Thực hiện:
DataSource Add:
Kiểm tra kết nối :
Ok
3.2. Tạo Dataset:
Mục đích: Tạo 1 Bảng chứa dữ liệu phục vụ cho các múc đích phân tích, tính toán: Báo cáo, đồ thị …
Thực hiện:
DataSet Add:
Ở tab “TYPE”: Lựa chọn phương thức truy suất dữ liệu. VD: Query
Với câu Query có biến đầu vào giá trị biến được biểu hiện trong câu query là: $P{<tên parameter>}
Để đảm báo câu Query viết đúng, chọn Tab View để preview dữ liệu
Save dataset
3.3. Tạo điều kiện lọc đầu vào cho báo cáo:- Tạo LOV (List of value) :
Lovs Mangement :
Test :
Save lại.
- Tạo Analytical driver
Analytical driver Mangement :
Thiết lâp cách nhập đầu vào cho list giá trị (LOV) vừa tạo.
Phân quyền cho nhóm user nào được tiếp cận với điều kiện lọc này (Nếu ko được phân quyền, user chỉ có thể xem báo cáo với dk mặc định, ko có tùy chọn lọc điều kiện)
Save lại
- Tạo điều kiện cho báo cáo:
Trong Document details của báo cáo:
Chọn “New” để tạo 1 biến đầu vào cho báo cáo:
Ví dụ Báo cáo có 2 biên đầu vào là “Năm so sánh” và “Năm gốc”
Title: Tên gợi ý cho điều kiện
Analytical driver: Bấm biểu tượng kính lúp và chọn driver tương ứng.
Url Name: Phải đặt trùng tên với với tên Parameter ở Dataset
Save lại:
Chọn “New” để thêm tiếp các giá trị tiếp theo.
3.4. Tạo folder phân loại báo cáo
Functionalities management
Muốn thêm thư mục con cho folder nào thì chọn trực tiếp vào folder đó và chọn insert
Đặt tên và phân quyền cho từng group users:
3.5. Tạo cây menu
Menu configurationQuá trình tạo menu tượng tự quá trình tạo folder
4. Tạo các báo cáo trên SpagoBI4.1. Tạo báo cáo GIS
4.1.1. Tạo file map GEOJSON- Lấy tọa độ các vùng để tạo bản đồ bằng 2 cách:
o Tạo trực tiếp 1 file .json bằng trang web: http://geojson.ioo Tạo file .json bằng chương trình QGIS:
Download bộ tọa độ từ trang web http://gadm.org/country : Tùy theo quốc gia mà trang web này cung cấp chi tiết tọa độ theo: Quốc gia, Bang (vùng), Tỉnh- TP, Quận – Huyện
Mở chương trình QGIS Layer Add Vector Layer chọn đến file .shp vừa download. Trong khung layer chuột phải vào layer cần thiết save as
Ok
- Sau khi đã có file tọa độ dưới dạng Json bắt đầu tiến hành copy-paste dữ liệu về dạng như sau:
{"type":"FeatureCollection","features":[
{"type":"Feature","geometry":{
"type":"MultiPolygon","coordinates":[Tọa độ vùng 1]},"geometry_name":"the_geom","properties":{các thuộc tính của vùng 1}
},{
"type":"Feature","geometry":{
"type":"MultiPolygon","coordinates":[Tọa độ vùng 2]},"geometry_name":"the_geom","properties":{các thuộc tính của vùng 2}
},...……{
"type":"Feature","geometry":{
"type":"MultiPolygon","coordinates":[Tọa độ vùng n]},"geometry_name":"the_geom","properties":{các thuộc tính của vùng n}
}
],"crs":{"type":"EPSG","properties":{"code":"4326"}}
}
4.1.2. Tạo file template- File template có dạng:
{mapName: "Map of USA",
analysisType: "choropleth",analysisConf:{
type: "choropleth", indicator: "unit_sales", method: "CLASSIFY_BY_QUANTILS" // "CLASSIFY_BY_EQUAL_INTERVALS", classes: 3
, fromColor: "#C0C0C0", toColor: "#333399"
},
feautreInfo: [["State Name","STATE_NAME"], ["Extension (KM)","LAND_KM"], ["Population", "PERSONS"]],indicators: [["unit_sales", "Unit sales"],["store_sales", "Sales"], ["store_cost", "Cost"]],
businessId: "sales_state", //it links to alphanumeric data into spagobi datasetgeoId: "STATE_ABBR", //it links to geometires
targetLayerConf:{
text: 'States', name: 'usa_states'//, url: 'http://localhost:8080/geoserver/wfs', data: 'usa_states.json'
},
inlineDocumentConf:{
label: 'DIALCHART_simpledial', staticParams:{
param1: 'andrea'}, dynamicParams:{
state: 'STATE_NAME'}, displayToolbar: 'false', displaySliders: 'false'
},
detailDocumentConf:{
label: 'DepartmentList', staticParams:{
departmentId: '3'}, dynamicParams:{
state: 'STATE_NAME'}, displayToolbar: 'false', displaySliders: 'false'
} ,
lon: -96.800,lat: 40.800,zoomLevel: 4
}- Trong đó:
o mapName: Tên đặt cho bản đồo analysisType: Quy định kiểu hiển thị của bản đồ:
choropleth: Hiển thị theo vùng proportionalSymbols: Hiển thị theo điểm
o feautreInfo: Quy định thuộc tính nào sẽ được hiển thị trên cửa sổ popup khi click vào 1 khu vực trên bản đồ. Cấu trúc: [“<Tên hiển thị>”:”<Tên đặt trong file bản đồ>”]
o indicators: Quy định các cột nào trong dataset sẽ được sử dụng để làm các chỉ số tính toán hiển thị trên bản đồ. Cấu trúc : [“Tên cột trong dataset>”:“<Tên hiển thị>”]
o businessId: Tên cột key trong dataset để map với key trong thộc tính của file bản đồo geoId: Tên thộc tính key trong file bản đồ dùng để map với dataseto targetLayerConf: Chứa các thông tin liên quan đến file Map, trong đó:
text, name: có thể đặt tùy chọn. url, data: Sử dụng 1 trong 2 thuộc tính này, ko sử dụng cả 2 cùng lúc. url: Sử dụng trong
trường hợp các file map được lưu trên 1 GISServer. Với file map được tao như trên, ta sử dụng thộc tính data.
o inlineDocumentConf: Hiển thị 1 biểu đồ dữ liệu (được tạo như 1 báo cáo dạng biểu đồ) trong cửa sổ popup:
label: Tên biểu đồ được lưu trong cùng folder với báo cáo map trên spagobi server staticParams, dynamicParams: Dùng để truyền các param cho biểu đồ
o detailDocumentConf: Hiển thị 1 bao cáo dạng bảng trong 1 tab mới khi chọn xem chi tiết 1 vùng trên bản đồ. Thiết lập tương tự inlineDocumentConf.
o Lon, Lat, zoomlevel: Quy định 1 điểm làm trung tâm bản đồ khi bắt đầu hiển thị. (Kinh độ, vĩ đô, mức độ zoom)
Copy file map và file template vào thư mục cái đặt server spagobi theo đường dẫn: ..\resources\georeport\
Tạo 1 báo cáo tương tự như các báo cáo khác sử dụng file template
4.2. Tạo connection đến database:
4.3. Tạo kết nối đến server SpagoBI:
Trong Resources Servers New Server:
Nếu có nhiều server, trạng thái Acitve sẽ được sử dụng để xác định server nào đang được kết nối đến.
4.4. Up/Down 1 báo cáo:- Download
Trong khung SpagoProject, chuột phải vào Business Analysis Download
Chọn báo cáo muốn load về:
- Upload
Chuột phải vào 1 báo cáo muốn upload và chọn Deploy và thiết lập các tham số cần thiết cho báo cáo đó.
Lưu ý: Vói các báo cáo có tham số đầu vào, việc thiết lập các tham số này được thiết lập trên chương trình, không tạo được trong tool.
4.5. Tạo báo cáo Olap
VD: Tạo olap phân loại tổng giá trị bán hàng theo: Kênh bán hàng(channels) và khu vực khách hàng(Location)
Các bảng liên quan:
Sales: Phiếu bán hàng
Cusloc: Lưu dữ liệu về khách hàng
Channels: Danh mục kênh bán hàng
Chọn database chứa dữ liệu:
Chọn bảng cần thiết
Kéo thả các bảng từ lớp physical sang lớp Business và chọn các trường cần thiết sử dụng:
Trong 3 bảng này, dữ liệu cần sử dụng để phân tích là cột AMOUNT_SOLD ở bảng SALES
Chuột phải chọn bảng SALES thành dạng CUBE
Chuột phải chọn trường AMOUNT_SOLD về dạng Mesuare
Trong properties chỉnh phương thức tính toán (Aggregation Type) của trường này về dạng mong muốn (Trong ví du là SUM)
Dữ liệu dùng để tạo các chiều cho CUBE nằm ở 2 bảng CHANNEL và CUSLOC
Chuột phải chọn và đưa 2 bảng về dạng Dimension
Tạo liên kết dữ liệu giữa CUBE và Dimension:
Lưu ý: Để tạo dc báo cáo OLAP, bắt buộc CUBE phải có ít nhất 1 “outbound relationship”
Chọn các key để liên kết, mối quan hệ và Add RelationShip:
Tạo Hierarchy với các Dimension:
Lưu ý: 1 Báo cáo OLAP phải có ít nhất 1 Hierarchy
Sau khi tao xong Hierarchy cần thiết, chuột phải vào model và chọn Create Mondiran Template.
Up báo cáo lên server.
4.6. Tạo báo cáo GEO:
Bài toán: Tạo bản đồ phân bố khách hàng theo vùng của Việt Nam:
4.6.1. Dùng InkScape: Tạo file SVG map.- Tìm một hình ảnh bản đồ Việt Nam xử lý các vùng cần chia theo màu sắc khác nhau:
- Mở InkScape:o File Import Chọn đến file ảnh đã tạo Embed Oko File Document Properties Custom Size Resize page to drawing or selection.o Layer Rename Layer <nhập tên layer> VD: BackGroundo Layer Add Layer <nhập tên layer> VD: Region
o Sử dụng công cụ Fill Bounded Areas để chọn nhanh khu vực.
o Sau đó mở cửa sổ XML Editor (Edit XML Editor…), với mỗi khu vực được tạo bới công cụ Fill Bounded Areas sẽ có 1 dòng hiện được thêm vào như hình
o Ở mục ID sửa tên lại theo mã vùng cần hiển thị. (VD: DBSH)
o Chọn và sửa ID tương tự với các vùng khác và 2 id của layer:
o File Saveo Mở file vừa Save bằng Notepad ++ , tìm các tag “Type” có dạng : [style="fill:#ffbfbf;fill-opacity:1;fill-
rule:evenodd;stroke:none”] và sửa lại thành: [style = “ fill:#ffbfbf” fill-opacity = “1” fill-rule = “evenodd” stroke = “none”]
o Save lại theo định dạng “Plain SVG”
o Mở File .SVG vừa tạo bằng notepad++, bổ sung thêm dòng: “viewBox = “0 0 x y” với x, y tương ứng là width và height.
4.6.2. Tạo Map và Data set trên SpagoBI: - Tạo 1 dataset có kết quả trả về như hình:
- Resource Maps Add: Thêm file map vừa tạo vào hệ thống:
4.6.3. Tạo Template cho báo cáo bằng SpagoBI Studio:
- Tạo 1 kết nối đến SpagoBI server (Resources Server New Server)- Business Analysis Location Interligionce GEO <Tên bản đồ muốn tạo>
- GEO designer:o Dataset <Chọn Dataset vừa tạo>o Map <Chọn Map vừa tạo> <Chọn các layer mong muốn sử dụng VD: Region>
- Hierachies: 1 list danh sách các cột trong dataset tương ứng với các layer trong file mapo VD: file map vừa tạo có 1 layer Region Tương ứng trong dataset có 1 cột chứa các giá trị tương ứng
với danh sách id đã tạo trên layer Region
o Chuột phải New Hierachies o Chuột phải New Level:
- CrossNavigation: o Tạo kết nối đến 1 báo cáo khác <tạm thời bỏ trống>
- GUI Windows: Thiết lập các tham số cho các khung chi tiết hiển thị kèm với bản đồ o Tạm thời để mặc định
- GUI params: Thiết lập các tham số bán đầu cho bản đồo Tạm thời để mặc định
- GUI layber:- Save file và mở lại bằng Text Editor:
o Trong tag “<DATAMART_PROVIDER>” bổ sung tag “<METADATA>” : Tag này định nghĩa cột nào trong dataset sẽ là cột chỉ mục và cột nào là cột sẽ được tính toán và phương thức tính toán (agg_func: max, min, sum, count …..):
o Trong tag “<MAPRENDER”>”Bổ sung tag “<MEASURES>”: Tag này định nghĩ các chỉ số sẽ được hiển thị trong phân tích:
Column_id : tên cột chứa giá trị Description: Mô tả (sẽ hiện thị trên giao diện lựa chọn của người dùng) Agg_func: Colour: màu sắc được dùng thể hiện Tag “<TRESHOLDS>” có thể có các giá trị:
Type = Static Chia các giá trị theo các khoảng định sẵn
Type = quantile Chia các giá trị theo các khoảng với giới hạn là 1 giá trị trong kết quả. Số lượng khoảng được quy định bằng tham sô “value”.
Type = perc Chia các giá trị theo tỉ lệ %
Type = uniform chia các giá trị theo 1 số khoảng bằng nhau
Tag “<COLOURS>” quy định màu sắc cho các khoảng dữ liệu: Type = Static Quy định sẵn các màu sắc
Type = grad Màu sẽ được tự động thay đổi đậm dần theo màu cơ sở:
Sau khi thiết lập hết các tham số, tag “<MESUARE>” như sau:
- Save lại file GEO vừa tạo- Up báo cáo lên server