- 標准Standard DSO
標准DSO有三張表:
標准DSO覆蓋合計規則:
數據從源抽取到標准DSO中時,在同一抽取請求中,相同業務主鍵的數據會合並(合並的方式有覆蓋與合計,合計又可為MIN、MAX、SUM中的一種,具體轉換規則中可為哪一種合計,則要看Key Figure中的Aggregation聚合中設置的是哪一種合計方式,具體請參考“Key Figure中的Aggregation決定了DSO/CUBE轉換規則中的Aggregation合計方式”章節)后存入到New中;抽取數據到DSO New表中時,不管抽取請求中的新數據是否與當前New表中已有的數據主鍵相同,新抽取請求中的數據合並(相同業務主鍵才會合並)后,再以新數據記錄存入New表,並不會與New表中現有相同業務主鍵數據發生合並(原因是New中的主鍵為技術主鍵,並技術主鍵與抽取請求有關,同一抽取請求主對應着同一SID,所以不同抽取請求的數據即使業務主鍵相同的記錄也是不會被合並的,合並只發生在同一抽取請求中,且相同業務主鍵數據之間);如果New中有相同業務主鍵的數據(多次抽取請求形成的),或者將要被激活的記錄與現有Active表里的數據業務主鍵相同,並且DSO中設置中勾選了“
”選項,則在Active時抽數請求會報紅(其他不報錯即不重復的記錄也不能存入到Active表時,報錯后整個抽數請求所包括的數據都不會插入到激活表里),如果未勾上,則Active時不會報錯,並且相同業務主鍵的數據在Active表進行合並,並在Change Log表中記錄數據變化過程;

New表中的主鍵為技術主鍵:
Active表中的主鍵為業務主鍵:
報表就是直接從該表中抽數,以及上層其他數據目標初始化時從該表里抽數,但上層其他數據目標的Detal更新需從Change Log表里抽數
Change Log表中的主鍵為技術主鍵:
激活時,如果某條數據沒有發生任何變化,且轉換規則的Aggregation設定是覆蓋方式,則不會在Chang Log表里產生新的日志記錄,但只要修改了某個非主鍵字段,則會記下日志;但如果轉換規則的Aggregation設定的是合計方式時,不管數據是否發生變化,都會記日志
- 寫優化Write-Optimized DSO
寫優化DSO只有一張Active表,數據不需要激活:
數據庫表中的主鍵為:
如果去掉了寫優化DSO的”不檢測數據唯一性
“的勾時,表示數據存入Active表中時會檢查數據是否重復,此如果有語義上相同主鍵的數據時,抽數時抽取請求會報紅,整個請求中包含的數據(包括重復與不重復的數據)都不能存入到Active表中;在勾上
后,表示不再會檢測數據唯一性,此時即使Key Figure關鍵值字段規則設置成了合並,也並不會將新抽取上來的數據與相同業務主鍵的數據進行合並(注:即使同一抽取請求中有相同業務主鍵的記錄也不會合並);


注:寫優化DSO轉換規則的Key Figure的Aggregation雖然可以設置覆蓋或合計,但對寫優化的DSO是不起任何作用的,不管合並方式設置成什么(MOV、MIN、MAX、SUM),業務鍵相同的數據也不會發生合並
寫優化的DSO只用於只有新增、沒有刪除與修改的數據的數據源,即抽取的這類數據是不會發生變化的,只會新增(如:由於零售企業的銷售明細數據量大並且需要日結,所以零售企業的銷售小票明細數據只有增加,對這類的數據可以使用寫優化的DSO來做)。並且從數據源中抽數到寫優化的DSO所對應的Active表里時,數據不會發生合並計算操作,而是原樣將數據源的數據拷貝到表里,所以數據寫入的速度也會快點
- 直接更新Direct Update DSO
直接更新的DSO不能通過DTP抽數,因為此類型DSO無法創建DTP(也無法創建Transformation),所以該類DSO無法通過ETL來加載數據,只能通過其他Application將數據寫到里面,如將某個Query報表查詢出來的數據保存到該類DSO中。
直接更新的DSO也只有一張Active表,不過該表不是通過DTP上傳數據,而是通過其它方式抽數(非DTP 的Request方式):
該類DSO所對應的數據庫表的主鍵是由業務字段組成的主鍵,而不是技術字段(所以數據在寫入時,業務主鍵相同數據也會發生合並計算,這與標准DSO是一樣的)
下面演示將某個Query報表結果數據存儲到此類型的DSO中
先創建一個Query用作直接更新DSO的數據源:
通過事務碼:RSANWB將Query的數據存儲到DSO中:
選擇應用,這里會掛到General節點下
將數據源中的字段與DSO中的數據分配對應起來:
做好后,再執行即可將Query運行出來的數據存儲直接更新類型DSO中: