如果您有能力对源 OLTP/staging 数据库进行更改,那么如果您需要在该级别报告,最好将 Targets 事实表的粒度更改为每天。如果您的 OLTP 数据库中有一个日期维度表,您可以使用视图来执行此操作,方法是将您的每月事实表连接到月份属性上的日期维度,然后将目标值平均分配到该月的几天中。
如果您使用的是 SQL Server,并且您的 OLTP 架构如下所示:
CREATE TABLE dimDate (
Date Date,
YearMonth Integer,
...
)
CREATE TABLE factMonthlyTarget (
YearMonth Integer,
Value Integer,
...
)
您的新事实视图将类似于以下内容:
CREATE VIEW factDailyTarget AS
SELECT
dimDate.Date,
factMonthlyTarget.Value / Months.DaysPerMonth AS Value
FROM
factMonthlyTarget,
dimDate,
(
SELECT YearMonth, COUNT(*) AS DaysPerMonth
FROM dimDate
GROUP BY YearMonth
) Months
WHERE factMonthlyTarget.YearMonth = Months.YearMonth
AND Months.YearMonth = dimDate.YearMonth