【发布时间】:2020-06-22 08:52:50
【问题描述】:
我是 bigquery 的新手。 我从 gcp 控制台创建了 bigquery 表,其中 GCS CSV 文件用作数据源。我认为当我删除任何行时,也应该从 GCS 文件中删除。但实际上并没有发生。
【问题讨论】:
标签: google-cloud-platform google-bigquery cloud external-tables
我是 bigquery 的新手。 我从 gcp 控制台创建了 bigquery 表,其中 GCS CSV 文件用作数据源。我认为当我删除任何行时,也应该从 GCS 文件中删除。但实际上并没有发生。
【问题讨论】:
标签: google-cloud-platform google-bigquery cloud external-tables
使用 BigQuery 时,您有 2 种方式从 GCS CSV 文件加载数据。
在这种情况下,当您将数据删除到 BigQuery 中时文件没有更改是正常的
解决方法
作为解决方法,您可以使用解决方案 1:
【讨论】:
如下图所示,BigQuery 支持三种类型的表:Native、External 和 Views
当您创建原生表时,您的数据将完全导入BigQuery 的存储系统并进行转换,以便针对查询进行优化。
外部表基本上是指向源文件的指针。换句话说,每次您对外部表运行查询时,BigQuery 都会访问原始数据源(GCS、Google 驱动程序等中的某些文件)
鉴于此,我可以直接回答您的问题:当您运行某些 DML 语句时,BigQuery 不会更新源文件。 如果您对 Native 表运行 DML 语句(DELETE、UPDATE),BigQuery 存储系统中的数据将被更改,但文件不会被触及。
此外,外部表不支持 DML。例如,如果您尝试对外部表运行 DELETE 语句,您将收到错误:DML over table 'project.dataset.table' is not supported.
我强烈建议你看看这个documentation
【讨论】: