資料倉儲 事實表開發實踐(IoT場景)

2021-10-06 01:34:54 字數 1638 閱讀 7393

一條記錄代表了業務系統中的乙個事件。事務出現後,就會在事實**現一條記錄。以訂單域舉例:下單是乙個事實;付款是乙個事實;退款是乙個事實。

記錄指定週期內一些聚集事務值或者度量狀態。如:庫存日快照事實表

用於研究業務過程中各里程碑事件之間的時間間隔,一般會用乙個字段記錄最後更新時間。如:訂單各種狀態的開始結束時間。

儲存最細粒度資料的事實表

原子事實表上的彙總,也稱彙總事實表。通過彙總原始資料來提公升下游查詢的效率

聚集原則:

不跨越資料域:資料域是對資料分類的高層抽象,如訂單域、使用者域,不同資料域的資料不要聚集在一起

不跨越事實:對於橫向鑽取,是針對多個事實基於一致的維度進行分析,即融合表,是一種匯出模式而不是聚集模式。

位於不同事實表中處於相同粒度的事實進行組合建模而成的一種事實表。即新建立乙個事實表,它的維度是兩個或多個事實表的相同維度的集合;事實是幾個事實表中感興趣的事實。

需求:計算電表每次上報間隙的用電量。

架構:kafka + flink + hbase

事實表型別:累計快照事實表

事實表設計:

欄位名型別

備註rowkey

string

md5 雜湊 meter_id + 開始時間戳

meter_id

string

電表 id

date_sid

string

日期維表**鍵

start_time

string

起始時間

start_poi_data

string

起始讀數

end_time

string

結束時間

end_poi_data

string

結束讀數

amount

string

用電量flink實現:

利用數量滑動視窗提取相鄰兩次的資料 countwindow(2l, 1l)... 

final streamexecutionenvironment env = streamexecutionenvironment.getexecutionenvironment();

flinkkafkaconsumer011source = ...

datastreaminput = env.addsource(source).keyby("meterid").countwindow(2l, 1l).process(new myprocessfunction());

input.writeusingoutputformat(new hbaseoutputformat());

...

public class myprocessfunction extends processwindowfunction

}

public abstract class hbaseoutputformatimplements outputformat

}

1. 建立hbase表需要預分割槽,有效提高讀寫效能

2. hbase表的rowkey利用md5雜湊,均勻分布在不同的分割槽。

3. flink計算做好異常處理,避免錯誤資料影響計算結果。

資料倉儲 事實表

事實表分成三種 事務事實表 週期快照事實表 累計快照事實表 官方定義是 發生在某個時間點上的乙個事件。比如以訂單為例 下單是乙個事實 付款是乙個事實 退款是乙個事實,所有事實的累計就是事務事實表 如果需要對某一天或者某個月的資料進行分析,那麼可以使用週期快照事實表,比如 以天舉例,財務報表一般都是週...

資料倉儲事實表分類

1 在資料倉儲領域有乙個概念叫transaction fact table 中文一般翻譯為 事務事實表 事務事實表是維度建模的資料倉儲中三種基本型別事實表中的一種,另外兩種分別是週期快照事實表和累積快照事實表。事務事實表與週期快照事實表 累積快照事實表使用相同的一致性維度,但是它們在描述業務事實方面...

資料倉儲事實表分類

1 在資料倉儲領域有乙個概念叫transaction fact table,中文一般翻譯為 事務事實表 事務事實表是維度建模的資料倉儲中三種基本型別事實表中的一種,另外兩種分別是週期快照事實表和累積快照事實表。事務事實表與週期快照事實表 累積快照事實表使用相同的一致性維度,但是它們在描述業務事實方面...