首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理数据仓库中的时间序列数据?

如何处理数据仓库中的时间序列数据?
EN

Database Administration用户
提问于 2022-02-05 04:36:42
回答 1查看 568关注 0票数 0

我对数据仓库很陌生(在我上学的时候就学会了这一点),并希望把数据仓库作为一个附带项目。下面是我提出的一个简单的数据仓库设计:

数据仓库有二维表和事实表。1维表包含日期时间数据,另一维表包含设备数据。事实表包含在字段中捕获的设备传入数据值。事实表中的数据粒度为5分钟。

我搞不懂时间序列是如何处理的,如果有人能澄清这一点,我会很感激。假设来自设备的一行数据如下所示:

代码语言:javascript
复制
    datetime        drive_a   drive_b   drive_c   shaft_a   shaft_b   shaft_c   total_output
02/01/2022 13:05      4.2       3.2       7.4       5.3       8.2       6.4        4563.2

这将被处理并存储到数据仓库中的事实表中。

如何处理这个传入数据中的datetime列,因为dateKeydatetime传入数据的格式不同?

我认为事实表需要另一个名为dateTime_raw的列,但这不符合dim_datetime表的目的,不是因为我的日期时间已经在事实表中了吗?

对不起,如果我的问题混淆了,尽量解释,因为我不精通这个领域。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2022-02-05 17:50:39

正如注释中提到的那样,您需要一种将timeseries事实数据fact_deviceValues与日期时间维度表dim_datetime关联起来的方法。这应该由两个表中的datetime通过从fact_deviceValues引用到dim_datetime的外键来实现。

datetime应该是您要存储时间序列数据的度量单位,例如,您的02/01/2022 13:05示例有几个小时和几分钟。这可能使seconds字段在dim_datetime表中不需要(除非您计划以秒的粒度存储数据)。

在覆盖数据和用例的合理时间框架内,父dim_datetime表将在每天每小时的每分钟中有1行。例如,如果您需要覆盖大约100年的数据,您的dim_datetime表中大约有5 300万行(60分钟* 24小时* 365天*100年=5 300万)。

而您的子fact_deviceValues表将保存在timeseries中发生的事件的实际datetime。多个事件可能发生在同一个datetime上,因此多个行将存在,其值与dim_datetime表中相同的父行相关联。

如果您发现您的dim_datetime表太大,您可能会发现一种更好的体系结构,可以使它成为一个dim_date表,每个日期只存储一个唯一的行。然后,您的fact_deviceValues表可以将日期与时间分开存储,并可以为特定于日期的维度(通常比特定于时间的维度更丰富)加入到dim_date表中。但是这取决于您的用例,如果有特定于您真正关心的时间的维度(我所能想到的任何维度通常都是从时间本身衍生出来的)。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/307039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档