スケジュールされたクエリで、各テーブルのレコード件数を自動取集する

週次でテーブルのレコード件数の推移とテーブルの増減を調べたく
ストアド プロシージャの勉強も兼ねて
スケジュールされたSQLで、定期的に収集できるようにしました。

レコードを登録するテーブル名一覧を一時表に登録して
LOOPでメタ情報を順次登録しています。

DECLARE dataset STRING;
DECLARE current_row int64 DEFAULT 0;
DECLARE loc STRING;

SET loc = 'US';
CREATE temp table dataset_list AS (
  SELECT
    catalog_name || '.' || schema_name || '.__TABLES__' AS dataset_name,
    ROW_NUMBER() OVER (ORDER BY schema_name) AS row_num
  FROM
    INFORMATION_SCHEMA.SCHEMATA
  WHERE
    location = loc);
LOOP
  SET
    current_row = current_row + 1;
  SET
    dataset = (
    SELECT
      dataset_name
    FROM
      dataset_list
    WHERE
      row_num = current_row);
  IF dataset IS NULL THEN
    LEAVE;
  END IF;
  EXECUTE IMMEDIATE FORMAT("INSERT INTO ds.table_metas SELECT *, CURRENT_TIMESTAMP() AS check_timestamp FROM %s", dataset);
END LOOP;
-- データセット、テーブル登録件数を保持
INSERT INTO ds.records
SELECT DATE_TRUNC(CURRENT_DATE(), week(sunday)) AS recorded_on,
       COUNT(DISTINCT dataset_id) AS dataset_record,
       COUNT(DISTINCT dataset_id||table_id) AS table_record,
       SUM(row_count) AS total_record,
       SUM(size_bytes) AS total_size,
  FROM ds.table_metas
 WHERE TIMESTAMP_TRUNC(check_timestamp, week(sunday)) = TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), week(sunday))
;

参考にしたブログはこれ以外にもあったのですが。。 qiita.com

いろいろ探してみたけど
そのブログを見つけられなかった。。

どんなキーワードで検索して そのブログへ辿り着けたかも忘れてしまった。 多分、名の知れた方だったかな

もうちょい、ここを熟読しないとな

cloud.google.com