链接到事实表的销售人员区域经理,区域经理,国家负责人

问题描述

我有一个用于销售的小型数据仓库。这里我有销售发票和维度的事实表,例如客户,日期时间,销售地理位置,产品代码。

事实表: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  

我对如何链接区域经理和区域经理等销售人员感到困惑。

区域经理领导着多个城市的一个地区, 区域经理正在领导多个区域。

有时我们会更改区域或区域区域,他们得到晋升,他们离开等等。

如何创建维度并将销售团队与Sales Fact联系起来以获取正确的销售报告。

致谢

解决方法

我可以想到一些选择:

  1. 将区域和区域经理的信息反规范化为您的销售地理位置维度
  2. 创建一个基于“区域经理”并包括其区域经理详细信息的层次管理器维度
  3. 创建人员点心并将其与事实关联两次-一次担任区域经理,一次担任区域经理。

如果除了在Sales Geo的上下文中,您永远不想将Manager信息链接到一个事实,那么选项1可能更有意义-因为使用此事实表的查询中潜在的联接较少。

选项2更加灵活,因为您可以将经理信息与事实相关联,而无需使用Sales Geo

选项3是最灵活的,但也可能给出最差的查询性能(对于同时需要两种类型的经理的任何查询),并且区域经理和区域经理之间的唯一链接是事实。维度中没有层次信息。因此,选项3是我最不可能选择的选项

,

事实表中的区域经理代码区域经理代码进行归一化

因此,基本上,您将在每个事实行中与销售地域代码一起存储销售时两个经理角色的当前分配(更准确地说是在加载记录)。

此模型允许使用以下两种类型的报告

  • 在交易时分配的经理(直接从事实表中分配)和

  • 当前经理(从事实表连接到销售地理维度以获得两位经理的代码)

现在,您的设置仅允许使用第二种报告类型,在频繁重新分配经理的情况下,这可能不是最佳选择。

如果您希望不对数据表进行非规范化,则可以始终将销售地理位置维度切换为SCD类型2,这将引入有关维度和分配的历史视图经理。

您不仅需要将事实表中的销售地域代码加入到销售地域维度,还要考虑交易日期... >

spring-boot-dependencies

...以在交易时分配经理。

该决定在存储,保持一致性和更复杂的联接以及保持维度历史之间具有典型的权衡

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...