Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >BigQuery -事实表更新逻辑

BigQuery -事实表更新逻辑
EN

Stack Overflow用户
提问于 2016-10-05 09:08:36
回答 2查看 1.6K关注 0票数 4

我正致力于在性能和成本分析的大查询上构建原型,

Requirements

为销售业务(激励措施、领导、权利、预测、市场营销、领导等)建立一个DW (星型模式)数据,用于报告和高级分析目的。每天从客户关系管理和其他上游销售/营销系统中批量装载数据。每天的数据量约为5 TB数据,90%的附加数据和10%的数据具有更新的旧指标(直到前7天)。

设计:

  • 创建日期分区的大查询事实表--很多查询是 趋势和时间序列类型查询。
  • 创建聚合表,用于报告和其他重复查询/仪表板,以限制扫描量和降低成本。

摄食逻辑

  1. 上游ETL和cron作业,在Google存储中丢弃准备好的文件(已经实现了第三方和其他业务逻辑)。
  2. 更新的临时表(ODS),因为分区表不能用DML更新,所以复制持续7天的分区临时表(ODS)来处理更新。(复制操作免费) --每天创建一个新的临时表,以便更容易地复制回事实表。
  3. 如果源文件中存在记录,则在temp表-- DML操作中更新记录。
  4. 旧日的新记录,附加到相应的日临时表中。
  5. 截断并替换(复制)从临时表到DW事实表的最后7天分区。-复制操作,不需要任何费用。
  6. 将新数据(占总数据的90%)附加到DW事实表-数据加载不需要任何费用。

问题

对于给定的需求,是否有更好的设计方案?

DML操作性能-我需要更新500 TB 1 TB的数据,在BigQuery中使用DML操作对性能有什么影响?

如何评估和预测更新和复制操作性能?

EN

回答 2

Stack Overflow用户

发布于 2019-12-04 17:06:02

关于星型模式,在BigQuery中规范化数据的首选方法是使用嵌套和重复结构。海事组织,您可以看到BigQuery是一个非常强大的数据库,可以用作数据仓库。

对于您的时间序列需要,您可以使用摄入-时间分区表

不用cron作业来查询,您可以在云函数中使用调度查询GCS触发器。它们可以在GCS中添加新文件时触发。

关于您的摄入逻辑,我建议使用云作曲家,即GCP中气流的集成。

您将能够使用BigQuery算子完成您所说的所有操作。使用这个操作符,您将不需要使用DML来创建表,因为您可以使用BigQueryCreateEmptyTableOperator。使用气流,你就不需要工作了。

关于成本,您可以使用定价计算器

我希望这能帮到你!

票数 1
EN

Stack Overflow用户

发布于 2019-12-07 10:04:57

这个工作流几乎与我在GCP上为销售/营销/产品数据设置的工作流程相同。

我的工作流程由Python、BigQuery标准SQL、(GCP实例)和组合组成。

我们的工作流是在python类中本地开发的,它处理ETL复制所需的所有步骤。大多数复制的实际步骤只是bigquery中的DML语句,但是我们依赖python类来实现标准化、代码重用和执行顺序/日志记录。

我们将其打包到一个码头容器中,并将其放到Google云注册表中。

我们使用(Airflow) Kubernetes Pod操作符来运行容器中的python文件。这很有帮助,这样我们就不必担心在维护虚拟机时出现的任何开发操作问题。

气流是很好的调度和依赖图。Bigquery中没有一种方法可以轻松地调度查询和维护聚合表的执行顺序。有了气流,一旦ETL管道完成,您就可以轻松地启动这些聚合查询。

我不能百分之百确定您可以期望的成本,但是在BigQuery中存储和处理是相当便宜的。作曲家和库伯奈特斯是花在我们身上的大部分。

虽然这个工作流需要几天的时间才能建立起来,但是当您需要使用销售数据进行预测/规范分析时,它就变得更加强大了。使用python/Airflow,您可以完成所有的etl、运行聚合查询、从R或scikit学到的任何机器学习分析,然后按照您想要的任何时间顺序将结果返回给BigQuery和您的客户关系管理系统。

如果你想要一些代码样本或帮助在GCP网站上快速启动,你可以DM我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39879961

复制
相关文章
PrimeNG TreeTable异步加载子树[通俗易懂]
1. PrimeNG官网:https://www.primefaces.org/primeng/#/treetable
全栈程序员站长
2022/09/01
8150
Layui数据表格的动态加载
Layui是一个很好的前端框架,很多人都会用到,layui的数据表格这个就是从数据库查询出来的数据渲染到表格上。
PHY_68
2020/10/28
2.8K0
Layui数据表格的动态加载
Windows凭据不工作
如果不是敲错IP、用户名、密码,报凭据不工作,一般情况下执行这几句命令后重启远程服务就正常了
Windows技术交流
2021/06/15
6.2K0
RDP你的凭据不工作/RDP密码不刷新
如果你不属于上述的情况,请查看:https://learn.microsoft.com/zh-cn/windows-server/remote/remote-desktop-services/troubleshoot/rdp-error-general-troubleshooting#check-whether-a-group-policy-object-gpo-is-blocking-rdp-on-a-local-computer
阿龙w
2022/12/02
12.8K0
RDP你的凭据不工作/RDP密码不刷新
预加载之——js 文件如何实现只加载不执行
性能优化很常见的一个方式是提前加载文件,本文讨论如何在其他依赖未加载情况下提前加载一个.js文件。
前端知知
2022/09/29
6.2K0
128 天不上班不工作:照样领工资 9.5 万
原告:北京和风畅想科技有限公司 被告:杜某,男,1988年出生 和风畅想公司向法院提出诉讼请求: 1、判决无须撤销《解除劳动关系通知书》,双方无需继续履行劳动合同; 2、判决和风畅想公司无须向杜某支付自2020年2月29日至2020年7月5日期间工资收入损失95172.41元。 事实和理由: 2020年11月2日,和风畅想公司收到北京市朝阳区劳动人事争议仲裁委员会作出的京朝劳人仲字[2020]第16281号裁决书(以下简称“第16281号裁决书”),和风畅想公司不服该裁决。 不服裁决理由: 一、第1628
云头条
2022/10/09
2.3K0
128 天不上班不工作:照样领工资  9.5 万
「过期不候」,有生命周期的 TiDB 数据表
近日,由 TiDB 社区主办,专属于全球开发者与技术爱好者的顶级挑战赛事——TiDB Hackathon 2020 比赛圆满落幕。今年是 TiDB Hackathon 第四次举办,参赛队伍规模创历届之最,共有 45 支来自全球各地的队伍报名,首次实现全球联动。经过 2 天时间的极限挑战, 大赛涌现出不少令人激动的项目。
PingCAP
2021/03/12
4410
JVM | 类加载是怎么工作的
在程序世界的大海洋中,类就像是构建一切的基石。它们是构建Java应用的原材料,类加载器则是这个世界的建筑工人。他们负责将构建城市所需的材料搬运到工地(JVM)。了解类加载器的工作原理,就像了解城市建设的过程,能够让我们更好地理解和控制程序的运行。现在,让我们深入探索JVM的类加载器,解析它的奥秘,开启这趟神奇的旅程吧!
kfaino
2023/09/29
3430
JVM | 类加载是怎么工作的
webpack的watch选项不工作原因分析
今天尝试将以前创建的一个前端项目改为webpack编译,该项目使用了VueJS v2.0,原来是编写gulp脚本完成构建的。很自然就直接用vue-cli来搞定这个事了。 使用vue-cli创建项目 因为以前用过webpack,而vue-cli创建的项目底层其实还是使用webpack构建的,所以使用起来还是很简单的。 # 使用yarn,这个命令是跟npm兼容的,但速度快很多,而且可以保证依赖包版本的一致性,强烈推荐 yarn install --global vue-cli vue-cli webpack v
jeremyxu
2018/05/10
4.2K0
常用功能加载宏——工作表目录
在一个工作簿中,如果工作表太多了,要选中需要操作的Sheet还挺麻烦的。对于Excel用的不大熟练的人,只会按左下角的方向箭头,然后用眼睛去查找,有的人为了让Excel显示多一些工作表名称,还会把右下角的滚动条拉的只剩一点点,造成操作Sheet都不方便。
xyj
2020/07/28
9930
常用功能加载宏——工作表目录
mongo minio on openebs 工作量不饱满教程
作者 | 老根 - laf框架作者 笔者在开发laf(https://github.com/lafjs/laf)的过程中依赖了mongo minio这些组件,本文就如何对这些组件最佳实践来做个介绍。
sealyun
2022/05/16
3.9K0
mongo minio on openebs 工作量不饱满教程
Java中类加载器的工作原理
一说Java代码的执行, 接触过Java代码的同学肯定会想到: 编写, 编译, 运行这三个阶段. 其中:
用户7353950
2022/06/23
5360
Java中类加载器的工作原理
常用功能加载宏——工作簿目录
要创建工作簿的目录,其实就是遍历获取所有的文件,然后过滤一下,再增加超链接就可以:
xyj
2020/07/28
9570
常用功能加载宏——工作簿目录
为什么不建议你国庆前找工作
最近在面试过程中,以上内容就是简历的问题。打算换工作或正在找工作的朋友,可以参考一下。
李才哥
2019/09/25
4K0
C++都从事哪些工作能挣钱不?
java大行其道的今天我们来谈谈c++,现在学c++的人越来越少了。问题在哪?互联网盛行的年代,能吸引眼球的就是能赚钱的。所以一看招聘,发现做java开发是抢手货,起步价比c++高。 再则学习c++难度都比其它语言较高。而它的学习难度,太复杂性。现在c++的使用范围比以前已经少了很多,java、C#、python等语言在很多方面已经可以代替c++。但是也有很多地方是其他语言完全无法替代的,主要集中在需要运行效率比较高的行业,比如游戏、高效的服务器,网络等。 一、游戏开发 游戏开发都有哪些,引擎开发(
程序员互动联盟
2018/03/15
2.8K0
C++都从事哪些工作能挣钱不?
远程桌面失败:你的凭据不工作
  然后按照以下操作,将默认设置“仅来宾—本地用户以来宾身份验证”,更改为“经典:本地用户以自己的身份验证”。
chenchenchen
2019/09/03
9.8K0
远程桌面失败:你的凭据不工作
常用功能加载宏——拆分工作表
有合并工作表,自然也离不开拆分工作表,将一个总表,按照某一列的内容拆分为多个工作表,然后可以再结合前面的一个工作簿的工作表另存为工作簿功能,就可以生成多个工作簿进行分发了:
xyj
2020/07/28
2.4K0
常用功能加载宏——拆分工作表
常用功能加载宏——一个工作簿的工作表另存为工作簿
前面实现了多个工作簿和合并到一个工作簿的功能,反过来,将一个工作簿里的工作表,另存为多个工作簿,然后分发给不同的人,应该也是经常会碰到的。让我们看看使用VBA如何实现:
xyj
2020/07/28
1.6K0
常用功能加载宏——一个工作簿的工作表另存为工作簿
Activiti工作流框架学习笔记(一)之通用数据表详细介绍
低于5.6.4的MySQL版本不支持时间戳或毫秒级的日期。更糟糕的是,某些版本在尝试创建此类列时将引发异常,而其他版本则不会。执行自动创建/升级时,引擎将在执行DDL时更改它。使用DDL文件方法时,既可以使用常规版本也可以使用其中带有mysql55的特殊文件(这适用于低于5.6.4的任何版本)。后一个文件将具有没有毫秒精度的列类型。
朱季谦
2020/01/08
4.1K0
Activiti工作流框架学习笔记(一)之通用数据表详细介绍
点击加载更多

相似问题

角4动画在init组件上执行。

11

子闪电组件init在父init salesforce之前执行

20

在git init上执行脚本

24

React/material上升按钮在init上执行onTouchTap

36

如何跳过在可重用容器上执行init脚本?

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文