OLAP 事实 table 条空记录
OLAP fact table empty records
我正在为 olap 查找设计事实 table。目前,我不允许用户 运行 olap 查询,例如自定义维度或切片。我将自己为 运行 特定报告创建查询。
我的问题是关于 table 这些报告的事实。我想避免更新现有记录,而只是为多个维度插入行。例如:
两个插入:
YEAR AMOUNT
2016 1
2016 1
检查 year=2016 是否存在,而不是一次插入,如果存在则进行一次更新:
YEAR AMOUNT
2016 2
使用 Upsert 逻辑如下:
插入源 table 与目标 table 的内连接时,在匹配时更新金额字段,否则插入新记录。
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;
请看:
https://dba.stackexchange.com/questions/138409/fact-table-with-blank-dimensions/138515#138515
我面临的问题是试图将所有事实整合为一个 table。我了解到,最佳做法是针对不同的粒度将事实分解为不同的 table,并将列限制为事实所需的最小值。
插入数据是一项额外的工作,但在检索期间真正得到回报,这是数据库工作的大部分。
我正在为 olap 查找设计事实 table。目前,我不允许用户 运行 olap 查询,例如自定义维度或切片。我将自己为 运行 特定报告创建查询。
我的问题是关于 table 这些报告的事实。我想避免更新现有记录,而只是为多个维度插入行。例如:
两个插入:
YEAR AMOUNT
2016 1
2016 1
检查 year=2016 是否存在,而不是一次插入,如果存在则进行一次更新:
YEAR AMOUNT
2016 2
使用 Upsert 逻辑如下:
插入源 table 与目标 table 的内连接时,在匹配时更新金额字段,否则插入新记录。
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;
请看:
https://dba.stackexchange.com/questions/138409/fact-table-with-blank-dimensions/138515#138515
我面临的问题是试图将所有事实整合为一个 table。我了解到,最佳做法是针对不同的粒度将事实分解为不同的 table,并将列限制为事实所需的最小值。
插入数据是一项额外的工作,但在检索期间真正得到回报,这是数据库工作的大部分。