链接到事实表的销售人员(区域经理、区域经理、国家负责人)
Posted
技术标签:
【中文标题】链接到事实表的销售人员(区域经理、区域经理、国家负责人)【英文标题】:Sales Person (Regional Manager, Zonal manager, Country Head) linking to Fact table 【发布时间】:2020-10-30 10:20:23 【问题描述】:我有一个小型销售数据仓库。在这里,我有销售发票和维度(如客户、日期时间、销售地理位置、产品代码)的事实表。
事实表:Sales
- >
Invoice Date, Customer code, Product Code, Sales Geo Code, Billing qty, Amount, Tax, Total Amount
对于Sales Geo dimension
- >
Sales Geo Code, City Name, Regional Code, Zone Code, Regional Manager Code, Zonal Manager code
我对如何联系区域经理和区域经理等销售人员感到困惑。
区域经理领导多个城市的一个区域, 区域经理领导多个区域。
有时我们改变区域或区域区域,他们得到提升,他们离开等等。
如何创建维度并将销售团队与销售事实联系起来以获得正确的销售报告。
问候
【问题讨论】:
能否请您提供一些示例/数据/预期输出? 【参考方案1】:我能想到几个选项:
-
将区域和区域经理信息非规范化到您的销售地理维度中
创建以区域经理为键的分层经理维度并包括其区域经理详细信息
创建一个 Person Dim 并将其与 Fact 关联两次 - 一次是区域经理的角色,一次是区域经理的角色
如果您永远不想将经理信息链接到一个事实,除非是在销售地理位置的上下文中,那么选项 1 可能更有意义 - 因为您在使用此事实表的查询中的潜在联接较少。
选项 2 更灵活,因为您可以将经理信息与事实相关联,而无需同时使用销售地理位置
选项 3 是最灵活的,但也可能提供最差的查询性能(对于需要这两种经理类型的任何查询),而且区域经理和区域经理之间的唯一联系是通过事实;维度中没有层次信息。因此选项 3 是我最不可能选择的选项
【讨论】:
【参考方案2】:非规范化您的事实表中的区域经理代码和区域经理代码。
因此,基本上您将在每个事实行中存储 销售地理代码,以及销售时两个经理角色的当前分配(在加载时更精确)记录)。
此模型允许使用两种类型的报告
在交易时分配的经理(直接来自事实表)和
当前经理(从事实表加入到销售地理维度以获取两位经理的代码)
现在您的设置只允许第二种类型的报告,如果经理经常被重新分配,这可能不是最佳选择。
如果您希望不去规范化事实表,您可以随时将 Sales Geo 维度切换到 SCD 类型 2,这将引入有关维度和分配的历史视图的经理。
您不仅需要将 Sales Geo Code 从事实表加入到 Sales Geo 维度,还需要考虑交易日期... p>
Invoice_Date between sales_geo.validfrom_date and sales_geo.validto_date
...获取交易时分配的经理。
该决定在存储加保持一致性和更复杂的连接加保持另一侧的维度历史记录之间有一个典型的权衡。
【讨论】:
以上是关于链接到事实表的销售人员(区域经理、区域经理、国家负责人)的主要内容,如果未能解决你的问题,请参考以下文章