database-design - PostgreSQL 9 中的日历表

标签 database-design postgresql data-warehouse rails-postgresql

我正在构建一个分析数据库(我对数据和业务目标有深入的了解,并且只有基本到中等的数据库技能)。

我遇到了一些关于构建实现“日历表”概念的类似仓库的引用资料。这是有道理的,而且很容易做到。然而,我看到的大多数示例都是将范围限制为“天”的日历表。我的数据需要分析到小时级别。可能需要几分钟。

我的问题:实现小时/分钟级粒度的日历表在空间效率和查询/排序速度方面是否有值(value)?如果是这样,您能否推荐一种表结构和填充方法/示例?

我的主数据表在任何给定时间都将包含 20 多万行数据,用于分析的典型子集在 1 到 5 百万范围内。因此,如您所见,有很多时间戳字段。

最佳答案

PostgreSQL 中,您可以动态生成任意长度和粒度的日历表:

SELECT  CAST('2011-01-01' AS DATE) + (n || ' hour')::INTERVAL
FROM    generate_series(0, 23) n

这不需要递归(与其他系统一样)并且是生成易变结果集的首选方法。

关于database-design - PostgreSQL 9 中的日历表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5821915/

相关文章:

sql - postgres替换文本中的计算值

sql - 用于 Reactjs 和 React Native 应用程序的 Google Firestore (NoSQL) 与 PostgreSQL (SQL)

postgresql - Chef 在 Ubuntu 14.04 上安装 readline 包失败

data-warehouse - 聚合表在带有 Saiku 的 Pentaho Mondrian 中不起作用

sql-server - 无论如何要将主自动编号键添加到已经存在的数据库表中

mysql - 存储日期和月份(没有年份)

SSAS 3个事实表,但只有2个与某个维度相关

time-series - 我可以将时间序列数据存储在数据仓库中吗?

mysql - 同一个表的多个外键 - Doctrine2

数据库索引——表的大小重要吗?