Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-我应该将目标存储在历史记录中还是加入BI工具?什么更有效率?_Sql - Fatal编程技术网

SQL-我应该将目标存储在历史记录中还是加入BI工具?什么更有效率?

SQL-我应该将目标存储在历史记录中还是加入BI工具?什么更有效率?,sql,Sql,编辑-TL;DR是否应将静态冗余元数据存储在历史记录中,或在数据提取时加入历史记录以进行完整数据刷新 例如,假设我有一个按月份和年份列出历史销售信息的表,该表在产品、州和地区级别进行汇总 现在假设我有特定于产品的“目标”,我想应用于所有当前和历史销售。所有月份、年份、州和地区的目标都是相同的 对于(a)每次刷新数据时是否连接到目标表并使用历史记录存储目标,或者(b)每次刷新数据时是否将整个历史记录连接到BI工具中的目标表,是否有一般最佳做法 如果目标存储在历史记录中,则需要一次历史记录来更改目标

编辑-TL;DR是否应将静态冗余元数据存储在历史记录中,或在数据提取时加入历史记录以进行完整数据刷新

例如,假设我有一个按月份和年份列出历史销售信息的表,该表在产品、州和地区级别进行汇总

现在假设我有特定于产品的“目标”,我想应用于所有当前和历史销售。所有月份、年份、州和地区的目标都是相同的

对于(a)每次刷新数据时是否连接到目标表并使用历史记录存储目标,或者(b)每次刷新数据时是否将整个历史记录连接到BI工具中的目标表,是否有一般最佳做法

如果目标存储在历史记录中,则需要一次历史记录来更改目标

我会很感激任何想法或讨论,因为这是我经常遇到的一个场景

在过去,我使用了第三种选择,它涉及在流程的最后连接多个维度表,这显然是低效的,因此我在当前流程中删除了它,但现在我发现自己有一个有任何更改的快照历史


非常感谢。

这取决于您在提到“最佳实践”时的想法

在历史记录中保留目标值更有效,因为您只需要更新没有目标值的单元格上的值。每次加入都需要资源


但是,有一个重要的商业问题涉及到,你应该考虑并很可能把这个问题从这个网站上拿出来。插入的事务是否可以延迟?如果是,这意味着“动态”的联接方法将考虑新事务,而保存到历史方法的目标将不会!很多时候,目标会影响员工奖金……这是一件重要的事情。为了确保这一点,您必须仔细检查公司/客户的规格。在此之后,如果你仍然有选择,你可以从性能方面考虑设计。

1.你的目标是看到目标的数量/百分比是否满足?你到底想用这些连接做什么?2.如果月/年/州/地区的目标相同,是否仅受产品影响?在这种情况下,它可以只通过product表中的一个字段,您可以创建一个返回(1)中所述含义的视图,如果这是您想要的want@GeorgeMenoutis好问题。BI工具显示实际值与目标值。我只是将目标传递给BI工具。因此,连接只是在每次单独刷新期间将适用的目标添加到历史记录表中的每一行,或者在每次将数据传递到BI工具时将适用的目标添加到整个历史记录表的每一行。我应该澄清,每次刷新发送给BI工具的表是累积的,即BI工具每次刷新时都会对数据进行完整刷新,而不是增量刷新。@GeorgeMenoutis关于#2,我同意目标可以在产品表中,但我应该在历史记录中包含目标,还是在完全刷新BI工具之前只连接目标?换句话说,应该是连接目标==>Storein history table==>BI“\U in”table,还是在历史记录表中存储除目标以外的所有目标==>join targets==>BI”\U in”table?这几乎正是我想要的。谢谢我对性能非常感兴趣,因此存储在历史记录中听起来是正确的方法;特别是在适当备份和测试的情况下,可以接受对整个历史记录进行一次拍摄目标更新。