当前位置: 首页 > 知识库问答 >
问题:

使用现有模式将表数据从一个BigQuery表流式传输到另一个BigQuery表

阴福
2023-03-14

我有两个BigQuery数据集:dataset_adataset_b

这些数据集中的每一个都包含一个表,例如dataset_a_tabledataset_b_table

dataset_a_table包含流数据,我想将数据从dataset_a_table流式传输到dataset_b_table

我有dataset_a_table类型TableSchema的架构。如何将流行从一个表复制到另一个表并保留现有架构

到目前为止,我已经研究了BigQuery的insertAll方法,但是我有点不确定在哪个数据结构中获取行,以及在插入新表时如何指定TableSchema。

我希望能就如何做到这一点提供一些指导。谢谢

共有1个答案

壤驷泓
2023-03-14

方法1:如果dataset_b_table需要简单地镜像dataset_a_table,例如因为您对两个数据集具有不同的用户权限,您可以考虑将dataset_b_table设置为视图而不是表。BigQuery中的视图跨数据集工作:

CREATE VIEW dataset_b.dataset_b_view AS SELECT * FROM dataset_a.dataset_a_table

方法2:如果您确实希望dataset_b_table具有与dataset_ a_table相同的模式,则可以使用BigQuery本地“传输”功能。(“转让”

方法 3:如果dataset_b_table具有与dataset_a_table不同的架构,或者dataset_b_table已包含数据,并且您希望合并来自dataset_a_table的数据,则需要某种增量逻辑。假设您的dataset_a_table具有某种“created_at”字段(也假设没有更新记录),那么您可以采用如下增量负载

INSERT INTO dataset_b.dataset_b_table
SELECT
   column_a, column_b, column_c, updated_at
FROM dataset_a.dataset_a_table
WHERE updated_at>(SELECT max(updated_at) FROM dataset_b.dataset_b_table)

然后,您可以根据您的时间要求安排它运行,每天、每小时或每几分钟一次。您可以使用BigQuery本机调度功能或您自己的逻辑。

如果您需要以毫秒为单位的实际流,并且视图方法不适合您,那么您将需要首先使用填充dataset_a_table的源,因为BigQuery不支持触发器。

 类似资料:
  • 我目前正在尝试轻松地将消息从一个Kafka集群上的主题流式传输到另一个集群(远程)- 所以假设WordCount演示在另一台PC上的一个Kafka-Instance上,而不是我自己的PC上。我也有一个Kafka-Instance在我的本地机器上运行。 现在我想让WordCount演示在包含应该计算单词的句子的Topic(“远程”)上运行。 然而,计数应该写入我本地系统上的Topic而不是“远程”T

  • 问题内容: 我有2个不同的表,但各列的命名略有不同。我想从一个表中获取信息,然后将其放入另一个表中。仅当表1中的“信息字段”不为null时,才需要将表1中的信息放入表2中。表2在创建任何东西时都有一个唯一的ID,因此插入的任何东西都需要获得下一个可用的ID号。 表格1 表2 问题答案: 这应该工作。您无需担心Table2中的identify字段。

  • 我试图创建一个新的聚集表< code>db.new_table,它与BigQuery中的现有表< code>db.old_table具有相同的数据和模式。现有表有一个伪列< code>_PARTITIONTIME,我希望新表也有这个< code>_PARTITIONTIME伪列。 我尝试过使用DDL,查询如下: 但是它失败了,因为我们无法使用后跟。如 https://cloud.google.co

  • 问题内容: 我试图将数据从一个表插入到另一个表,这是我收到的错误消息: 错误:将INERT插入到content2(d1,d2,d3)值(John,Doo,24); 错误:在字段列表中插入未知列’John’错误:INSERT INTO content2(d1,d2,d3)VALUES(Mary,Moe,36); ‘字段列表’中的未知列’Mary’错误:INSERT INTO content2(d1,

  • 我正在将数据流式传输到BigQuery 300行,大约每分钟3次。插入一周前停止工作,出现以下错误: 谷歌。API。请求。执行期间遇到RequestError错误。重试可能会解决问题。[503]错误[消息[执行过程中遇到错误。重试可能会解决问题。]位置[-]原因[备份错误]域[全局]] 我的服务在两个月内运行良好,自从我们开始使用它以来,没有任何代码更改。 这是调用BigQuery的代码: 还有其

  • 我有一个事件数据流和另一个模式数据流。模式是由用户在运行时提供的,它们需要通过一个Kafka主题来提供。我需要使用flink-cep在事件流上应用每个模式。在我事先不知道模式的情况下,有没有办法从数据流中获取PatternStream?