为星型模式中的分辨率设置时间维度

我一直在做一些有关OLAP处理的体系结构类型的阅读,特别是Star Schema概念。我目前正在建立一个数据库进行测试。

我的情况

我有750个传感器,每个传感器每分钟都会将数据发布到SQL数据库。目前,我的方法是发布如果值发生变化。再仔细考虑一下,我想知道是否在确定是否存在数据丢失与不变值之间构成问题,并让我重新考虑计划发布。

插入传感器值的软件以2020-01-23 13:48:52格式发布时间戳。与此同时,还会发布传感器名称和传感器值。因此,如果算上主键,我的事实表中有4列。

我知道我需要对我的数据进行一些中间处理(可能是一个按时间表处理的表,以使其符合架构,然后被删除),但是现在我正尝试保持这种状态高层次,一次解决一个问题。

这是我目前所设想的,但是考虑到我需要的分辨率,我对如何处理时间维度一无所知。

为星型模式中的分辨率设置时间维度

我的问题

当前,我的方法是发布如果值发生变化。进一步思考这一点使我怀疑是否在确定是否存在价值变化时会产生问题数据丢失与值保持不变,这让我重新考虑了预定发布。

这是确定数据丢失的有效考虑还是有其他解决方法?

考虑到我所需的分辨率,样本时间维度将是什么样?

bonwemeters 回答:为星型模式中的分辨率设置时间维度

如果我正确理解您的情况,则表示您正在记录表示某个时间点某些系统状态的值。换句话说,您正在及时捕获系统快照。在星型模式中,然后应使用"periodic snapshot fact table"。这样的事实表捕获值,而不管它们是否已更改,因为它们的粒度是日期/时间的单位,而不是事务。

时间维度可以通过多种方式建模。我将执行以下操作:

创建维度“日期”以处理日历日期。谷物:一个历日。跨度:从您拥有数据的那一天开始,直到今天为止。

创建维度“时间”以处理一天中的时间。谷物:一分钟。跨度:24小时(因此此表中的总记录为60分钟* 24小时)。

将日期和时间键添加到事实表。

我还将时间戳记作为事实表中的退化维,以便在需要时可以访问秒。

本文链接:https://www.f2er.com/2724061.html

大家都在问