我正在設計olap查找事實表的過程。目前,我不會允許用戶運行olap查詢,如自定義維度或切片。我將自己創建查詢以運行特定報告。OLAP事實表空記錄
我的問題是在這些報告的事實表上。我想避免更新現有的記錄,只需插入多個維度的行。例如:
兩個插件:
YEAR AMOUNT
2016 1
2016 1
而不是一個插件,檢查是否年= 2016存在,如果這樣的話一個更新:
YEAR AMOUNT
2016 2
我正在設計olap查找事實表的過程。目前,我不會允許用戶運行olap查詢,如自定義維度或切片。我將自己創建查詢以運行特定報告。OLAP事實表空記錄
我的問題是在這些報告的事實表上。我想避免更新現有的記錄,只需插入多個維度的行。例如:
兩個插件:
YEAR AMOUNT
2016 1
2016 1
而不是一個插件,檢查是否年= 2016存在,如果這樣的話一個更新:
YEAR AMOUNT
2016 2
請參閱:
https://dba.stackexchange.com/questions/138409/fact-table-with-blank-dimensions/138515#138515
我面臨試圖把所有的事實爲一個表中的問題。我瞭解到最佳做法是將事實分解成不同粒度的不同表格,並將列數限制爲事實所需的最小值。
這是插入數據的額外工作,但在檢索過程中確實是值得的,這是數據庫工作的主體。
使用的Upsert邏輯如下:
在插入源表與目標表的內連接時,匹配更新量字段或插入新記錄。
insert into target (select * from source s, target t where s.year <> t.year);
Update target T set T.amount = T.amount + S.amount
from source S where T.year = S.year;