在 BigQuery 中附加时忽略重复记录

2024-01-18

我们正在将数据从 MySql 写入 BigQuery。我们设定了一些指标,例如

  • 插入 - 如果是第一次添加记录,则在指示符字段中用“I”保存
  • 更新 - 如果记录有一些更新的数据,则在“指示符”字段中将其保存为“U”,如果未更改则忽略重复记录。

但在“更新”的情况下,它也会写入重复的记录,甚至没有改变。以下是我们当前用于将数据插入 BigQuery 表的查询。我们可以对此查询进行哪些更改?

"insert into `actual_table` 

(
    Id,
   ...
)
select
temp.Id,
...
case when actual.Id is null then 'I'
when actual.Id is not null and actual.field1<>temp.field1 then 'U'
end as Indicator,
FROM `temp_table` temp 
left outer join `actual_table` actual
on temp.Id= actual.Id"

实际表是 BigQuery 中的表,而临时表是 BigQuery 上的临时表。每次我们从 MySql 读取数据时,都会将其存储在临时表中。

Thanks


我喜欢 BigQuery 的另一个选项是使用合并 DML 进行插入,如果这个套件适合您的用例,那么这是一个非常简洁的解决方案。您可以在此查看更多详细信息link https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax#merge_statement.

sql示例:

MERGE
    `mytable` as tgt
USING
    `mytable` as src
ON FALSE
WHEN NOT MATCHED AND src._PARTITIONTIME = '2019-02-21'
THEN INSERT (_PARTITIONTIME, fields...) VALUES (_PARTITIONTIME, fields...)
WHEN NOT MATCHED BY SOURCE AND tgt._PARTITIONTIME = '2019-02-21'
THEN DELETE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 BigQuery 中附加时忽略重复记录 的相关文章

随机推荐

  • JavaScript“未捕获的类型错误:对象不是函数”关联性问题

    代码如下 a href hello a 这将抛出一个 未捕获的类型错误
  • 将文件从文件夹和子文件夹复制到另一个文件夹并保存文件夹的结构

    我根据某些条件创建了一个文件列表 我只想将该列表中的文件复制到新文件夹和子文件夹 例如原始文件夹中的文件 文件夹的结构为年 月 日 这是我尝试过的代码 from dir lt J Radar data Beit Dagan RAW 2018
  • Chef Solo 错误:找不到食谱

    海伊 我正在尝试在 Amazon EC2 Linux AMI 上使用 Chef Solo 运行 MongoDB 配方 我已经安装了 Omnibus 在 rb 文件中设置了说明书路径 并在 json 文件中设置了运行列表 我已将 mongod
  • python oauth 2.0新的fbsr facebook cookie,验证验证码时出错

    我正在尝试使用新的 fbsr appID cookie 我使用以下函数来解析它 但是当我随后尝试获取 access token 时 我收到 验证验证码时出错 消息 这些解析函数有问题吗 如果不是 可能是什么问题 更多信息 我设法使用 oau
  • 为什么我不能指定环境变量并在同一命令行中回显它?

    考虑这个片段 SOMEVAR AAA echo zzz SOMEVAR zzz zzz AAA zzz 这里我设置了 SOMEVAR to AAA在第一行 当我在第二行回显它时 我得到了AAA内容如预期 但是 如果我尝试在同一命令行上指定变
  • backbone.js 用 CoffeeScript 保存

    我在咖啡脚本中定义的主干视图上有以下方法 saveObservation gt self observation new Observation ParentUid questionUid Status N a Text Change to
  • 如何使用分布排序(基数排序等)对字符串进行排序?

    我知道如何使用基数排序对整数进行排序 但如何使用它来对字符串进行排序呢 或者浮点数 如果您忽略浮点数的一些特性 例如无穷大 非数字值和零的两种不同表示形式 则可以使用基数排序或任何其他分布排序对浮点数进行排序 IEEE 754 2008 h
  • 与 GCC 和 -lm 链接不会在 Ubuntu 上定义 ceil()

    我目前正在使用GCC编译 我需要使用
  • 哪个 paypal api 可以获取所有交易

    对大量 paypal API 感到非常困惑 我想知道我是否可以以某种方式获取交易 输入和输出 就像我通过网络界面导出到 csv 一样 我在这里 REST API https github com paypal PayPal Ruby SDK
  • 加载sequelize中关系为空的项目

    我是续集的新手 我正在尝试加载用户表中任务关系为空的所有条目 但它不起作用 这是我尝试过的 const express require express const app express const Sequelize require se
  • 从mysql的大表中快速选择随机行

    从大型 mysql 表中选择随机行的快速方法是什么 我正在使用 php 工作 但我对任何解决方案都感兴趣 即使它是另一种语言 获取所有 id 从中随机选择一个 然后检索整行 如果您知道 id 是连续的且没有漏洞 则可以获取最大值并计算随机
  • 如何阻止 Spring 吞咽异常?

    当服务器端出现故障时 因为数据库和应用程序不同步 而不是出现错误 并且应用程序崩溃 spring tomcat 似乎会吞下异常并假装什么也没发生 你可以说我疯了 但如果程序灾难性地失败 我希望它实际上灾难性地失败 有什么办法可以关闭这种行为
  • Pygame.MOUSEBUTTONDOWN 坐标关闭,除非我在 xwindows 中

    如果我从控制台加载 pygame 代码 它会错误地读取触摸屏坐标 但如果我启动到 xwindows 它会正确读取它们 我已经进入并校准了触摸屏 如果我从控制台运行 evtest 我将得到正确的坐标 只有在 python 中 它才会返回错误的
  • 监听EventDispatcher的所有事件类型

    在Flex中 是否可以监听一个对象的所有事件类型IEventDispatcher addEventListener的第一个参数是类型 它是一个字符串 在许多情况下 文档并不清楚它触发的事件类型 我想附加一个通用侦听器来检查事件 我认为你必须
  • 我可以在 ANDROID 中将 mp3 文件转换为文本吗?

    Android 是否支持以下功能 将包含语音的 mp3 文件转换为适当的单词 然后将结果写入 TextView 或 Toast 或其他任何内容 我不是在谈论使用语音识别器 我的意思是 mp3 中的文件必须从 SD 中选取 未实时记录和分析
  • 谷歌地图v3更改信息窗口的大小

    我想设置信息窗口的大小以适合其中的内容 标准信息窗口太宽我尝试使用 maxWidth 但它似乎不起作用 调整信息窗口大小的最佳方法是什么 参见代码 window setContent inspStates i name br total i
  • 如何在Javascript中为小数添加小数点

    我尝试将 0 10 添加到 23 50 但得到 23 50 10 而不是 23 60 my code console log parseFloat 23 50 parseFloat Math random 0 10 0 01 toFixed
  • Nativebase - 单击输入时如何显示日期选择器?

    我在用本地库成分 我有Form具有以下字段
  • 在 onTouch (Android) 上获取颜色(像素)信息

    有没有办法获取像素 x y 的颜色并检查其是否为红色 如果是红色则发送触摸事件 我希望它在后台运行 并且它应该始终检查该像素 x y 的颜色 一旦它变成红色 就应该模拟触摸事件 您可以从以下示例中获取值 final Bitmap bitma
  • 在 BigQuery 中附加时忽略重复记录

    我们正在将数据从 MySql 写入 BigQuery 我们设定了一些指标 例如 插入 如果是第一次添加记录 则在指示符字段中用 I 保存 更新 如果记录有一些更新的数据 则在 指示符 字段中将其保存为 U 如果未更改则忽略重复记录 但在 更