需要维度建模帮助 - 平面表到星型模式
Posted
技术标签:
【中文标题】需要维度建模帮助 - 平面表到星型模式【英文标题】:Dimensional Modelling help needed - flat tables to star schema 【发布时间】:2015-10-27 14:11:06 【问题描述】:我一直在阅读 The Data Warehouse Toolkit 2nd Edition,最近完成了 SQL Server 分析服务课程。
这篇文章的目的是帮助我解决我遇到的设计问题
我正在尝试设计一个星型模式,它将在 SSAS 中实现并构成报告平台的基础
我们使用的基于事务的系统有以下表格/字段(带有示例虚拟数据)
“政策事实表”
行名称 示例数据 政策 ID 112 政策状态 X 成立日期 2013 年 4 月 7 日 续订日期 2014 年 4 月 6 日 政策调整计数 1
此表包含每个策略的最新策略信息,因此“策略 id”是唯一的 成立日期也是独一无二的 使用“策略 ID”和“策略调整计数”键从“策略事务事实表”复制其他信息 每次保单更新时,更新日期都会更新(这意味着对于历史,我可以从“保单事务事实表”中提取“结束日期”并添加 1 天)
“策略事务事实表”
行名称 示例数据 政策 ID 112 策略调整计数 1 开始日期 2013 年 4 月 6 日 结束日期 2014 年 4 月 5 日 交易号 4491 交易类型 402 政策状态 C Gross_Premium 12345.67 保险费税额 26.78 Scheme_id STDF015N 等
此表包含在策略级别执行的所有调整。
“政策交易事实表上的人”
行名称 示例数据 政策 ID 112 驱动程序 ID 2000000084 交易号 4491 开始日期 2003 年 4 月 6 日 加入日期 1937 年 12 月 12 日 退出日期 2014 年 2 月 9 日 个人保费 1234.56 等
此表包含政策中受交易影响的每个人
“策略事务事实表”中的一条记录将链接到“策略事务事实表中的人员”中的一条或多条记录
我正在努力将这两个表在星型模式中链接在一起
我很确定我需要一个桥接表来链接事实表。
如果我专门看“策略事务事实表”和“策略事务事实表上的人”
使用“policy transaction fact table”中的“policy id”和“transaction number”键并将其连接到“people on policy transactions fact table”,我可以看到所有在policy上的人
非常感谢一些指导
感谢您抽出宝贵时间阅读本文。
感谢您在下面的第一个答案:谢谢,非常感谢。在策略事务中,“策略事务”和“策略表上的人员”附加了指标
我目前必须在SQL中设置子句来计算特定时间范围内“活跃”保单的数量,每个保单都有保费,ipt(保险保费税),附加的回扣金额
“政策表上的人”:
因为它包含保单上的所有人,我可以聚合 driver_id 来生成保单上的人数,源系统还分解了他们的个人保费,我希望可以用它来提取“赚取的保费”
还有一些政策指标显示他们拥有的政策类型,其编码为:MODP500A - 因此这将链接到允许对其进行解码的维度表。
【问题讨论】:
【参考方案1】:您不会在星型模式中链接事实表。你把它们弄平。
换句话说,不是通过网桥或外键将 Policy 表与 People 表相关联,而是在事实中为策略中的每个人(Driver1、Driver2、Driver3 等)都有一个列。
但我质疑这些表中是否有任何一个甚至是事实表的良好候选者,因为我在其中没有看到任何指标,除了 Policy Adjustment Count。这看起来更像是一个政策维度和一个人员维度,事务表可能是唯一的事实表。
根据经验,您的 SSAS 项目的结构应该由您的报告需求驱动。从您想要报告的内容开始,不要构建任何无法满足这些需求的内容。
【讨论】:
感谢您花时间阅读和回复我的问题,我已经更新了原始问题以包含源数据中的指标 好的,我看到了指标,并且 people 表是事实表。我的第一句话仍然有效:你没有链接事实表。最接近事实表之间链接的是它们都可以使用相同的维度。 SO 格式并不真正适合深入分析,尤其是因为我必须了解您的所有业务规则才能真正了解如何提供更具体的建议。从这个前提开始工作,如果您遇到更集中、更具体的问题,请随时回到这里。 再次感谢您,最后 2 个问题 - 1) 在此声明中首字母缩写词 SO 的含义是什么:“SO 格式并不真正适合深入分析” - 2)鉴于您目前所阅读的内容.. 深入分析的理想解决方案是什么?以上是关于需要维度建模帮助 - 平面表到星型模式的主要内容,如果未能解决你的问题,请参考以下文章