累計、同比、環(huán)比是BI項目中常用的分析方法。Oracle BIEE提供的解決方法是時間軸函數(shù)。Oracle BIEE現(xiàn)在支持兩個時間軸函數(shù):Ago:從當前時間起回溯用戶指定的n個時間段,返回當時的度量值;ToDate:從用戶指定時間段的起點開始,到當前時間為止,計算度量值的累計值。
使用時間軸函數(shù)的前提條件是在邏輯模型內定義了時間維。上面兩個函數(shù)說明中的“時間段”實際上指的是時間維的層級(Level)。例如使用Ago函數(shù)定義“去年同期值”,指定的時間段為“年”這一層級,指定的回溯周期為1,表示得到去年的值。再比如使用ToDate函數(shù)定義“本年累計值”,指定的時間段也是“年”這一層級,表示從年的起點(年初)開始到當前時間為止,求度量值的累計值。
注:
1. 如果某個物理表的字段被映射到了時間邏輯表上,那么這個物理表中的字段不能再映射到其他邏輯表中。
2. 作為時間邏輯表的數(shù)據源的物理表,只允許與物理事實表關聯(lián)。且關聯(lián)只能基于外鍵,而不能基于復雜連接。
3. 時間維與普通維度有兩處不同。首先,雙擊維度“Date”節(jié)點,在“Dimension”對話框中需要選中“Time Dimension”選項,以表明此維度對象為時間維度。其次,時間維度中需要定義時間序列鍵(Chronological Key)。時間序列鍵的作用是表明時間維中具有一組單調增加的時間序列值。定義時間序列時存在以下原則:時間維中,至少一個層級上應定義有時間序列鍵。物理存儲的最細時間粒度上必須定義時間序列鍵。時間維的同一層級上可以建立多個時間序列鍵,但只有第一個時間序列鍵有效。
定義好時間維后,就可以在邏輯事實表中定義使用時間軸函數(shù)的邏輯列了。
ago(<measure_expression>, <model_id>.<dimension_id>.<level_id>, <integer_literal>):第一個參數(shù)是邏輯字段用于時間軸運算的度量值;第二個參數(shù)是邏輯模型時間維的層級,表明回溯的時間單位;第三個參數(shù)表示回溯的時間周期,1則為回溯一年,即去年。
todate(<measure_expression>, <model_id>.<dimension_id>.<level_id>):第一個參數(shù)是邏輯字段,是用于時間軸運算的度量值;第二個參數(shù)是邏輯模型時間維的層級表明累計計算開始自年時間的起點,終止到當前時間。