【问题标题】:Big query update or delete issue大查询更新或删除问题
【发布时间】:2015-07-27 11:33:39
【问题描述】:

我无法通过 php 通过大查询 api 进行任何更新或删除操作。有什么技巧可以完成这个任务。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    2016 年 8 月:BigQuery 支持 UPDATE 和 DELETE :)

    Does BigQuery support UPDATE, DELETE, and INSERT (SQL DML) statements?


    您可以使用 BigQuery 实现 UPDATE 和 DELETE - 这不是原生操作。

    要从表中删除行,请在不包含不需要的行的情况下重新实现:

    SELECT *
    FROM [my.table1]
    WHERE NOT id IN (19239,192392139,129391)
    

    (设置为选项“允许大结果”和“将结果写入 my.table1”)

    要更新行,您可以执行类似的操作:

    SELECT * FROM (
      SELECT * FROM [my.table1]
      WHERE NOT id IN (SELECT id FROM [my.updated_rows]
    ), (
      SELECT * FROM [my.updated_rows]
    )
    

    换句话说:BigQuery 是一个分析型数据库,其中 DELETE 和 UPDATE 不是优化的操作 - 但您可以使用覆盖原始表的单个 SELECT 语句来实现它们。

    【讨论】:

    • 非常感谢您的回复。现在我通过 Web UI 删除任何行,但我不能通过 api 删除。我的平台是php。请帮我。我的示例代码在那里
    • 我的代码是:$destinationTable = new Google_Service_Bigquery_TableReference(); $destinationTable->setDatasetId(''); $destinationTable->setProjectId(''); $destinationTable->setTableId(''); $queryConfig = new Google_Service_Bigquery_JobConfigurationQuery(); $queryConfig->setDestinationTable($destinationTable); Google_Service_Bigquery_JobConfigurationLoad(); $queryConfig->setWriteDisposition("WRITE_TRUNCATE"); $sql = "select * from [] where not (id = 4)"; $queryResults = $myBigQueryObject->requestBigQuery($sql);运行此代码后 [id=>4] 不会覆盖或从我的表中删除
    • 你能开始一个新问题吗? PHP不是我的强项,但其他人可以提供帮助
    【解决方案2】:

    不要忘记 BigQuery 是一种WORM 技术(设计上只能附加)。它在我看来,你不知道这件事,因为没有像 UPDATEDELETE 这样的选项。

    【讨论】:

    • 那么我怎样才能通过大查询来更新任何行呢?它只是获取或插入数据吗?
    • 没有 UPDATE 调用。您可以添加新行,它是仅附加技术,它更像是基于事件的。您最终将得到 10 行,并且您需要以提取最新行的方式编写查询。您无法更新现有行,您需要插入新行。
    • 但您始终可以重新实现表 twitter.com/felipehoffa/status/613313661776621568
    【解决方案3】:

    正如其他朋友解释的那样,BigQuery 具有仅附加设计。

    您应该编写一个 sql 查询来过滤表中所有不需要的行,而不是删除一行;你应该从这个查询的结果中创建一个全新的表。然后就可以删除旧表了。

    对于更新,您应该将新的更新行附加到表中,并按照我上面写的说明删除旧行。

    【讨论】:

      【解决方案4】:

      我已经停止设置写入配置,然后可以使用 python 调用在 bigquery 上运行 dml 语句

      不要设置以下参数

      query_job_config.write_disposition
      

      【讨论】:

        猜你喜欢
        • 2020-01-05
        • 2012-05-01
        • 1970-01-01
        • 2020-01-10
        • 1970-01-01
        • 1970-01-01
        • 2014-08-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多