任何人都知道有任何计划在Google Bigquery的表格中添加对删除部分数据的支持吗?我们现在面临的问题是我们正在使用它来分析我们收集的数据点。我们希望在过去X天的数据中运行查询,但是在最后X天的数据之后,我们不再需要将数据存储在BigQuery中。
目前我们可以想到删除数据的唯一方法是删除整个数据表,然后重新创建并加载X天数据。这虽然要求我们将数据存储在每日CSV文件中,这不是最佳的。
有关如何处理此问题或在不久的将来是否有删除行查询的任何建议?
2016更新:BigQuery现在可以删除和更新行 - Fh
https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax
感谢您描述您的用例。 BigQuery仅按设计附加。我们目前不支持从现有数据集中删除单行或一批行。
目前,要实现“旋转”日志系统,您必须:1。每天创建一个新表(如果需要,删除旧表)2。将数据附加到表中并按时间/日期查询
我实际上建议每天创建一个新表。由于BigQuery根据查询的数据量收费,这对您来说是最经济的,而不是每次都要查询整个海量数据集。
顺便说一句 - 您目前如何收集数据?
要删除Big查询中的记录,必须先启用标准sql。
启用标准sql的步骤
这将使BigQuery数据操作语言(DML)能够更新,插入和删除BigQuery表中的数据
现在,您可以编写纯SQL查询来删除记录
DELETE [FROM] target_name [alias] WHERE condition
你可以参考:https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax#delete_statement
此外,如果适用,您可以尝试BigQuery的OMIT RECORD IF,以返回除要删除的内容之外的所有项目。然后,从该查询结果创建一个新表。
(来自Google参考文档的示例)
SELECT * FROM
publicdata:samples.github_nested
OMIT RECORD IF
COUNT(payload.pages.page_name) <= 80;
这仅在使用旧版SQL时才有意义。
您可以尝试以下方法:
DELETE FROM {dataset}.{table} WHERE {constraint}