【问题标题】:Modeling an OLAP cube for Football analysis为足球分析建模 OLAP 多维数据集
【发布时间】:2020-11-18 21:19:33
【问题描述】:

我想按赛季对 NFL 橄榄球数据进行基本分析。例如,我想要的Fact 是:

[NFL Fact]

  • 季节(维度)
  • 团队(维度)
  • 教练(维度)
  • 名册(维度,一对多,可以是与教练相同的“人员”维度)
  • 胜利(智力)
  • 损失(内部)
  • 关系(内部)
  • Made_Playoffs(布尔)
  • Won_Conference(布尔)
  • Won_Superbowl(布尔)

数据示例以人类可读的形式如下所示:

2019 赛季
堪萨斯城酋长队团队
Andy Reid 指导
他们的名单上有 Patrick MahomesTravis Kelce、...
12 场胜利
4 损失
0 在常规赛中打平
进入季后赛
赢得他们的会议
赢得了超级碗。

如果上面是我们的事实表,维度如何建模?这是我的第一次尝试:


Season

  • 年份(键)
  • AFC Champion(字符串或维度链接?示例:“DAL”)
  • NFC Champion(字符串或维度链接?示例:“DAL”)
  • NFL Champion(字符串或维度链接?示例:“DAL”还是应该是“2018 DAL”?)

问题:AFC/NFC/NFL Champion 应该是字符串吗?还是应该引用Team 维度?为什么要选择一个而不是另一个?


Team

  • 代码(字符串,例如:“DAL”)
  • 季节(Int,例如:2018,key = code+year,例如:“2018 DAL”)
  • 会议(字符串,例如:“AFC”)
  • 除法(字符串,例如:“South”)
  • 姓名(字符串,例如:“达拉斯牛仔队”)
  • 网址(字符串,例如:“https://nfl.com/dallas-cowboys”)

问题:我是否需要将键设为 Code+Year,或者我可以只使用 Code,因为季节是从它链接到的 Fact 表中“派生”出来的? Season 应该是整数还是指向季节维度的链接?


Person(包括球员、教练等)

  • 姓名
  • 季节
  • 团队 (?)
  • 位置
  • 年龄
  • 大学

问题:我需要在此处包含Team,还是不需要因为团队已经从事实表中推断出来?赛季也应该在这里链接吗?


对上述格式的任何建议都会很有帮助,谢谢!

【问题讨论】:

    标签: ssas olap dimensional-modeling


    【解决方案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] 仅用于收集球队统计数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多