Google bigquery 维护/设置写入截断计划查询的列描述

Google bigquery 维护/设置写入截断计划查询的列描述,google-bigquery,Google Bigquery,场景:我们有许多计划查询,这些查询将数据复制到我们用作集中数据仓库的项目中。这些是计划查询,配置为每晚运行,并设置为WRITE_TRUNCATE 问题:我们在几个目标表中的列中添加了描述,以记录它们。但是,当计划查询运行时,它们删除了所有列描述。保留表说明 期望的结果:是否有一种方法可以插入列描述作为计划查询的一部分,或者有其他方法可以避免每晚删除这些列描述?或者这仅仅是WRITE_TRUNCATE调度查询的一个限制 我已经搜索了Google&Stack Overflow,并查看了文档,但我找不

场景:我们有许多计划查询,这些查询将数据复制到我们用作集中数据仓库的项目中。这些是计划查询,配置为每晚运行,并设置为WRITE_TRUNCATE

问题:我们在几个目标表中的列中添加了描述,以记录它们。但是,当计划查询运行时,它们删除了所有列描述。保留表说明

期望的结果:是否有一种方法可以插入列描述作为计划查询的一部分,或者有其他方法可以避免每晚删除这些列描述?或者这仅仅是WRITE_TRUNCATE调度查询的一个限制


我已经搜索了Google&Stack Overflow,并查看了文档,但我找不到任何与计划查询相关的表/列说明的引用。

一种解决方案是,不使用WRITE_TRUNCATE和SELECT,您可以使用:

创建或替换表 作为选择。。。 如果不想在每个明细表查询中重复列描述,可以使用:

从表中删除为true的内容; 插入表格选择。。。 如果需要更新的原子性,则可以将上述查询写入一个MERGE语句,如:

合并完整表 使用 挑选* 从数据更新表 论虚假 如果源不匹配,则删除 如果目标不匹配,则插入行
喜欢先删除后插入方法的简单性。我最初担心的是,可能存在这样一种情况:DELETE语句成功,但INSERT语句失败。如果查询成功,WRITE\U TRUNCATE只会截断您的表,从而将风险降至最低。但是,当我测试它时,整个计划查询失败,并且我的表没有被删除。我不认为这在插入失败时删除无效。你应该考虑合并语句,虽然写起来比较难,但是它保证了这个全或无语义。更新了我的答案以包含合并解决方案。在我的测试中,计划查询将不再分析引用的表,该表已被删除。这可能就是我观察到“要么全有,要么全无”行为的原因。感谢您提供额外的合并解决方案。