数据仓库 - 具有多对多关系的缓慢变化的维度

2023-12-21

举个例子,假设我有一个包含两个维度和一个度量的事实表

事实货币表


项目密钥 int

PersonKey 整数

现金金额


两个维度的定义如下:

DimProject(0 型维度 - 即静态)


项目密钥 int

项目名称 varchar(50)


DimPerson(第 2 类缓慢变化的维度)


PersonKey 整数

PersonNaturalKey int

人名 varchar(50)

有效开始日期日期时间

有效结束日期日期时间

是当前位


到目前为止非常简单。现在我将介绍一个人员类别的概念。

昏暗类别


类别键 int

类别名称 varchar(50)


并在 DimPerson 和 DimCategory 之间建立 M2M 关系

桥人类别


PersonKey 整数

类别键 int


所以 - 人们可以有 1..n 个类别。

我的问题是 - 由于人是一个缓慢变化的维度,当一个人的名字发生变化时,我们添加一个新的人行并更新我们的有效日期和当前标志,没什么大不了的。

但是我们如何处理此人的类别呢?每次弹出新的个人版本时,我们是否需要向桥接表添加更多行?

作为推论,如果一个人的类别发生变化,是否意味着我们需要在人员表中创建一个新行?


关于您的主要问题:我想说您需要在类别表中添加类别(可能是从老人行复制它们)。这样你就可以继续对新的(改变的)状态下的人进行分类。

关于类别的更改:我不想添加人员行,而是在类别表中添加初始有效期和到期日期。这样每个类别都可以独立更改。但您需要小心不要进行时间点查询,因为您可能会过多计算类别

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据仓库 - 具有多对多关系的缓慢变化的维度 的相关文章

随机推荐

  • 确定 WindowsIdentity 实例的嵌套组

    假设我有一个实例WindowsIdentity并想要获取它所属的组 我使用以下代码来获取列表 WindowsIdentity identity null get identity here identity Groups Translate
  • 检测到零个或 2 个或多个 [DropdownMenuItem] 具有相同的值

    我是 Flutter 新手 但我正在尝试创建一个 DropdownButtonFormField 但它不起作用 我收到一条错误消息 提示我有重复的值 有趣的是 我没有包含重复值的列表 我在 SO 上发现了一个类似的问题 解决方案说用一个值启
  • 在 Eclipse 中,我可以同时拥有多个控制台视图,每个视图显示不同的控制台吗?

    我正在开发一些在调试模式下记录到控制台的应用程序 我想从 Eclipse 内部运行和调试它们 并同时查看每个的控制台 但是 我有一个控制台选项卡 一次显示一个控制台输出 有没有办法可以将控制台拆分为多个视图 以便可以并排控制台输出 Yes
  • 以 Rails 4 形式将

    我有一个 Rails 4 表单 它在表单页面上使用 AJAX 构建部件列表 一旦零件清单建立在 ul 我想将列表作为 params 哈希中的参数值数组提交 My form div h2 prohibited this service fro
  • 如何使用下载链接从 Azure Blob 存储下载文件

    我制作了一个 Azure 云服务 您可以在其中使用 Blob 将文件上传和删除到云存储 我成功编写了一个方法 您可以从云服务中删除上传的 blob public string DeleteImage string Name Uri uri
  • 使用 Xamarin Forms 打开 PDF

    我有一个 pdf 文件 已使用 xamarin 表单添加为 Android 和 IOS 项目的 AndroidAsset 和 BundleResource 我只是希望能够使用设备默认的任何 pdf 查看器从任何设备打开这些文件 本质上 我只
  • 将 error_info 添加到 std::exception

    我正在整合boost exception到现有代码中 部分代码现在使用BOOST THROW EXCEPTION 但有些人可能仍然会抛出标准std exception 我想在中间捕获站点添加 error info 根据文档 如果异常是boo
  • Base64 电子邮件附件无法上传

    我正在使用以下脚本http stuporglue org recieve e mail and save attachments with a php script http stuporglue org recieve e mail an
  • Dlib(支持 GPU)无法正常工作,不确定?

    我的系统配置 Windows 10 Nvidia 940mx 2GB GDDR5 GPU 8GB RAM 第 8 代 i5 安装的软件 CUDA工具包9 0 cuDNN 7 1 4 在使用以下命令安装上述要求后 我已成功安装了具有 GPU
  • C# string.Substring() 或 string.Remove() [重复]

    这个问题在这里已经有答案了 我想知道使用是否是更好的做法 var a b Substring 6 Or var a b Remove 0 6 哪一个更高效 更快 显然 substring 有更多选项可供选择 但没有什么是 Remove 不能
  • NGINX/JENKINS:您的反向代理设置似乎已损坏

    我已经尝试了至少六个关于如何让 NGINX 与 Jenkins 一起工作的示例 我最近的 NGINX 配置基于以下示例 https wiki jenkins io display JENKINS Running Jenkins behind
  • 删除 Windows 性能计数器类别

    我有一个自定义性能计数器类别 Visual Studio Server Explorer 拒绝删除它 声称它 未注册或属于系统类别 如果不以编程方式执行此操作 如何删除该类别 有我可以删除的注册表项吗 据我所知 有没办法安全地删除它们 除非
  • WCF:System.Net.SocketException - 通常只允许每个套接字地址(协议/网络地址/端口)使用一次

    我有一个 WCF 服务和一个 Web 应用程序 Web 应用程序以连续方式 也称为轮询 调用此 WCF 服务 在我们的生产环境中 我很少收到此错误 因为 这是一个内部活动 用户不知道何时抛出此错误 无法连接到http localhost Q
  • 键转义序列不适用于 tmux

    我一直在使用iTerm2 and vim一阵子 当我需要使用组合键时 我遇到了一些问题 例如CTRL F10 and SHIFT F10里面一个vim会话在里面运行iTerm2 定义键绑定非常简单 例如
  • JavaScript 中的逻辑运算符——如何使用它们?

    我不明白怎么办 and 适用于布尔值和其他数据类型 你如何使用它们 JavaScript 中的所有值要么是 真 要么是 假 a b计算结果为第一个假操作数 a b计算结果为第一个真实操作数 两个运算符都不会计算返回后的任何操作数 如果所有操
  • 永远运行不完的正则表达式

    我写了一个小而朴素的正则表达式 它应该查找括号内的文本 re search r s name 我知道由于某些原因这不是最好的方法 但它运行得很好 我正在寻找的只是一个解释 解释为什么对于某些字符串 这个表达式开始花费指数更长的时间 然后永远
  • Rails 3 - 多个控制器之间共享的代码 - 将其放在哪里?

    我有两个控制器需要一段代码 但不是全部 这个方法属于哪里呢 我读过有关帮助程序的内容 但那些似乎是用于与视图相关的代码 有人提出了 lib 文件夹 但这似乎离控制器逻辑 太远 我在视图或模型中不需要它 有人遇到过此类问题吗 有三个选项 最简
  • 如何让 Gitlab 6.5 在 Apache 2.4 代理下显示其图标?

    我无法修复由 Apache 2 4 代理的 Gitlab 上的图标 我的失败可能是因为我没有使用乘客 乘客提供了自己的一系列更深层次的问题 但我采取了在代理下运行它的所有步骤 gitlab 我也跑了 sudo u git H bundle
  • 如何重写 CursorAdapterbindView

    我正在尝试显示来自Cursor in a ListView 每行包含一个ImageView and a TextView 我有一个CustomCursorAdapter延伸CursorAdapter in bindView我评估来自光标的数
  • 数据仓库 - 具有多对多关系的缓慢变化的维度

    举个例子 假设我有一个包含两个维度和一个度量的事实表 事实货币表 项目密钥 int PersonKey 整数 现金金额 两个维度的定义如下 DimProject 0 型维度 即静态 项目密钥 int 项目名称 varchar 50 DimP