👓

【GCP】BQで有効期限有無でテーブルを抽出

2023/05/26に公開

目的

bigqueryので有効期限ありなしのテーブルを抽出したい。

背景

アドホックなデータ分析などの一時利用向けに
自由にテーブルを作成できるデータセットを、組織内で公開している。
データセット自体には
デフォルトでライフサイクル(テーブルが削除されるまでの期間)を設定しているが
有効期限はテーブル単位で任意に変更できてしまうため、
運用者の気づかぬ内に無期限テーブルができてしまう。
定期的にテーブルをクリーニングする際に有効期限有無で対象を選別するのに利用するクエリ。

方法

有効期限ありテーブルを抽出

SELECT distinct
    table_name
FROM
    プロジェクト名.データセット名.INFORMATION_SCHEMA.TABLE_OPTIONS
WHERE
    option_name = 'expiration_timestamp'
order by
    1
;

有効期限なしテーブルを抽出

(
    SELECT distinct
        table_name
    FROM
        プロジェクト名.データセット名.INFORMATION_SCHEMA.TABLE_OPTIONS
) EXCEPT DISTINCT(
    SELECT distinct
        table_name
    FROM
        プロジェクト名.データセット名.INFORMATION_SCHEMA.TABLE_OPTIONS
    WHERE
        option_name = 'expiration_timestamp'
)
order by
    1
;

Discussion