首页 > 解决方案 > 大查询数据过期

问题描述

我一直在收集数据以BigQuery进行分析。但是,数据量在增长,我只需要 2 周的近期数据。我想删除未使用的数据。我做了一些研究,发现分区数据有一个过期选项。

当前设置:

我的表是一个分区表我使用带有类似代码的 Lambda 函数来将数据放入表中(我尝试添加 timePartitioning 选项,但它不起作用,所以这就是为什么我在 stackoverflow 上询问是否有人知道)

wait bq
      .dataset("dataset name")
      .table('tablename' + '$' + partitionTime)
      .load( filename, {
        sourceFormat: 'CSV',
        schema,
        skipLeadingRows: 1, 
        timePartitioning: {
           expirationMs: "300000"
        }
      });

其中 partitionTime 的格式为 YYYYMMDD(这会将插入该分区的数据放置)

感谢您的所有评论并花时间阅读我的麻烦 :) 祝您有美好的一天。

标签: databasegoogle-cloud-platformgoogle-bigquery

解决方案


正如您在此处看到的,该函数load接受三个参数:

  1. 来源(需要)
  2. 元数据(可选)
  3. 回调(可选)

您需要的选项可以在metadata参数中设置。在上面提供的链接中,您还可以注意到BigQuery SDK使用 API 调用来执行给定的操作。在此链接和下面的打印屏幕中,您可以看到如何构建正确的 API 调用BigQuery

在此处输入图像描述

在该字段中timePartitioning,您可以添加DAY作为分区提示和以毫秒为单位的到期时间。

最后,您的代码会有一个小的变化:

 wait bq
      .dataset("dataset name")
      .table('tablename')
      .load( filename, {
        sourceFormat: 'CSV',
        schema,
        skipLeadingRows: 1, 
        timePartitioning: {
           type: "DAY",
           expirationMs: "300000"
        }
      });

我希望它有帮助


推荐阅读