Google bigquery 将BigQuery表切换为;“只读模式”;

Google bigquery 将BigQuery表切换为;“只读模式”;,google-bigquery,Google Bigquery,我想确保BigQuery中的表不能再接收任何插入(无论是“加载/批处理”插入还是“流式”插入)。 是否有可能将表转换为“只读模式” 我希望避免使用标准IAM/访问控制,它的最小权限级别是数据集级别。如果有一个选项可以独立于用户的角色在1个表上强制所有用户“只读”(就像在“只读模式”下强制文件系统一样),那就太棒了 (最终目标是对“主”表和“更新”表进行安全合并,如下所述:)。目前,这在BigQuery中是不可能的。您可以在以下位置提交功能请求: 同时,解决方法是使用快照装饰器。 所以,在不限制向

我想确保BigQuery中的表不能再接收任何插入(无论是“加载/批处理”插入还是“流式”插入)。
是否有可能将表转换为“只读模式”

我希望避免使用标准IAM/访问控制,它的最小权限级别是数据集级别。如果有一个选项可以独立于用户的角色在1个表上强制所有用户“只读”(就像在“只读模式”下强制文件系统一样),那就太棒了


(最终目标是对“主”表和“更新”表进行安全合并,如下所述:)。

目前,这在BigQuery中是不可能的。您可以在以下位置提交功能请求:

同时,解决方法是使用快照装饰器。
所以,在不限制向表中添加行的情况下,您可以随时(如果我没记错的话,在过去两周内)获取表的状态,这将间接地满足您的需求


快照装饰器是,我认为它们最近是

您可以通过在一个具有有限访问权限的数据集中保留所有表,然后在另一个数据集中的表上创建视图(自然是只读的)来实现这一点。将表交换为视图以使其只读。这样行吗?例如,有些组织有一个仅具有读取访问权限的“生产”数据集。如果这听起来可行的话,我可以写一个更完整的答案。我考虑过这个问题,但这意味着为我拥有的每个“主”表创建2个数据集(1个数据集用于我要合并的当前“更新”表,1个数据集用于合并过程完成后将接收新数据的新“更新”表)。因此,我担心这会成为许多数据集的地狱。这确实有助于保持一致性。我还考虑对我们添加到每一行的EventTimestamp列使用一些过滤。但是,使用这种方法,我无法“截断”“更新表”,因为在流式处理表上未根据启用DML/delete操作(好吧,至少我在进行微批处理而不是流式处理时可以使用这种方法).filtering在代码方面可能更昂贵,如果表继续增长,它将导致整个表扫描(因此额外的$$)。考虑一下投票的答案,如果它以某种方式帮助:O,正如我所建议的,我已经填写了一个特征请求: