多維資料分析引擎Saiku的安裝使用

llnnmc發表於2018-10-27

一、Saiku的下載安裝和啟動

下載地址:

下載後解壓,即完成安裝。

修改環境變數為安裝目錄下的tomcat目錄:
CATALINA_HOME = D:\yizit\software\saiku-server\tomcat

執行start-saiku.bat啟動saiku,啟動後命令列視窗不能關閉。命令視窗中文亂碼情況,需要修改start-saiku.bat檔案,將UTF-8更改為GBK。

在瀏覽器位址列輸入,出現以下要求上傳License的頁面

License獲取網址:

先點選sign up進行使用者註冊,註冊後收到確認郵件,在郵件裡點選進入License獲取頁面

先建立公司,再建立License,將生成的License儲存到本地檔案。

在上傳License頁面將License檔案上傳,需要帳戶admin,admin。

前往localhost:8080,輸入admin,admin,即可進入Saiku系統。

二、使用示例

將需要的資料庫驅動jar包複製到D:\yizit\software\saiku-server\tomcat\webapps\saiku\WEB-INF\lib目錄下,這裡連線的是Oracle資料庫。

一個最為簡單的例子是直接使用Oracle資料庫裡自帶的SCOTT使用者,對員工表EMP和部門表DEPT構建模型,模式檔案如下:
<Schema name="scott">
  <Cube name="Cube_scott" visible="true" cache="true" enabled="true">
    <Table name="EMP" schema="SCOTT">
    </Table>
    <Dimension type="StandardDimension" visible="true" foreignKey="DEPTNO" highCardinality="false" name="Dim_dept" caption="&#37096;&#38376;&#32500;&#24230;">
      <Hierarchy visible="true" hasAll="true" primaryKey="DEPTNO">
        <Table name="DEPT" schema="SCOTT">
        </Table>
        <Level name="Level_deptno" visible="true" table="DEPT" column="DEPTNO" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never" caption="&#37096;&#38376;&#32534;&#21495;">
        </Level>
        <Level name="Level_deptname" visible="true" column="DNAME" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never" caption="&#37096;&#38376;&#21517;&#31216;">
        </Level>
        <Level name="Level_loc" visible="true" column="LOC" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never" caption="&#25152;&#22312;&#22320;&#21306;">
        </Level>
      </Hierarchy>
    </Dimension>
    <Measure name="SalAmount" column="SAL" aggregator="sum" caption="&#24037;&#36164;&#24635;&#39069;" visible="true">
    </Measure>
    <Measure name="EmpQuantity" column="EMPNO" aggregator="count" caption="&#21592;&#24037;&#25968;&#37327;" visible="true">
    </Measure>
  </Cube>
</Schema>

在Saiku中查詢展示結果


下面再搭建一個典型的測試用例:

1、資料庫表準備

建立表空間
create tablespace sales_tbs datafile 'd:\oradata\mes\sales_tbs01.dbf' size 100m;

建立使用者並授權
create user sales identified by sales default tablespace sales_tbs;
grant connect, resource to sales;
alter user sales quota unlimited on sales_tbs;

建立表,插入測試資料

/**產品類別表*/
create table protype(protype_id number, protype_name varchar(32));
alter table protype add constraint pk_protype primary key(protype_id);
insert into protype values(1, '硬體');
insert into protype values(2, '軟體');
insert into protype values(3, '服務');
commit;

/**產品表*/
create table product(pro_id number, protype_id number, pro_name varchar(32));
alter table product add constraint pk_product primary key(pro_id);
insert into product values(101, 1, '工控機');
insert into product values(102, 1, '條碼印表機');
insert into product values(103, 1, '顯示器');
insert into product values(201, 2, 'MES');
insert into product values(202, 2, 'LES');
insert into product values(203, 2, 'GoodMES');
insert into product values(204, 2, 'VEDI');
insert into product values(205, 2, 'Flexsite');
insert into product values(301, 3, '電話遠端服務');
insert into product values(302, 3, '現場服務');
commit;

/**使用者表*/
create table customer(cus_id number, cust_name varchar2(50), gender char(1));
alter table customer add constraint pk_customer primary key(cus_id);
insert into customer values(1001, '王某某', '1');
insert into customer values(1002, '張某某', '0');
insert into customer values(1003, '李某某', '1');
insert into customer values(1004, '趙某某', '1');
commit;

/**銷售表*/
create table sale(sale_id number, pro_id number, cus_id number, unit_price number, quantity number);
alter table sale add constraint pk_sale primary key(sale_id);
insert into sale values(1, 101, 1001, 5000, 10);
insert into sale values(2, 202, 1003, 80000, 3);
insert into sale values(3, 204, 1003, 45000, 3);
insert into sale values(4, 102, 1004, 8000, 5);
insert into sale values(5, 201, 1001, 120000, 2);
insert into sale values(6, 205, 1001, 7000, 4);
insert into sale values(7, 301, 1002, 30000, 1);
insert into sale values(8, 302, 1002, 2000, 10);
insert into sale values(9, 101, 1004, 5000, 2);
insert into sale values(10, 103, 1004, 2000, 2);
insert into sale values(11, 201, 1002, 2000, 1);
commit;

2、在Schema Workbench中構建多維資料的立方體模型

模式檔案如下(Schema Workbench的使用可參考另一篇文章):
<Schema name="sales">
  <Cube name="Cube_sales" visible="true" cache="true" enabled="true">
    <Table name="SALE" schema="SALES">
    </Table>
    <Dimension type="StandardDimension" visible="true" foreignKey="CUS_ID" highCardinality="false" name="Dim_Cust" caption="&#23458;&#25143;&#32500;&#24230;">
      <Hierarchy visible="true" hasAll="true" allMemberName="AllCustomer" allMemberCaption="&#25152;&#26377;&#23458;&#25143;" primaryKey="CUS_ID">
        <Table name="CUSTOMER" schema="SALES">
        </Table>
        <Level name="Level_Gender" visible="true" column="GENDER" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never" caption="&#23458;&#25143;&#24615;&#21035;">
        </Level>
        <Level name="Level_Name" visible="true" column="CUST_NAME" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never" caption="&#23458;&#25143;&#22995;&#21517;">
        </Level>
      </Hierarchy>
    </Dimension>
    <Dimension type="StandardDimension" visible="true" foreignKey="PRO_ID" highCardinality="false" name="Dim_Product" caption="&#20135;&#21697;&#32500;&#24230;">
      <Hierarchy visible="true" hasAll="true" allMemberName="AllProduct" allMemberCaption="&#25152;&#26377;&#20135;&#21697;" primaryKey="PRO_ID" primaryKeyTable="PRODUCT">
        <Join leftKey="PROTYPE_ID" rightKey="PROTYPE_ID">
          <Table name="PRODUCT" schema="SALES">
          </Table>
          <Table name="PROTYPE" schema="SALES">
          </Table>
        </Join>
        <Level name="Level_ProductName" visible="true" table="PRODUCT" column="PRO_ID" nameColumn="PRO_NAME" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never" caption="&#20135;&#21697;&#21517;&#31216;">
        </Level>
        <Level name="Level_ProductType" visible="true" table="PROTYPE" column="PROTYPE_ID" nameColumn="PROTYPE_NAME" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never" caption="&#20135;&#21697;&#31867;&#21035;">
        </Level>
      </Hierarchy>
    </Dimension>
    <Measure name="SaleQuantity" column="QUANTITY" datatype="Numeric" aggregator="sum" caption="&#38144;&#21806;&#25968;&#37327;" visible="true">
    </Measure>
    <Measure name="SaleAmount" datatype="Numeric" aggregator="sum" caption="&#38144;&#21806;&#24635;&#39069;" visible="true">
      <MeasureExpression>
        <SQL dialect="generic">
          <![CDATA[(UNIT_PRICE*QUANTITY)]]>
        </SQL>
      </MeasureExpression>
    </Measure>
    <CalculatedMember name="AvgPrice" formatString="&#65509;#,##0.00" caption="&#24179;&#22343;&#21333;&#20215;" formula="[Measures].SaleAmount/[Measures].SaleQuantity" dimension="Measures" visible="true">
    </CalculatedMember>
  </Cube>
</Schema>

3、Saiku中新增模式和資料來源

進入管理控制檯


新增模式檔案,注意模式名最好和Schema檔案中的Schema name一致,上傳成功後應提示Upload Successsful!

新增資料來源

4、新增完成後登出並重新登陸,如果配置和資料庫連線無誤,在多維資料列表裡就可以看到新增的新模型

選取指標和維度,可以看到資料分析結果

直方圖展示

曲線圖展示

熱點圖展示


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28974745/viewspace-2217773/,如需轉載,請註明出處,否則將追究法律責任。

相關文章