为足球分析建模 OLAP 多维数据集
Posted
技术标签:
【中文标题】为足球分析建模 OLAP 多维数据集【英文标题】:Modeling an OLAP cube for Football analysis 【发布时间】:2020-11-18 21:19:33 【问题描述】:我想按赛季对 NFL 橄榄球数据进行基本分析。例如,我想要的Fact
是:
[NFL Fact]
数据示例以人类可读的形式如下所示:
在 2019 赛季 堪萨斯城酋长队团队 由 Andy Reid 指导 他们的名单上有 Patrick Mahomes、Travis Kelce、... 有 12 场胜利 和 4 损失 和 0 在常规赛中打平 进入季后赛 并赢得他们的会议 并赢得了超级碗。
如果上面是我们的事实表,维度如何建模?这是我的第一次尝试:
Season
问题:AFC/NFC/NFL Champion 应该是字符串吗?还是应该引用Team
维度?为什么要选择一个而不是另一个?
Team
问题:我是否需要将键设为 Code+Year,或者我可以只使用 Code,因为季节是从它链接到的 Fact 表中“派生”出来的? Season
应该是整数还是指向季节维度的链接?
Person
(包括球员、教练等)
问题:我需要在此处包含Team
,还是不需要因为团队已经从事实表中推断出来?赛季也应该在这里链接吗?
对上述格式的任何建议都会很有帮助,谢谢!
【问题讨论】:
【参考方案1】:我不擅长 NFL 橄榄球,但可以为您提供如何管理实体和创建关系的基本思路。
首先将事实表视为所有维度之间的主要管理器和连接器。
[Team] 维度可能是 Slowly Changes Type-2 (SCD-2),因为您可能想要跟踪部门/会议等之间团队的变化,甚至名称变化。但要获取球队的赛季信息,您只需加入 [NFL Fact] 和 [Team],因此无需创建 Code+Year 键作为赛季属性。
您的示例中的 [Season] 看起来不是维度,而是 [NFL Fact] 上的数据集市。因为 [Season] 的每一行都可以查询 [NFL Fact]。可以获得AFC/NFC/NFL Champion + [Team]维度的Conference属性。我建议使用日期列表(年份或 YYYYMMDD 或其他)而不是 [Season] 创建 [Date] 维度。
[Person] 你无法从 [NFL Fact] 中得到。因为 [NFL Fact] 中的最低粒度实际上是一个团队。因此,要管理球员/教练,您需要一个单独的事实表(因为明年球员可以转移到另一支球队等)。因此,这将是 [Persons] 事实表,其中包含他们在给定年份效力的团队的代理键。这也意味着如果 [NFL Fact],Coach/Roster 属性将成为这个新 [Persons] 事实表的一部分,因为在您的示例中 [NFL Fact] 仅用于收集球队统计数据。
【讨论】:
以上是关于为足球分析建模 OLAP 多维数据集的主要内容,如果未能解决你的问题,请参考以下文章