多客户维度
Multiple customer dimension
我是 dwh 的新手,正在为我的公司创建数据仓库。我们有一个客户维度,我们希望 create.However 财务团队客户列表 ID 和名称与 CRM 列表 ID 和名称不同。
我们创建了一个映射 table 但有时对于同一个财务 ID 我们有多个 crmid 我应该如何处理这个...我是否必须创建两个客户维度
CRM Name
CRMID1 XXXX
CRMID2 YYYYY
CRMID3 ZZZ
映射table
CRMID FINID
CRMID1 FINID1
CRMID2 FINID1
CRMID3 FINID2
CRMID4 FINID3
FinTable
FINID1 XXXX
FINID2 YYYY
FINID3 ZZZ
当我创建维度并加入这三个 table 时
最终维度
ClientKey CRMID FINID
1 CRMID1 FINID1
2 CRMID2 FINID1
3 CRMID3 FINID2
4 CRMID4 FINID3
当我将维度 table 加入事实 table 并在事实 table 中添加 ClientKey 时,这会导致重复。
我应该为客户创建二维还是我可以在一维中处理的任何其他方式。
如果您的映射始终是 1:1 或 M:1 CRM Customer:Finance 客户,那么您不必创建两个客户维度。但参与其中的每个人都必须明白,有多个 levels/views 客户,这会使事情复杂化。营销 customer/purchase 决策客户和计费客户之间存在差异是一种比较常见的情况。这些客户属性在主数据管理和数据仓库中组合在一起,形成一个连贯的组合视图,称为一致维度。
在报告 system/data 市场中,您只需定义您的映射 table,并最终在 CRM 客户 ID 的粒度级别定义您的单一客户维度。只需将 FINID 视为客户的非唯一属性
您最终可能不得不确定一个 "parent customer",这样在金融系统粒度上的事实就不会在具有匹配 FINID 的所有 CRMID 中重复数据。如果您可以标记父客户(每个 FinID 一个 CRMID),那么您可以将所有财务事实归因于该父客户 CRMID,并将所有 marketing/sales 事实归因于任何适用的 CRMID。
作为数据仓库,您必须具有唯一的客户 ID。
涉及您的操作系统的解决方案是最好的(即 - 主数据管理),但如果这太难推动(通常是),至少创建一个独特的客户DWH 客户维度中的 ID。
CRMID和FINID都是Customer维度中客户的属性,无论它们之间的当前关系如何(1:1或1:M甚至M:M)。
如 mmarie mentioned your unique customer ID can be a combination of business keys but I strongly advise creating a separate surrogate key since as Ralph Kimball 所述,生产密钥为 unstable\volatile。
另一个原因是您的源系统会随着时间的推移而变化(如您所提到的),即使您的客户没有变化,因此您需要能够在多个系统和多个时期跟踪和报告客户。
假设您要使用 2 型 SCD – 您会想要这样的东西:
- PK(代理,时变)
- CustomerID(代理、永久、DWH 生成、每个客户唯一)
- CRMID(CRM 业务密钥)
- FINID(业务密钥)
- ATTRIBUTE_1
- ATTRIBUTE_2
- START_DATE
- END_DATE
在中央 DIM_CUSTOMERS 中映射所有描述的关系没有问题,请参阅下面示例中的最后 2 条记录
- CRMID FINID
- CRMID1 FINID1
- CRMID2 FINID1
- CRMID3 FINID2
- CRMID4 -1
- -1 FINID2
在我看来,你的问题更多是推动公司不同部门之间的合作,这在 DWH 项目中是一个相当普遍的挑战
DWH 的关键工作是整合组织的独立孤岛,不同部门需要时间了解它们如何影响彼此。
encourage\push 您的财务团队和 CRM 负责人在他们之间同步数据(在提醒他们有关问题后)的最佳方法就是 report\reflecting 垃圾数据(新 CRM 中不存在的客户或财务部门未映射的客户)。
这将
- 对两个玩家施加管理压力以同步实体——在这种情况下,您只需要更新维度中的 -1 键,或者
- 反映问题没有你填的那么重要——这样你的工作就完成了
我是 dwh 的新手,正在为我的公司创建数据仓库。我们有一个客户维度,我们希望 create.However 财务团队客户列表 ID 和名称与 CRM 列表 ID 和名称不同。 我们创建了一个映射 table 但有时对于同一个财务 ID 我们有多个 crmid 我应该如何处理这个...我是否必须创建两个客户维度
CRM Name
CRMID1 XXXX
CRMID2 YYYYY
CRMID3 ZZZ
映射table
CRMID FINID
CRMID1 FINID1
CRMID2 FINID1
CRMID3 FINID2
CRMID4 FINID3
FinTable
FINID1 XXXX
FINID2 YYYY
FINID3 ZZZ
当我创建维度并加入这三个 table 时
最终维度
ClientKey CRMID FINID
1 CRMID1 FINID1
2 CRMID2 FINID1
3 CRMID3 FINID2
4 CRMID4 FINID3
当我将维度 table 加入事实 table 并在事实 table 中添加 ClientKey 时,这会导致重复。
我应该为客户创建二维还是我可以在一维中处理的任何其他方式。
如果您的映射始终是 1:1 或 M:1 CRM Customer:Finance 客户,那么您不必创建两个客户维度。但参与其中的每个人都必须明白,有多个 levels/views 客户,这会使事情复杂化。营销 customer/purchase 决策客户和计费客户之间存在差异是一种比较常见的情况。这些客户属性在主数据管理和数据仓库中组合在一起,形成一个连贯的组合视图,称为一致维度。
在报告 system/data 市场中,您只需定义您的映射 table,并最终在 CRM 客户 ID 的粒度级别定义您的单一客户维度。只需将 FINID 视为客户的非唯一属性
您最终可能不得不确定一个 "parent customer",这样在金融系统粒度上的事实就不会在具有匹配 FINID 的所有 CRMID 中重复数据。如果您可以标记父客户(每个 FinID 一个 CRMID),那么您可以将所有财务事实归因于该父客户 CRMID,并将所有 marketing/sales 事实归因于任何适用的 CRMID。
作为数据仓库,您必须具有唯一的客户 ID。
涉及您的操作系统的解决方案是最好的(即 - 主数据管理),但如果这太难推动(通常是),至少创建一个独特的客户DWH 客户维度中的 ID。
CRMID和FINID都是Customer维度中客户的属性,无论它们之间的当前关系如何(1:1或1:M甚至M:M)。
如 mmarie mentioned your unique customer ID can be a combination of business keys but I strongly advise creating a separate surrogate key since as Ralph Kimball 所述,生产密钥为 unstable\volatile。
另一个原因是您的源系统会随着时间的推移而变化(如您所提到的),即使您的客户没有变化,因此您需要能够在多个系统和多个时期跟踪和报告客户。
假设您要使用 2 型 SCD – 您会想要这样的东西:
- PK(代理,时变)
- CustomerID(代理、永久、DWH 生成、每个客户唯一)
- CRMID(CRM 业务密钥)
- FINID(业务密钥)
- ATTRIBUTE_1
- ATTRIBUTE_2
- START_DATE
- END_DATE
在中央 DIM_CUSTOMERS 中映射所有描述的关系没有问题,请参阅下面示例中的最后 2 条记录
- CRMID FINID
- CRMID1 FINID1
- CRMID2 FINID1
- CRMID3 FINID2
- CRMID4 -1
- -1 FINID2
在我看来,你的问题更多是推动公司不同部门之间的合作,这在 DWH 项目中是一个相当普遍的挑战
DWH 的关键工作是整合组织的独立孤岛,不同部门需要时间了解它们如何影响彼此。
encourage\push 您的财务团队和 CRM 负责人在他们之间同步数据(在提醒他们有关问题后)的最佳方法就是 report\reflecting 垃圾数据(新 CRM 中不存在的客户或财务部门未映射的客户)。
这将
- 对两个玩家施加管理压力以同步实体——在这种情况下,您只需要更新维度中的 -1 键,或者
- 反映问题没有你填的那么重要——这样你的工作就完成了