我是维度建模的新手,我正在为一所大学制作维度模型。我选择的当前业务流程实际上是销售额/收入。我一直在阅读不同书籍的不同章节,虽然我认为我对事实和维度有很好的理解,但我很难将销售过程写到纸上。
理想情况下,学校的销售流程类似于其他企业,其中学生是客户,产品是他们参加的“类(class)”。但是在某些情况下有不同的产品类型,我不知道如何适应产品类型。例如,学生支付与任何类(class)无关的申请费、滞纳金或成绩单申请费。我如何在我的明星中适应这些不同类型的收入来源?
到目前为止我所做的是这样的
Sales_FACT
====
Date_Key_FK
Product_Key_FK
Campus_Key_FK
Student_Key_FK
ChargeCredit_SKU
Amount
Product_Key
------
Product_Key_PK
SectionID
AcademicYear
AcademicTerm
AcademicSession
CourseCode
CourseName
ProductType???
现在对于某些类型的产品(例如成绩单申请费)——我没有类(class)名称、代码、学期、类(class)——我不知道这将如何运作。
有人对此有任何意见吗?或任何有用的 Material /模式示例肯定会感激他们
谢谢,
最佳答案
以后你会发现很多这样的案例。通常,您遇到此问题是因为您在您的案例中混合了两种不同类型的“产品”。
可以从逻辑上或技术上解决。
在ETL过程中,在清理步骤中,您可以使用与字段相关的sql(nvl,coalesce,CASE WHEN)重写您的空字段
nvl(CourseCode, 'No Course Code') as CourseCode
然后,当您按 ProductType 和 CourseName 分组时,您应该得到如下内容:
ProductType CourseName sum(Amount)
------------------------------------------
AppFee Course1 345.13
AppFee Course4 8901.00
TranscriptFee No Course Name 245.99
或者,您可以将其放在单独的表中。即使这与您的业务流程相矛盾(实际上行中不能有不同的产品),有时您想要合并的术语(即 ApplicationFee 和 TranscriptFee)有许多不同的分组级别,通常很难映射。
编辑:
不,当存在大维度表、高基数、多级别以及多对多关系(即电影、类别)时,雪花才有意义。在您的情况下,好主意是遵循 ERP/CRM 数据库设计,因为它是当前可用的解决方案。如果没有您想要的这种报告可能性,您可以制作更通用维度表:
Product-Service Dimension
--------------------------------------------
SurogateKey
NaruralKey
Type(Product/Sevrice/Other)
Level1(ProductType/ServiceType)
Level2(ProductSubType/ServiceSubType)
Level3
Level4
Attribute1
Attribute2
关于database - 维度建模 : need help doing this star for a university,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25392486/