具有重叠期的表的星型模式

Posted

技术标签:

【中文标题】具有重叠期的表的星型模式【英文标题】:Star schema for tables with overlap periods 【发布时间】:2021-09-20 13:31:49 【问题描述】:

我需要设计一个星型模式,它可以响应我未来的指标,稍后将在数据仓库中实现,但是我的知识非常基础,我在开发模型时遇到了严重的困难

我不确定是否应该创建单独的星型模式,或者是否可以使用桥接表。

每个会话都在一个频道上完成,但根据其时间间隔,可能会观看也可能不会观看多个节目

每个程序都有自己的分类(12 种可能的分类)

-TuneTime >> 开始 DateTime 会话(例如 2020-12-02 00:35:00)

-TuneDuration >> 会话持续时间(以秒为单位)

-StartDate >> 开始DateTime程序(例如2020-12-01 23:35:00)

-EndDate >> 结束日期时间程序(例如 2020-12-01 00:23:00)

最小时间粒度 = 15 分钟

我将不得不分析一系列与设备访问相关的指标,包括每个频道、分类、观看次数最多的节目的排名、每个频道的份额等。我的想法是能够获得这些数据用于用户预定义的日期范围并能够更改时间刻度,例如:

每月每周 按星期几(星期一、星期二、...)计费 按每日时段(晚上、早上...) 每天(15 分钟间隔)

在我看来,我必须创建:

DIM_Time DIM_Date

但是如何评估事实表中每个程序的持续时间

我做了一个小示意图来可视化,它可能不会做任何事情:)

我对自己的推理没有信心,非常感谢一些帮助

【问题讨论】:

你的图很有用,分析需要这种东西。想想事实表中的一行代表什么。也许它代表一个会话的十五分钟片段。或者它可能代表具有开始和结束日期的整个会话。如果你能保证十五分钟的分析窗口是你想要的,你可以预先计算一个事实表,使后续的分析更容易。 IE。将每个会话分成 15 分钟,查找相关的程序,并创建一个事实表,其中每条记录代表一个 15 分钟的会话。 【参考方案1】:

星型模式的起点应该是您希望聚合的度量以及您希望用来对这些度量进行切片、切块和聚合的属性。

应在用于加载星型模式的 ETL 过程中处理您试图实现的目标的复杂性,以便查询星型模式以生成您需要的信息很简单

【讨论】:

我很困惑! tks

以上是关于具有重叠期的表的星型模式的主要内容,如果未能解决你的问题,请参考以下文章

星型模式中作为事实表的客户维度

SQLAlchemy 中的星型模式

星型模式

Pyspark 数据框:将 jdbc 写入具有给定模式的表的动态创建

星型模式 - 贷款逾期日期建模

将非星型模式数据库转换为星型模式数据库