G-genã® min ã§ããæ¬èšäºã§ã¯ãBigQuery ã® INFORMATION_SCHEMA ã«å¯Ÿããã¯ãšãªäŸã玹ä»ããŸããã³ã¹ã管çãéçºã®å¹çåãéçšã®ããã«æŽ»çšããŠãã ããã 仿§ INFORMATION_SCHEMA ãšã¯ æé å¿
èŠãªæš©é å¶çŽäºé
泚æç¹ ã³ã¹ãã»ãªãœãŒã¹ç®¡ç é«é¡ã¯ãšãªãç¹å®ãã ãŠãŒã¹ã±ãŒã¹ SQL ã¹ããã䜿çšéã®æšç§»ãåæããããã«ããã¯ãç¹å®ãã ãŠãŒã¹ã±ãŒã¹ SQL çµç¹å
šäœã®ã¹ãã¬ãŒãžäœ¿çšéããããžã§ã¯ãå¥ã«ææ¡ãã ãŠãŒã¹ã±ãŒã¹ SQL éçºã»ãããã°å¹çå ããŒãã«ã®ã¹ããŒãæ
å ±ãçŽ æ©ã確èªãã ãŠãŒã¹ã±ãŒã¹ SQL ããŒãã«ã® DDLïŒããŒãã«äœæã¯ãšãªïŒãååŸãã ãŠãŒã¹ã±ãŒã¹ SQL ããŒãã£ã·ã§ã³ããŒãã«ã®æ
å ±ã調æ»ãã ãŠãŒã¹ã±ãŒã¹ SQL ããŒã¿ã»ããå
ã®ãã¥ãŒå®çŸ©ãäžèЧã§ç¢ºèªãã ãŠãŒã¹ã±ãŒã¹ SQL ã¯ãšãªã®ãšã©ãŒå±¥æŽã確èªãã ãŠãŒã¹ã±ãŒã¹ SQL éçš ã¹ãã¢ãããã·ãŒãžã£ã®å®è¡å±¥æŽã調æ»ãã ãŠãŒã¹ã±ãŒã¹ SQL ããã·ãŒãžã£ã UDF ã®å®çŸ©ãšåŒæ°ã調æ»ãã ãŠãŒã¹ã±ãŒã¹ SQL 仿§ INFORMATION_SCHEMA ãšã¯ INFORMATION_SCHEMA ãšã¯ãBigQuery ã®ãžã§ãå±¥æŽãããŒãã«ããã¥ãŒã®ã¡ã¿ããŒã¿ãã¹ãã¬ãŒãžäœ¿çšéãªã©ãä¿æããã·ã¹ãã ãã¥ãŒã§ãã ãããã®ãã¥ãŒã«å¯Ÿã㊠SQL ã¯ãšãªãå®è¡ããããšã§ãBigQuery ã«é¢ããã¡ã¿ããŒã¿ãç¶²çŸ
çã«ååŸã§ããŸããã³ã¹ã管çãããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ãªã©ãããŒã¿åºç€ã®éçšã«ããã£ãŠ INFORMATION_SCHEMA ã®çè§£ã¯å¿
é ã§ãã åè : INFORMATION_SCHEMA ã®æŠèŠ æé INFORMATION_SCHEMA ã®ãã¥ãŒã«å¯Ÿããã¯ãšãªã¯ãéåžžã®ããŒãã«ãžã®ã¯ãšãªãšåæ§ã«èª²é察象ãšãªããŸãã ã¯ãšãªã¯ ãã£ãã·ã¥ãããªã ãããåãã¯ãšãªãç¹°ãè¿ãå®è¡ããå Žåã§ãããã®éœåºŠã¯ãšãªæéãçºçããŸãããŸããããžã§ã¯ãã® BigQuery 課éèšå®ããªã³ããã³ãã®å Žåãéåžžã®ã¯ãšãªãšåæ§ã æäœ 10 MB ã課éãã€ããšããŠã«ãŠã³ããããŸãã åè : INFORMATION_SCHEMA ã®æŠèŠ - æé å¿
èŠãªæš©é INFORMATION_SCHEMA ã®åãã¥ãŒãã¯ãšãªããã«ã¯ãç¹å®ã® IAM æš©éãå¿
èŠã§ããæ¬èšäºã«ç»å Žãããã¥ãŒãšããã«å¿
èŠãªæš©éã¯ä»¥äžã®éãã§ãã 察象ãã¥ãŒ ã¹ã³ãŒãããããã å¿
èŠãªæš©éïŒPermissionïŒ äž»ãªäºåå®çŸ©ããŒã«ïŒRoleïŒ JOBS_BY_USER ãããžã§ã¯ã bigquery.jobs.list BigQuery ãŠãŒã¶ãŒïŒroles/bigquery.userïŒ JOBS_BY_PROJECT JOBS_TIMELINE_BY_PROJECT ãããžã§ã¯ã bigquery.jobs.listAll BigQuery ãªãœãŒã¹é²èЧè
ïŒroles/bigquery.resourceViewerïŒ COLUMNS PARTITIONS VIEWS ãããžã§ã¯ã bigquery.tables.get bigquery.tables.list BigQuery ããŒã¿é²èЧè
ïŒroles/bigquery.dataViewerïŒ PARAMETERS ãããžã§ã¯ã bigquery.routines.get bigquery.routines.list BigQuery ããŒã¿é²èЧè
ïŒroles/bigquery.dataViewerïŒ TABLE_STORAGE_BY_ORGANIZATION çµç¹ bigquery.tables.get bigquery.tables.list BigQuery ããŒã¿é²èЧè
ïŒroles/bigquery.dataViewerïŒ çµç¹ããã©ã«ãã¬ãã«ã®ãã¥ãŒãã¯ãšãªããã«ã¯ãæš©éãããããã®ã¬ãã«ã§ä»äžãããŠããå¿
èŠããããŸãããŸãããããã®ãã¥ãŒã¯ããããžã§ã¯ããçµç¹ã«æå±ããŠããå Žåã«ã®ã¿å©çšå¯èœã§ãã 詳现ã«ã€ããŠã¯ãå
¬åŒããã¥ã¡ã³ãããåç
§ãã ããã åè : JOBS ãã¥ãŒ - å¿
èŠãªããŒã« åè : JOBS_TIMELINE_BY_USER ãã¥ãŒ - å¿
èŠãªæš©é åè : COLUMNS ãã¥ãŒ - å¿
èŠãªæš©é åè : PARTITIONS ãã¥ãŒ - å¿
èŠãªæš©é åè : PARAMETERS ãã¥ãŒ - å¿
èŠãªæš©é åè : TABLE_STORAGE_BY_ORGANIZATION ãã¥ãŒ - å¿
èŠãªæš©é å¶çŽäºé
INFORMATION_SCHEMA ãçšããã³ã¹ãåæã«ã¯ããã€ãã®å¶çŽäºé
ããããŸãããããã®ç¹ãèæ
®ããäžã§ãæ¬èšäºã®ã¯ãšãªäŸããå©çšãã ããã è¡ã¬ãã«ã»ãã¥ãªã㣠ãèšå®ãããããŒãã«ã«å¯Ÿããã¯ãšãªã§ã¯ã課é察象ãã€ãæ°ãªã©ã®äžéšã®çµ±èšæ
å ±ãé ãããå ŽåããããŸãã BigQuery ML ã®ã¢ãã«äœæãžã§ãã§ã¯ã¢ãã«ã®çš®é¡ã«ãã£ãŠæéãç°ãªããŸããã INFORMATION_SCHEMA.JOBS ã§ã¯ã¢ãã«ã®çš®é¡ãå€å¥ã§ããªããããæ¬èšäºã®ãããªã³ã¹ãèšç®ã¯æŠç®å€ãšãªããŸãã Apache Spark ããã·ãŒãžã£ ã®å©çšæéã INFORMATION_SCHEMA.JOBS ã§ã¯ total_bytes_billed ã«å«ãŸããå ŽåããããŸãããéåžžã®ã¯ãšãªå©çšãšåºå¥ããããšã¯ã§ããŸããã äžèšã¯ INFORMATION_SCHEMA.JOBS ãã¥ãŒã®æ³šæç¹ãäŸãšããŠæããŸããã詳现ã¯åãã¥ãŒã®ããã¥ã¡ã³ããåç
§ããŠãã ããã åè : JOBS ãã¥ãŒ - å¶éäºé
泚æç¹ å€ãã® INFORMATION_SCHEMA ãã¥ãŒã¯ã region-asia-northeast1.INFORMATION_SCHEMA.JOBS_BY_PROJECT ã®ããã«ãªãŒãžã§ã³ä¿®é£Ÿåãä»ããŠã¢ã¯ã»ã¹ããå¿
èŠããããŸããã¯ãšãªãå®è¡ããéã¯ã察象ãªãœãŒã¹ãååšãããªãŒãžã§ã³ãæ£ããæå®ããŠãã ããã æ¬èšäºã®ãµã³ãã«ã¯ãšãªã§ã¯ã region-asia-northeast1 ãšèšèŒããŠããç®æããèªèº«ã®ç°å¢ã«åãããŠæžãæããŠãã ããã åè : INFORMATION_SCHEMA ã®æŠèŠ - æ§æ ã³ã¹ãã»ãªãœãŒã¹ç®¡ç é«é¡ã¯ãšãªãç¹å®ãã ãŠãŒã¹ã±ãŒã¹ äºæãã¬é«é¡ã¯ãšãªïŒã¹ãã£ã³éãå€ãã¯ãšãªïŒãå®è¡ãããŠããªãã宿çã«ãã§ãã¯ããã³ã¹ããæé©åãããã SQL éå»30æ¥éã§ã¹ãã£ã³éãå€ãã£ãã¯ãšãª TOP 20ããå®è¡ãŠãŒã¶ãŒãã¯ãšãªå
容ãšãšãã«ãªã¹ãã¢ããããŸãã -- éå»30æ¥éã§ã¹ãã£ã³éãå€ãã£ãã¯ãšãª TOP 20 SELECT user_email, job_id, -- TBåäœã«å€æ ROUND (total_bytes_billed / POW( 1024 , 4 ), 4 ) AS terabytes_billed, -- ãªã³ããã³ãæéïŒæ±äº¬ãªãŒãžã§ã³: $7.5/TBïŒã§ã³ã¹ããæŠç® â»2025幎8ææç¹ (total_bytes_billed / POW( 1024 , 4 )) * 7.5 AS estimated_cost_usd, creation_time, -- ã¯ãšãªå
容ã確èªããããããããã«æ¹è¡ãã¹ããŒã¹ã«çœ®æ REGEXP_REPLACE (query, r ' \n ' , ' ' ) AS query_oneline FROM `region-asia-northeast1`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE creation_time BETWEEN TIMESTAMP_SUB( CURRENT_TIMESTAMP (), INTERVAL 30 DAY) AND CURRENT_TIMESTAMP () AND total_bytes_billed > 0 AND job_type = ' QUERY ' ORDER BY total_bytes_billed DESC LIMIT 20 ; ã¹ããã䜿çšéã®æšç§»ãåæããããã«ããã¯ãç¹å®ãã ãŠãŒã¹ã±ãŒã¹ ç¹å®ã®æé垯ã«ã¯ãšãªãé
ããªãããšããããããæé垯ããšã®ãªãœãŒã¹ïŒã¹ãããïŒæ¶è²»éã®åŸåãåæããè² è·ã®é«ãæé垯ãç¹å®ãããã SQL JOBS_TIMELINE_BY_PROJECT ã䜿ã£ãŠã1æéããšã®åèšã¹ãããäœ¿çšæéïŒ total_slot_ms ïŒãéèšããè² è·ã®é«ãæé垯ãç¹å®ããŸãã -- éå»24æéã®æé垯å¥ïŒ1æéããšïŒã®åèšã¹ãããäœ¿çšæéãéèš SELECT -- æéãåãæšãŠãŠã°ã«ãŒãã³ã° TIMESTAMP_TRUNC(period_start, HOUR) AS usage_hour, -- ã¹ãããäœ¿çšæéïŒç§ïŒã«å€æ SUM (period_slot_ms) / 1000 AS total_slot_seconds FROM `region-asia-northeast1`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_PROJECT WHERE period_start >= TIMESTAMP_SUB( CURRENT_TIMESTAMP (), INTERVAL 24 HOUR) GROUP BY usage_hour ORDER BY usage_hour; çµç¹å
šäœã®ã¹ãã¬ãŒãžäœ¿çšéããããžã§ã¯ãå¥ã«ææ¡ãã ãŠãŒã¹ã±ãŒã¹ è€æ°ã®ãããžã§ã¯ãããŸããã§ãçµç¹å
šäœã®ã¹ãã¬ãŒãžäœ¿çšéããããžã§ã¯ãå¥ã«éèšããã³ã¹ã管çã«åœ¹ç«ãŠããã SQL TABLE_STORAGE_BY_ORGANIZATION ãã¥ãŒã䜿ããçµç¹å
ã®ãããžã§ã¯ãå¥ã¹ãã¬ãŒãžäœ¿çšéã©ã³ãã³ã°ãäœæããŸãã -- çµç¹å
ã®ãããžã§ã¯ãå¥ã¹ãã¬ãŒãžäœ¿çšéã©ã³ãã³ã° SELECT project_id, ROUND ( SUM (total_physical_bytes) / POW( 1024 , 4 ), 2 ) AS total_physical_tb FROM `region-asia-northeast1`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_ORGANIZATION GROUP BY project_id ORDER BY total_physical_tb DESC ; éçºã»ãããã°å¹çå ããŒãã«ã®ã¹ããŒãæ
å ±ãçŽ æ©ã確èªãã ãŠãŒã¹ã±ãŒã¹ éçºäžã«ãåç
§ãããããŒãã«ã®ã«ã©ã åãããŒã¿åãNULL蚱容ããªã©ãSQLãšãã£ã¿ããé¢ããã«ç¢ºèªãããã SQL COLUMNS ãã¥ãŒã§ãç¹å®ããŒãã«ã®ã«ã©ã æ
å ±ãäžèŠ§è¡šç€ºããŸãã -- ç¹å®ããŒãã«ã®ã«ã©ã 詳现ãååŸ SELECT column_name, ordinal_position, data_type, is_nullable, column_default FROM `my-project.my_dataset.INFORMATION_SCHEMA.COLUMNS` WHERE table_name = ' my_table ' ; ããŒãã«ã® DDLïŒããŒãã«äœæã¯ãšãªïŒãååŸãã ãŠãŒã¹ã±ãŒã¹ æ¢åã®ããŒãã«å®çŸ©ãå
ã«æ°ããããŒãã«ãäœæãããå Žåãªã©ã«ãããŒãã«ã® DDLïŒ CREATE TABLE æïŒãçŽæ¥ååŸããŸãã SQL TABLES ãã¥ãŒã® ddl ã«ã©ã ãããç¹å®ã®ããŒãã«ã®DDLãååŸããŸãã -- ç¹å®ããŒãã«ã®DDLãååŸ SELECT table_name, ddl FROM `my-project.my_dataset.INFORMATION_SCHEMA.TABLES` WHERE table_name = ' my_table ' ; ããŒãã£ã·ã§ã³ããŒãã«ã®æ
å ±ã調æ»ãã ãŠãŒã¹ã±ãŒã¹ ããŒãã£ã·ã§ã³ãã«ãŒãã³ã° ãæå³éãã«æ©èœããŠããã確èªãããããŸããã©ã®ããŒãã£ã·ã§ã³ã«ã©ããããã®ããŒã¿ãå
¥ã£ãŠããã調æ»ãããã SQL PARTITIONS ãã¥ãŒã§ãããŒãã£ã·ã§ã³ããšã®è¡æ°ãããŒã¿ãµã€ãºã確èªããŸãã PARTITIONS ãã¥ãŒã¯ 2025幎8æçŸåšããã¬ãã¥ãŒæ©èœã§ãã仿§ã倿Žãããå¯èœæ§ãããç¹ã«ã泚æãã ããã -- ããŒãã£ã·ã§ã³ããŒãã«ã®ããŒãã£ã·ã§ã³ããšã®æ
å ±ãååŸ SELECT table_name, partition_id, total_rows, -- MBåäœã«å€æ ROUND (total_logical_bytes / POW( 1024 , 2 ), 2 ) AS logical_mb, last_modified_time FROM `my-project.my_dataset.INFORMATION_SCHEMA.PARTITIONS` WHERE table_name = ' my_partitioned_table ' -- å€ãããŒãã£ã·ã§ã³ãã衚瀺 ORDER BY partition_id ASC ; ããŒã¿ã»ããå
ã®ãã¥ãŒå®çŸ©ãäžèЧã§ç¢ºèªãã ãŠãŒã¹ã±ãŒã¹ ããŒã¿ã»ããå
ã«ã©ã®ãããªãã¥ãŒãååšããã©ã®ããŒãã«ãåç
§ããŠããã®ãããå®çŸ© SQLïŒãœãŒã¹ã³ãŒãïŒãšããããŠäžèЧã§ç¢ºèªãããã SQL VIEWS ããããã¥ãŒã®å®çŸ©ãçŽæ¥ååŸããŸãã -- ç¹å®ã®ããŒã¿ã»ããå
ã®ãã¥ãŒäžèЧãšãã®å®çŸ©ãååŸ SELECT table_name AS view_name, view_definition FROM `my-project.my_dataset.INFORMATION_SCHEMA.VIEWS`; ã¯ãšãªã®ãšã©ãŒå±¥æŽã確èªãã ãŠãŒã¹ã±ãŒã¹ ãå
ã»ã©å®è¡ããã¯ãšãªããšã©ãŒã«ãªã£ããããšã©ãŒã¡ãã»ãŒãžãèŠå€±ã£ãŠããŸã£ãããšããç¶æ³ã§ããšã©ãŒã®åå ãçŽ æ©ãç¹å®ãããã SQL JOBS_BY_USER ã䜿ããèªåãå®è¡ããŠãšã©ãŒã«ãªã£ãã¯ãšãªã®å±¥æŽãé¡ããŸãã -- éå»7æ¥éã§èªåãå®è¡ãããšã©ãŒã«ãªã£ãã¯ãšãªã®äžèЧ SELECT creation_time, job_id, error_result.reason, error_result.message, query FROM `region-asia-northeast1`.INFORMATION_SCHEMA.JOBS_BY_USER WHERE creation_time BETWEEN TIMESTAMP_SUB( CURRENT_TIMESTAMP (), INTERVAL 7 DAY) AND CURRENT_TIMESTAMP () AND state = ' DONE ' AND error_result IS NOT NULL ORDER BY creation_time DESC ; éçš ã¹ãã¢ãããã·ãŒãžã£ã®å®è¡å±¥æŽã調æ»ãã ãŠãŒã¹ã±ãŒã¹ ç¹å®ã®ãããåŠçãšããŠå®è£
ãããã¹ãã¢ãããã·ãŒãžã£ãããã€ã誰ã«ãã£ãŠå®è¡ããããããŸãã¯ãšã©ãŒã«ãªã£ãŠããªãããç£æ»ãããã SQL JOBS_BY_PROJECT ã® query ã«ã©ã ããã£ã«ã¿ãªã³ã°ããŠãç¹å®ã®ããã·ãŒãžã£ã®åŒã³åºãå±¥æŽãæœåºããŸãã -- ç¹å®ã®ããã·ãŒãžã£ã®å®è¡å±¥æŽãååŸ SELECT job_id, creation_time, start_time, end_time, TIMESTAMP_DIFF(end_time, start_time, SECOND) AS execution_seconds, user_email, statement_type, -- ãšã©ãŒãçºçããå Žåã¯çç±ãšã¡ãã»ãŒãžã衚瀺 error_result.reason, error_result.message FROM `region-asia-northeast1`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE -- 調æ»ãããããã·ãŒãžã£åã§ãã£ã«ã¿ query LIKE ' %CALL `my-project.my_dataset.my_procedure`% ' AND creation_time >= TIMESTAMP_SUB( CURRENT_TIMESTAMP (), INTERVAL 30 DAY) ORDER BY creation_time DESC ; ããã·ãŒãžã£ã UDF ã®å®çŸ©ãšåŒæ°ã調æ»ãã ãŠãŒã¹ã±ãŒã¹ ãªãŒãžã§ã³å
ã«ã©ã®ãããªããã·ãŒãžã£ã UDFïŒãŠãŒã¶ãŒå®çŸ©é¢æ°ïŒãå®çŸ©ãããŠãããç¶²çŸ
çã«æ£åžããããããŸããç¹å®ã®ããã·ãŒãžã£ã UDF ã«ã€ããŠããã®åŒæ°ã®è©³çްã調æ»ãããã SQL ROUTINES ãã¥ãŒã䜿ããšããªãŒãžã§ã³å
ã®ããã·ãŒãžã£ã颿°ã®äžèЧãååŸã§ããŸããäžæ¹ã PARAMETERS ãã¥ãŒã§ã¯ãç¹å®ã®ã«ãŒãã³ã®åŒæ°ã®è©³çްã確èªã§ããŸãã -- ãããžã§ã¯ãå
ã®å
šããŒã¿ã»ããã®ããã·ãŒãžã£ãš UDF ãäžèŠ§è¡šç€º SELECT routine_schema, routine_name, specific_name, -- ãã©ã¡ãŒã¿æ€çŽ¢çšã« specific_name ãååŸ routine_type, -- PROCEDURE ãŸã㯠FUNCTION data_type, -- 颿°ã®æ»ãå€ã®å routine_definition FROM `region-asia-northeast1`.INFORMATION_SCHEMA.ROUTINES ORDER BY routine_schema, routine_name; -- äžèšã¯ãšãªã§ååŸãã specific_name ã䜿ããç¹å®ã®é¢æ°ã®åŒæ°æ
å ±ãååŸ SELECT parameter_name, data_type, parameter_mode -- IN, OUT, INOUT FROM `my-project.my_dataset.INFORMATION_SCHEMA.PARAMETERS` WHERE specific_name = ' my_function_name ' ; äœã
æš æçŸ (min) (èšäºäžèЧ) ã¯ã©ãŠããœãªã¥ãŒã·ã§ã³éš ããŒã¿ã¢ããªãã£ã¯ã¹èª²ã2024幎7æ G-gen ã«ãžã§ã€ã³ãG-gen æåç«¯ãæ²çžçåšäœãæè¿èŠããå³¶èšèã¯ãããã€ãŒïŒç«ïŒãã