【问题标题】:Bigquery table with GCS data source does not affect data changed into gcs带GCS数据源的Bigquery表不影响改成gcs的数据
【发布时间】:2020-06-22 08:52:50
【问题描述】:

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

【问题讨论】:

    标签: google-cloud-platform google-bigquery cloud external-tables


    【解决方案1】:

    使用 BigQuery 时,您有 2 种方式从 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:

    【讨论】:

      【解决方案2】:

      如下图所示,BigQuery 支持三种类型的表:NativeExternalViews

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

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

      此外,外部表不支持 DML。例如,如果您尝试对外部表运行 DELETE 语句,您将收到错误:DML over table 'project.dataset.table' is not supported.

      我强烈建议你看看这个documentation

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多