天天看點

Apache Kylin權威指南2.1 核心概念

第2章

快?速?入?門

第1章介紹了kylin的概況,以及與其他sql on hadoop技術的比較,相信讀者對kylin已經有了一個整體的認識。本章将詳細介紹kylin的一些核心概念,然後帶領讀者逐漸定義資料模型,建立cube,并通過sql來查詢cube,以幫助讀者對kylin有更為直覺的了解。

<b></b>

<b>2.1 核心概念</b>

在開始使用kylin之前,我們有必要先了解一下kylin裡的各種概念和術語,為後續章節的學習奠定基礎。

2.1.1 資料倉庫、olap與bi

資料倉庫(data warehouse)是一種資訊系統的資料儲存理論,此理論強調的是利用某些特殊的資料儲存方式,讓所包含的資料特别有利于分析和處理,進而産生有價值的資訊,并可依此做出決策。

利用資料倉庫的方式存放的資料,具有一旦存入,便不會随時間發生變動的特性,此外,存入的資料必定包含時間屬性,通常一個資料倉庫中會含有大量的曆史性資料,并且它可利用特定的分析方式,從其中發掘出特定的資訊。

olap(online analytical process),聯機分析處理,以多元度的方式分析資料,而且能夠彈性地提供上卷(roll-up)、下鑽(drill-down)和透視分析(pivot)等操作,它是呈現內建性決策資訊的方法,多用于決策支援系統、商務智能或資料倉庫。其主要的功能在于友善大規模資料分析及統計計算,可對決策提供參考和支援。與之相差別的是聯機交易處理(oltp),聯機交易處理,更側重于基本的、日常的事務處理,包括資料的增删改查。

olap需要以大量曆史資料為基礎,再配合上時間點的差異,對多元度及彙整型的資訊進行複雜的分析。

olap需要使用者有主觀的資訊需求定義,是以系統效率較佳。

olap的概念,在實際應用中存在廣義和狹義兩種不同的了解方式。廣義上的了解與字面上的意思相同,泛指一切不會對資料進行更新的分析處理。但更多的情況下olap被了解為其狹義上的含義,即與多元分析相關,基于立方體(cube)計算而進行的分析。

bi(business intelligence),即商務智能,指用現代資料倉庫技術、線上分析技術、資料挖掘和資料展現技術進行資料分析以實作商業價值。

今天,許多企業已經建立了自己的資料倉庫,用于存放和管理不斷增長的資料;這些資料中蘊含着豐富的價值,但隻有通過使用一系列的分析工具,進行大量的篩選、計算和展示,資料中蘊含的規律和潛在的資訊才能被人們所發現;分析人員可結合這些資訊展開商業決策和市場活動,進而為使用者提供更好的服務,或為企業産生更大的價值。

2.1.2 次元和度量

次元和度量是資料分析中的兩個基本概念。

次元是指審視資料的角度,它通常是資料記錄的一個屬性,例如時間、地點等。度量是基于資料所計算出來的考量值;它通常是一個數值,如總銷售額、不同的使用者數等。分析人員往往要結合若幹個次元來審查路徑成本,以便在其中找到變化規律。在一個sql查詢中,group by的屬性通常就是次元,而所計算的值則是度量。如下面的示例:

select part_dt, lstg_site_id, sum(price) as total_selled, count(distinct seller_id) as sellers from kylin_sales group by part_dt, lstg_site_id

在上面的這個查詢中,part_dt和lstg_site_id是次元,sum(price)和count(distinct seller_id)是度量。

2.1.3 事實表和次元表

事實表(fact table)是指存儲有事實記錄的表,如系統日志、銷售記錄等;事實表的記錄在不斷地動态增長,是以它的體積通常遠大于其他表。

次元表(dimension table)或維表,有時也稱查找表(lookup table),是與事實表相對應的一種表;它儲存了次元的屬性值,可以跟事實表做關聯;相當于将事實表上經常重複出現的屬性抽取、規範出來用一張表進行管理。常見的次元表有:日期表(存儲與日期對應的周、月、季度等的屬性)、地點表(包含國家、省/州、城市等屬性)等。使用次元表有諸多好處,具體如下。

縮小了事實表的大小。

便于次元的管理和維護,增加、删除和修改次元的屬性,不必對事實表的大量記錄進行改動。

次元表可以為多個事實表重用,以減少重複工作。

2.1.4 cube、cuboid和cube segment

cube(或data cube),即資料立方體,是一種常用于資料分析與索引的技術;它可以對原始資料建立多元度索引。通過cube對資料進行分析,可以大大加快資料的查詢效率。

cuboid在kylin中特指在某一種次元組合下所計算的資料。

cube segment是指針對源資料中的某一個片段,計算出來的cube資料。通常資料倉庫中的資料數量會随着時間的增長而增長,而cube segment也是按時間順序來建構的。