有没有一种方法可以从控制台中批量删除表?

时间:2020-10-04 22:15:14

标签: google-cloud-platform google-bigquery

在BigQuery中,我有Firebase的每日分析表。这些随着时间的流逝而建立,现在大约有600个。控制台中是否可以删除所有已使用一年以上的表?

如果没有,我还有其他方法可以这样做吗?我已经启用了默认表到期时间,但是知道此值仅适用于向前移动。

1 个答案:

答案 0 :(得分:0)

如果将scriptingINFORMATION_SCHEMA结合使用,则可以编写如下的SQL:

DECLARE pairs ARRAY<STRUCT<tableName STRING, creation_time TIMESTAMP>>;
DECLARE index DEFAULT 0;
SET pairs = (
  SELECT ARRAY_AGG(
    STRUCT<tableName STRING, creation_time TIMESTAMP>(
     CONCAT('`', TABLE_CATALOG, '.', TABLE_SCHEMA, '.', TABLE_NAME, '`'),
     CREATION_TIME
    )
  )
  FROM yourDataset.INFORMATION_SCHEMA.TABLES
  WHERE TABLE_TYPE = 'BASE TABLE');

SELECT pairs; -- print here to make sure you're operating on right set of tables

WHILE index < ARRAY_LENGTH(pairs) DO BEGIN
  DECLARE tableAndCreationTime DEFAULT pairs[OFFSET(index)];
  DECLARE sql DEFAULT FORMAT("ALTER TABLE %s SET OPTIONS (expiration_timestamp=TIMESTAMP '%t')", 
                tableAndCreationTime.tableName, 
                TIMESTAMP_ADD(tableAndCreationTime.creation_time, INTERVAL 365 DAY));
  SELECT sql; -- print again to regret, when ready uncomment next line
  -- EXECUTE IMMEDIATE sql;
  SET index = index + 1;
END;
END WHILE;