複数のテーブルのレコード件数を表にまとめたいことがたまにある。
そういう時はFORループを使用して、count(*)した結果を一時テーブルに入れて確認したりする。
DECLARE dataset STRING DEFAULT "test_dataset"; CREATE OR REPLACE TEMP TABLE record_counts ( table_name STRING ,record_count INT64 ); FOR table IN (SELECT table_name FROM `region-us.INFORMATION_SCHEMA.TABLES` AS name WHERE table_schema = dataset) DO EXECUTE IMMEDIATE FORMAT( """ INSERT INTO record_counts SELECT '%s', count(*) FROM `%s.%s` """ ,table.table_name ,dataset ,table.table_name ); END FOR; SELECT * FROM record_counts;