具有GCS数据源的Bigquery表不会影响已更改为gcs的数据

bigquery是我的新手。 我已经从gcp控制台创建了bigquery表,其中GCS CSV文件用作数据源。我认为,当我删除任何行时,也应从GCS文件中删除该行。但是实际上这是没有发生的。

iCMS 回答:具有GCS数据源的Bigquery表不会影响已更改为gcs的数据

使用BigQuery时,您有两种从GCS CSV文件加载数据的方式。

  1. 最常见的是将perform a load job. This means that your CSV data加载(复制)到BigQuery本机表中。加载后,文件与BigQuery数据之间不再保持链接。

在这种情况下,将数据删除到BigQuery中时文件通常不会更改

  1. 您可以定义external table and query directly the data into your file hosted in GCS。它可以防止数据重复,但查询速度较慢。此外,外部表不支持DML (Data Manipulation Language) statements (INSERT,UPDATE,DELETE)

解决方法

作为解决方法,您可以使用解决方案1:

,

如下图所示,BigQuery支持三种类型的表:本地外部视图

enter image description here

创建本机表时,您的数据已完全导入BigQuery的存储系统中并进行了转换,以便针对查询进行优化。 外部表基本上是指向源文件的指针。换句话说,每次您对外部表执行查询时,BigQuery都会访问原始数据源(GCS中的某些文件,Google驱动程序等)。

鉴于此,我可以直接转到您的问题:当您运行一些DML语句时,BigQuery不会更新源文件。 如果您对本机表运行DML语句(DELETE,UPDATE),则BigQuery存储系统中的数据将被更改,但文件不会被触及。

此外,外部表不支持DML。如果尝试再次运行DELETE语句(例如外部表),则会收到错误:表'project.dataset.table'上的DML不被支持。

我强烈建议您看看此documentation

本文链接:https://www.f2er.com/2083542.html

大家都在问