数据仓库,Bigquery 的数据更新策略
Posted
技术标签:
【中文标题】数据仓库,Bigquery 的数据更新策略【英文标题】:Data warehouse, data update strategy with Bigquery 【发布时间】:2014-06-06 10:17:19 【问题描述】:我们有一个 MIS,其中存储有关客户、帐户、交易等的所有信息。我们正在使用 BigQuery 构建数据仓库。 我对这个话题很陌生,我们应该 1. 每天提取所有客户的最新信息,并将它们附加到带有时间戳的 BigQuery 表中, 2. 还是我们只提取当天更新的客户信息?
第一个解决方案使用大量存储空间,上传数据需要时间,并且有很多重复项。但是我很清楚运行查询。对于第二个解决方案,给定特定日期,我如何获得当天的最新记录?
类似账户数据,简化账户表的例子,这里只有4个字段。
AccountId、CustomerId、AccountBalance、日期
如果我需要每天为一组客户的 AccountBalance 生成报告或图形,我需要知道每个帐户在每个特定日期的余额。那么我应该每天提取每个帐户记录,即使它与前一天相同,还是我只能在余额发生变化时提取帐户?
最佳解决方案或您的建议是什么?我更喜欢第二个,因为没有重复项,但是如何在 BigQuery 中构造查询,性能会成为问题吗? 我还应该考虑什么?有什么推荐给我看的吗?
【问题讨论】:
【参考方案1】:在设计 DWH 时,您需要从业务问题开始,将其转化为 KPI、度量、维度等。 当你有这些地方... 您根据以下一些问题(以及更多问题)选择了技术: 谁是你的用户?他们以什么频率和什么分辨率消耗数据?你的数据源是什么?它们是结构化的吗?数据量是多少?您的数据质量如何?您的数据结构多久更改一次?等等
在选择技术时,您需要考虑以下几点:ETL、DB、调度、备份、UI、权限管理等。
在您定义了所有这些之后...数据架构设计非常简单,并且源自“DWH 的目的”和您的技术限制。
您已经指出了一些需要考虑的要点,但答案是基于您的需求......并且与特定的数据库技术无关。
恐怕您的问题太笼统,如果不深入了解您的需求,就无法回答。
参考您的评论如下: 您的源数据的可靠性如何?您对分析趋势感兴趣还是只对快照感兴趣?您的源系统是否允许“全选”操作?数据量是多少?您的来源允许提取哪些资源(锁、带宽等)? 如果您只需要当前余额的每日快照,并且您的源系统没有限制,
运行每日快照会简单得多。
这样您就不需要管理“增量”、处理数据完整性问题和系统差异等。但是,这种方法可能会对您的源系统和您的网络成本产生不良影响... 如果您确实有资源限制,并且您选择了增量 ETL 方法,则可以
创建“变更日志”表并查询,可以使用row_number() 以查找每个帐户的最新记录。
或者你可以构造一个源帐户表的副本,合并 每天更改现有表。每种方法都有其自身的简单性、成本和资源消耗方面... 希望这会有所帮助
【讨论】:
我认为这里发现的需求非常具体:如果我需要每天为一组客户的 AccountBalance 建立报表或图形,我需要知道每个帐户在每个特定日期的余额。那我应该每天提取每条账户记录,即使和前一天一样,还是只能在余额发生变化时提取账户? 参考您的评论编辑了我的答案以上是关于数据仓库,Bigquery 的数据更新策略的主要内容,如果未能解决你的问题,请参考以下文章