一对多查找,转换为一对一维度

Posted

技术标签:

【中文标题】一对多查找,转换为一对一维度【英文标题】:One to many lookup, converted to a one to one dimension 【发布时间】:2018-11-20 01:02:33 【问题描述】:

我正在努力弄清楚如何将事务数据库中的一对多表结构转换为数据仓库的一对一维度。

事务数据库中的数据结构如下:

根记录(Parent_ID)

查找表“许多 Parent_ID”(Patent_ID、Child_ID)

参考表(Child_ID、姓名)

加入我的参考表会带回一个如下所示的数据集:

╔═════════════╦═══════════╦══════════╦════════════╗
║ Root_ID     ║ Root_Code ║ Child_ID ║ Child_Name ║
╠═════════════╬═══════════╬══════════╬════════════╣
║           1 ║ 1000      ║       22 ║  Name 1    ║
║           1 ║ 1000      ║       23 ║  Name 2    ║
║           1 ║ 1000      ║       24 ║  Name 3    ║
║           1 ║ 1000      ║       25 ║  Name 4    ║
║           2 ║ 1150      ║       67 ║  Name 5    ║
║           2 ║ 1150      ║       68 ║  Name 6    ║
║           2 ║ 1150      ║       69 ║  Name 7    ║
║           3 ║ 2019      ║       11 ║  Name 8    ║
║           3 ║ 2019      ║       12 ║  Name 9    ║
║           5 ║ 2010      ║       91 ║  Name 10   ║
║           5 ║ 2010      ║       92 ║  Name 11   ║
║           5 ║ 2010      ║       93 ║  Name 12   ║
║           5 ║ 2010      ║       94 ║  Name 13   ║
║           5 ║ 2010      ║       95 ║  Name 14   ║
║           5 ║ 2010      ║       96 ║  Name 15   ║
║           6 ║ 5010      ║       33 ║  Name 16   ║
╚═════════════╩═══════════╩══════════╩════════════╝

我在维度中追求的是知道,Root_ID (1) 具有 Child_ID(22,23,24,25) 的值,并且能够使用维度上生成的键来引用它。

请记住,我永远无法预测会有多少子记录, 所以在我的维度中创建 X 列不是一种选择。

我确信比我聪明的数据仓库头脑知道这通常是如何处理的。

为了说明想要的结果:

事实记录(Dimension_Root_Key = 1)

维度(键 1、名称 1、名称 2、名称 3、名称 4)

【问题讨论】:

【参考方案1】:

原来我应该多学习一点。我已经学会了“桥接”表的命名法。

知道 kimball 小组有一些关于如何实现我想要实现的精彩演示。如需进一步阅读Bridging tables

【讨论】:

以上是关于一对多查找,转换为一对一维度的主要内容,如果未能解决你的问题,请参考以下文章

如何在pyspark中查找Dataframe列是一对一或一对多映射?

数据立方建立-如何实现一对多,多对多

将平面集合转换为一对多 C#/Linq

查找2列之间的一对一/一对多关系

如何使用 AppSync GraphQL 转换为双向一对多 @connection 执行字段级别 @auth?

如何使用 AppSync GraphQL 转换为一对多 @connection 执行 @auth?