我正在设计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;