在BigQuery中,我有Firebase的每日分析表。这些随着时间的流逝而建立,现在大约有600个。控制台中是否可以删除所有已使用一年以上的表?
如果没有,我还有其他方法可以这样做吗?我已经启用了默认表到期时间,但是知道此值仅适用于向前移动。
答案 0 :(得分:0)
如果将scripting与INFORMATION_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;