JOBS ๋ทฐ
INFORMATION_SCHEMA.JOBS
๋ทฐ์๋ ํ์ฌ ํ๋ก์ ํธ์ ๋ชจ๋ BigQuery ์์
์ ๋ํ ๊ฑฐ์ ์ค์๊ฐ์ ๋ฉํ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
ํ์ํ ์ญํ
INFORMATION_SCHEMA.JOBS
๋ทฐ๋ฅผ ์ฟผ๋ฆฌํ๋ ๋ฐ ํ์ํ ๊ถํ์ ์ป์ผ๋ ค๋ฉด ๊ด๋ฆฌ์์๊ฒ ํ๋ก์ ํธ์ ๋ํ BigQuery ๋ฆฌ์์ค ๋ทฐ์ด (roles/bigquery.resourceViewer
) IAM ์ญํ ์ ๋ถ์ฌํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ธ์.
์ญํ ๋ถ์ฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด ์ฌ์ ์ ์๋ ์ญํ ์๋ INFORMATION_SCHEMA.JOBS
๋ทฐ๋ฅผ ์ฟผ๋ฆฌํ๋ ๋ฐ ํ์ํ bigquery.jobs.listAll
๊ถํ์ด ํฌํจ๋์ด ์์ต๋๋ค.
์ปค์คํ ์ญํ ์ด๋ ๋ค๋ฅธ ์ฌ์ ์ ์๋ ์ญํ ์ ์ฌ์ฉํ์ฌ ์ด ๊ถํ์ ๋ถ์ฌ๋ฐ์ ์๋ ์์ต๋๋ค.
BigQuery ๊ถํ์ ๋ํ ์์ธํ ๋ด์ฉ์ IAM์ผ๋ก ์ก์ธ์ค ์ ์ด๋ฅผ ์ฐธ์กฐํ์ธ์.
์คํค๋ง
๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ creation_time
์ด๋ก ํํฐ์
์ ๋๋๊ณ project_id
๋ฐ user_email
๋ก ํด๋ฌ์คํฐ๋ง๋ฉ๋๋ค. query_info
์ด์๋ ์ฟผ๋ฆฌ ์์
์ ๋ํ ์ถ๊ฐ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค.
INFORMATION_SCHEMA.JOBS
๋ทฐ์๋ ๋ค์๊ณผ ๊ฐ์ ์คํค๋ง๊ฐ ์์ต๋๋ค.
์ด ์ด๋ฆ | ๋ฐ์ดํฐ ์ ํ | ๊ฐ |
---|---|---|
bi_engine_statistics |
RECORD |
ํ๋ก์ ํธ๊ฐ BI Engine์ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ์ด ํ๋์๋ BiEngineStatistics๊ฐ ํฌํจ๋ฉ๋๋ค.
๊ทธ ์ธ์ ๊ฒฝ์ฐ์๋ NULL ์
๋๋ค.
|
cache_hit |
BOOLEAN |
์ด ์์
์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ์บ์์์ ์ ๊ณต๋์๋์ง ์ฌ๋ถ
๋ฉํฐ ์ฟผ๋ฆฌ ๋ฌธ ์์
์ด ์๋ ๊ฒฝ์ฐ ์์ ์ฟผ๋ฆฌ์ cache_hit ๋ NULL ์
๋๋ค.
|
creation_time |
TIMESTAMP |
(ํํฐ์ ๋๋๊ธฐ ์ด) ์ด ์์ ์ ์์ฑ ์๊ฐ์ ๋๋ค. ํํฐ์ ๋๋๊ธฐ๋ ์ด ํ์์คํฌํ์ UTC ์๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. |
destination_table |
RECORD |
๊ฒฐ๊ณผ์ ๋ํ ๋์ ํ ์ด๋ธ์ ๋๋ค(ํด๋นํ๋ ๊ฒฝ์ฐ). |
end_time |
TIMESTAMP |
์์
์ ์ข
๋ฃ ์๊ฐ์
๋๋ค(์ํฌํฌ ์ดํ์ ๊ฒฝ๊ณผ ์๊ฐ(๋ฐ๋ฆฌ์ด)). ์ด ํ๋๋ ์์
์ด DONE ์ํ๊ฐ ๋๋ ์๊ฐ์ ๋ํ๋
๋๋ค. |
error_result |
RECORD |
ErrorProto ๊ฐ์ฒด๋ก์์ ์ค๋ฅ ์ธ๋ถ์ ๋ณด์ ๋๋ค. |
job_creation_reason.code |
STRING |
์์
์ด ์์ฑ๋ ๋๋ต์ ์ธ ์ด์ ๋ฅผ ์ง์ ํฉ๋๋ค. ๊ฐ๋ฅํ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
|
job_id |
STRING |
์์
์ด ์์ฑ๋ ๊ฒฝ์ฐ ์์
์ ID์
๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ํ์ ์์
์์ฑ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ์ ์ฟผ๋ฆฌ ID์
๋๋ค. ์๋ฅผ ๋ค๋ฉด bquxjob_1234 ์
๋๋ค. |
job_stages |
RECORD |
์์
์ ์ฟผ๋ฆฌ ๋จ๊ณ์
๋๋ค.
์ฐธ๊ณ : ํ ์์ค ์ก์ธ์ค ์ ์ฑ ์ด ์ ์ฉ๋๋ ํ ์ด๋ธ์์ ์ฝ๋ ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ ์ด ์ด์ ๊ฐ์ด ๋น์ด ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ BigQuery์ ํ ์์ค ๋ณด์ ๊ถ์ฅ์ฌํญ์ ์ฐธ์กฐํ์ธ์. |
job_type |
STRING |
์์
์ ์ ํ. QUERY , LOAD , EXTRACT , COPY , NULL ์ผ ์ ์์ต๋๋ค. NULL ๊ฐ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์
์ ๋ํ๋
๋๋ค.
|
labels |
RECORD |
ํค-๊ฐ ์์ผ๋ก ์์ ์ ์ ์ฉ๋ ๋ผ๋ฒจ์ ๋ฐฐ์ด |
parent_job_id |
STRING |
์์ ์์ ์ ID(์๋ ๊ฒฝ์ฐ) |
priority |
STRING |
์ด ์์
์ ์ฐ์ ์์. ์ ํจํ ๊ฐ์ INTERACTIVE ๋ฐ BATCH ์
๋๋ค. |
project_id |
STRING |
(ํด๋ฌ์คํฐ๋ง ์ด) ํ๋ก์ ํธ์ ID์ ๋๋ค. |
project_number |
INTEGER |
ํ๋ก์ ํธ์ ๋ฒํธ์ ๋๋ค. |
query |
STRING |
SQL ์ฟผ๋ฆฌ ํ
์คํธ. JOBS_BY_PROJECT ๋ทฐ์๋ง ์ฟผ๋ฆฌ ์ด์ด ์์ต๋๋ค. |
referenced_tables |
RECORD |
์์ ์์ ์ฐธ์กฐํ๋ ํ ์ด๋ธ์ ๋ฐฐ์ด์ ๋๋ค. ์บ์ ์ ์ค์ด ์๋ ์ฟผ๋ฆฌ ์์ ๋ง ์ฑ์์ง๋๋ค. |
reservation_id |
STRING |
์ด ์์
์ ํ ๋น๋ ๊ธฐ๋ณธ ์์ฝ์ ์ด๋ฆ์ด๋ฉฐ RESERVATION_ADMIN_PROJECT:RESERVATION_LOCATION.RESERVATION_NAME ํ์์
๋๋ค.์ด ์ถ๋ ฅ์์ ๊ฐ ํญ๋ชฉ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
|
edition |
STRING |
์ด ์์ ์ ํ ๋น๋ ์์ฝ๊ณผ ์ฐ๊ฒฐ๋ ๋ฒ์ ์ ๋๋ค. ๋ฒ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ BigQuery ๋ฒ์ ์๊ฐ๋ฅผ ์ฐธ์กฐํ์ธ์. |
session_info |
RECORD |
์ด ์์ ์ด ์คํ๋ ์ธ์ ์ ๋ํ ์ธ๋ถ์ ๋ณด์ ๋๋ค(์๋ ๊ฒฝ์ฐ). |
start_time |
TIMESTAMP |
์์
์ ์์ ์๊ฐ์
๋๋ค(์ํฌํฌ ์ดํ์ ๊ฒฝ๊ณผ ์๊ฐ(๋ฐ๋ฆฌ์ด)). ์ด ํ๋๋ ์์
์ด PENDING ์ํ์์ RUNNING ๋๋ DONE ์ํ๊ฐ ๋๋ ์๊ฐ์ ๋ํ๋
๋๋ค. |
state |
STRING |
์์
์ ์คํ ์ํ. ์ ํจํ ์ํ์๋ PENDING , RUNNING , DONE ์ด ์์ต๋๋ค.
|
statement_type |
STRING |
์ฟผ๋ฆฌ ๋ฌธ์ ์ ํ์
๋๋ค. ์๋ฅผ ๋ค๋ฉด DELETE , INSERT , SCRIPT , SELECT , UPDATE ์
๋๋ค. ์ ํจํ ๊ฐ ๋ชฉ๋ก์ QueryStatementType์ ์ฐธ์กฐํ์ธ์.
|
timeline |
RECORD |
์์ ์ ์ฟผ๋ฆฌ ํ์๋ผ์ธ์ ๋๋ค. ์ฟผ๋ฆฌ ์คํ ์ค๋ ์ท์ ํฌํจํฉ๋๋ค. |
total_bytes_billed |
INTEGER |
ํ๋ก์ ํธ๊ฐ ์ฃผ๋ฌธํ ๊ฐ๊ฒฉ ์ฑ
์ ์ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ์ด ํ๋์๋ ์์
์ ๋ํด ์ฒญ๊ตฌ๋๋ ์ด ๋ฐ์ดํธ๊ฐ ํฌํจ๋ฉ๋๋ค. ํ๋ก์ ํธ๊ฐ ์ ์ก์ ๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ ๋ฐ์ดํธ ์๊ธ์ด ์ฒญ๊ตฌ๋์ง ์์ผ๋ฉฐ ์ด ํ๋๋ ์ฐธ๊ณ ์ฉ์ด ๋ฉ๋๋ค.
์ฐธ๊ณ : ํ ์์ค ์ก์ธ์ค ์ ์ฑ ์ด ์ ์ฉ๋๋ ํ ์ด๋ธ์์ ์ฝ๋ ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ ์ด ์ด์ ๊ฐ์ด ๋น์ด ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ BigQuery์ ํ ์์ค ๋ณด์ ๊ถ์ฅ์ฌํญ์ ์ฐธ์กฐํ์ธ์. |
total_bytes_processed |
INTEGER |
์์ ์์ ์ฒ๋ฆฌํ ์ด ๋ฐ์ดํธ ์ฐธ๊ณ : ํ ์์ค ์ก์ธ์ค ์ ์ฑ ์ด ์ ์ฉ๋๋ ํ ์ด๋ธ์์ ์ฝ๋ ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ ์ด ์ด์ ๊ฐ์ด ๋น์ด ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ BigQuery์ ํ ์์ค ๋ณด์ ๊ถ์ฅ์ฌํญ์ ์ฐธ์กฐํ์ธ์. |
total_modified_partitions |
INTEGER |
์์
์์ ์์ ํ ์ด ํํฐ์
์์
๋๋ค. ์ด ํ๋๋ LOAD ๋ฐ QUERY ์์
์ ์ฑ์์ง๋๋ค.
|
total_slot_ms |
INTEGER |
์ฌ์๋๋ฅผ ํฌํจํ์ฌ RUNNING ์ํ์ ์ ์ฒด ๊ธฐ๊ฐ ๋์ ์์
์ ์ฌ๋กฏ ๋ฐ๋ฆฌ์ด์
๋๋ค. |
transaction_id |
STRING |
์ด ์์ ์ด ์คํ๋ ํธ๋์ญ์ ์ ID์ ๋๋ค(์๋ ๊ฒฝ์ฐ). (๋ฏธ๋ฆฌ๋ณด๊ธฐ) |
user_email |
STRING |
(ํด๋ฌ์คํฐ๋ง ์ด) ์์ ์ ์คํํ ์ฌ์ฉ์์ ์ด๋ฉ์ผ ์ฃผ์ ๋๋ ์๋น์ค ๊ณ์ ์ ๋๋ค. |
query_info.resource_warning |
STRING |
์ฟผ๋ฆฌ ์ฒ๋ฆฌ ์ค ๋ฆฌ์์ค ์ฌ์ฉ์ด ์์คํ
์ ๋ด๋ถ ๊ธฐ์ค์ ์ ์ด๊ณผํ ๊ฒฝ์ฐ ํ์๋๋ ๊ฒฝ๊ณ ๋ฉ์์ง์
๋๋ค. ์ฑ๊ณต์ ์ธ ์ฟผ๋ฆฌ ์์ ์๋ resource_warning ํ๋๊ฐ ์ฑ์์ง ์ ์์ต๋๋ค. resource_warning ์ ๊ฒฝ์ฐ ์ฟผ๋ฆฌ๋ฅผ ์ต์ ํํ๊ณ query_hashes ๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ ์ฟผ๋ฆฌ ์งํฉ์ ์ฑ๋ฅ ์ถ์ธ๋ฅผ ๋ชจ๋ํฐ๋ง์ ์ค์ ํ๊ธฐ ์ํ ์ถ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ๊ฐ ์ ๊ณต๋ฉ๋๋ค.
|
query_info.query_hashes.normalized_literals |
STRING |
์ฟผ๋ฆฌ์ ํด์ ๊ฐ์ ํฌํจํฉ๋๋ค. normalized_literals ๋ ์ฃผ์, ๋งค๊ฐ๋ณ์ ๊ฐ, UDF, ๋ฆฌํฐ๋ด์ ๋ฌด์ํ๋ 16์ง์ STRING ํด์์
๋๋ค.
๊ธฐ๋ณธ ๋ทฐ๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ์ฟผ๋ฆฌ๊ฐ SELECT * ์ ๊ฐ์ ์ด์ ์์์ ์ผ๋ก ์ฐธ์กฐํ๊ณ ํ
์ด๋ธ ์คํค๋ง๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํด์ ๊ฐ์ด ๋ฌ๋ผ์ง๋๋ค.
์ด ํ๋๋ ์บ์ ์ ์ค์ด ์๋ ์ฑ๊ณตํ GoogleSQL ์ฟผ๋ฆฌ์ ํ์๋ฉ๋๋ค. |
query_info.performance_insights |
RECORD |
์์ ์ ๋ํ ์ฑ๋ฅ ํต๊ณ. |
query_info.optimization_details |
STRUCT |
์์ ์ ๊ธฐ๋ก ๊ธฐ๋ฐ ์ต์ ํ. |
transferred_bytes |
INTEGER |
BigQuery Omni ๊ต์ฐจ ํด๋ผ์ฐ๋ ์ ์ก ์์ ๊ณผ ๊ฐ์ ๊ต์ฐจ ํด๋ผ์ฐ๋ ์ฟผ๋ฆฌ๋ฅผ ์ํด ์ ์ก๋ ์ด ๋ฐ์ดํธ ์์ ๋๋ค. |
materialized_view_statistics |
RECORD |
์ฟผ๋ฆฌ ์์ ์์ ๊ณ ๋ ค๋๋ ๊ตฌ์ฒดํ๋ ๋ทฐ ํต๊ณ์ ๋๋ค. (๋ฏธ๋ฆฌ๋ณด๊ธฐ) |
metadata_cache_statistics |
RECORD |
์ฟผ๋ฆฌ ์์ ์์ ์ฐธ์กฐ๋ ํ ์ด๋ธ์ ๋ฉํ๋ฐ์ดํฐ ์ด ์์ธ ์ฌ์ฉ ํต๊ณ์ ๋๋ค. |
search_statistics |
RECORD |
๊ฒ์์ด์ ํต๊ณ์ ๋๋ค. |
query_dialect |
STRING |
์ด ํ๋๋ 2025๋
5์์ ์ ๊ณต๋ ์์ ์
๋๋ค.
์์
์ ์ฌ์ฉ๋ ์ฟผ๋ฆฌ ์ธ์ด์
๋๋ค. ์ ํจํ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด ํ๋๋ ์ฟผ๋ฆฌ ์์ ์๋ง ์ฑ์์ง๋๋ค. ์ฟผ๋ฆฌ ์ธ์ด์ ๊ธฐ๋ณธ ์ ํ์ ๊ตฌ์ฑ ์ค์ ์ผ๋ก ์ ์ดํ ์ ์์ต๋๋ค. |
continuous |
BOOLEAN |
์์ ์ด ์ฐ์ ์ฟผ๋ฆฌ์ธ์ง ์ฌ๋ถ์ ๋๋ค. |
continuous_query_info.output_watermark |
TIMESTAMP |
์ฐ์ ์ฟผ๋ฆฌ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ฒ๋ฆฌํ ์์ ์ ๋ํ๋ ๋๋ค. |
vector_search_statistics |
RECORD |
๋ฒกํฐ ๊ฒ์ ์ฟผ๋ฆฌ์ ํต๊ณ์ ๋๋ค. |
์ฟผ๋ฆฌ ์์
์ ์์ฝ ๋น์ฉ์ ์ฐพ๊ธฐ ์ํด INFORMATION_SCHEMA.JOBS
๋ฅผ ์ฟผ๋ฆฌํ ๋๋ SCRIPT
๋ฌธ ์ ํ์ ์ ์ธํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ผ๋ถ ๊ฐ์ด ๋ ๋ฒ ๊ณ์ฐ๋ฉ๋๋ค. SCRIPT
ํ์๋ ์ด ์์
์ ์ผ๋ถ๋ก ์คํ๋ ๋ชจ๋ ํ์ ์์
์ ์์ฝ ๊ฐ์ด ํฌํจ๋ฉ๋๋ค.
๋ฉํฐ ๋ฌธ ์ฟผ๋ฆฌ ์์
๋ฉํฐ ๋ฌธ ์ฟผ๋ฆฌ ์์
์ ์ ์ฐจ์ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ ์์
์
๋๋ค.
๋ฉํฐ ๋ฌธ ์ฟผ๋ฆฌ ์์
์ DECLARE
๋ก ๋ณ์๋ฅผ ์ ์ํ๊ฑฐ๋ IF
๋๋ WHILE
๊ณผ ๊ฐ์ ํ๋ฆ ์ ์ด ๋ฌธ์ ํฌํจํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. INFORMATION_SCHEMA.JOBS
๋ฅผ ์ฟผ๋ฆฌํ ๋๋ ๋ฉํฐ ๋ฌธ ์ฟผ๋ฆฌ ์์
๊ณผ ๋ค๋ฅธ ์์
์ ์ฐจ์ด๋ฅผ ์ธ์ํด์ผ ํฉ๋๋ค. ๋ฉํฐ ๋ฌธ ์ฟผ๋ฆฌ ์์
์ ํน์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
statement_type
=SCRIPT
reservation_id
=NULL
ํ์ ์์ .
๊ฐ ๋ฉํฐ ๋ฌธ ์ฟผ๋ฆฌ ์์
์ ํ์ ์์
์๋ ๋ฉํฐ ๋ฌธ ์ฟผ๋ฆฌ ์์
์์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ parent_job_id
๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ์ด ์์
์ ์ผ๋ถ๋ก ์คํ๋ ๋ชจ๋ ํ์ ์์
์ ๋ํ ์์ฝ ๊ฐ์ด ํฌํจ๋ฉ๋๋ค.
์ด๋ฌํ ์ด์ ๋ก ์ฟผ๋ฆฌ ์์
์ ์์ฝ ๋น์ฉ์ ์ฐพ๊ธฐ ์ํด INFORMATION_SCHEMA.JOBS
๋ฅผ ์ฟผ๋ฆฌํ ๋๋ SCRIPT
๋ฌธ ์ ํ์ ์ ์ธํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด total_slot_ms
์ ๊ฐ์ ์ผ๋ถ ๊ฐ์ ๋ ๋ฒ ๊ณ์ฐ๋ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ๋ณด๊ด
์ด ๋ทฐ์๋ ํ์ฌ ์คํ ์ค์ธ ์์ ๊ณผ ์ง๋ 180์ผ ๋์์ ์์ ๊ธฐ๋ก์ด ํฌํจ๋์ด ์์ต๋๋ค.
๋ฒ์ ๋ฐ ๊ตฌ๋ฌธ
์ด ๋ทฐ์ ๋ํ ์ฟผ๋ฆฌ์๋ ๋ฆฌ์ ํ์ ์๊ฐ ์์ด์ผ ํฉ๋๋ค. ๋ค์ ํ์๋ ์ด ๋ทฐ์ ๋ฆฌ์ ๋ฒ์๊ฐ ๋์ ์์ต๋๋ค.
๋ทฐ ์ด๋ฆ | ๋ฆฌ์์ค ๋ฒ์ | ๋ฆฌ์ ๋ฒ์ |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS[_BY_PROJECT] |
ํ๋ก์ ํธ ์์ค | REGION |
-
์ ํ์ฌํญ:
PROJECT_ID
: Google Cloud ํ๋ก์ ํธ์ ID์ ๋๋ค. ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ ํ๋ก์ ํธ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. -
REGION
: ๋ชจ๋ ๋ฐ์ดํฐ ์ธํธ ๋ฆฌ์ ์ด๋ฆ์ ๋๋ค. ์๋ฅผ ๋ค๋ฉด`region-us`
์ ๋๋ค.
์์
๊ธฐ๋ณธ ํ๋ก์ ํธ๊ฐ ์๋ ํ๋ก์ ํธ์ ๋ํด ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ค๋ฉด ๋ค์ ํ์์ผ๋ก ํ๋ก์ ํธ ID๋ฅผ ์ถ๊ฐํฉ๋๋ค.
`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS
PROJECT_ID
: ํ๋ก์ ํธ IDREGION_NAME
: ํ๋ก์ ํธ ๋ฆฌ์
์๋ฅผ ๋ค๋ฉด `myproject`.`region-us-central1`.INFORMATION_SCHEMA.JOBS
์
๋๋ค.
์ฃผ๋ฌธํ ์์ ์ฌ์ฉ๋๊ณผ ๊ฒฐ์ ๋ฐ์ดํฐ ๋น๊ต
์ฃผ๋ฌธํ ๊ฐ๊ฒฉ ์ฑ
์ ์ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ INFORMATION_SCHEMA.JOBS
๋ทฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ๋ ๊ธฐ๊ฐ์ ์ปดํจํ
์๊ธ์ ๊ฒํ ํ ์ ์์ต๋๋ค.
์ฉ๋ ๊ธฐ๋ฐ(์ฌ๋กฏ) ๊ฐ๊ฒฉ ์ฑ
์ ์ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ INFORMATION_SCHEMA.RESERVATIONS_TIMELINE
์ ์ฌ์ฉํ์ฌ ์ง์ ๋ ๊ธฐ๊ฐ ๋์์ ์ปดํจํ
์๊ธ์ ๊ฒํ ํ ์ ์์ต๋๋ค.
๋ค์ ์ฟผ๋ฆฌ๋ ์ฒญ๊ตฌ๋ TiB์ ๊ทธ์ ๋ฐ๋ฅธ ์๊ธ์ ์ผ์ผ ์์ ์ง๊ณ๋ฅผ ์์ฑํฉ๋๋ค. ์ ํ์ฌํญ ์น์ ์์๋ ์ด๋ฌํ ์์ ๋น์ฉ์ด ์ฒญ๊ตฌ์์ ์ผ์นํ์ง ์์ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ์ค๋ช ํฉ๋๋ค.
์ด ์์์์๋ ๋ค์ ์ถ๊ฐ ๋ณ์๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์์ ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ์์ ํ ์ ์์ต๋๋ค.
START_DATE
: ์ง๊ณํ ๊ฐ์ฅ ๋น ๋ฅธ ๋ ์ง์ ๋๋ค(๋น์ผ ํฌํจ).END_DATE
: ์ง๊ณํ ์ต์ ๋ ์ง์ ๋๋ค(๋น์ผ ํฌํจ).PRICE_PER_TIB
: ์์ ์ฒญ๊ตฌ์ก์ ์ฌ์ฉ๋๋ TiB๋น ์ฃผ๋ฌธํ ๊ฐ๊ฒฉ์ ๋๋ค.
CREATE TEMP FUNCTION isBillable(error_result ANY TYPE) AS ( -- You aren't charged for queries that return an error. error_result IS NULL -- However, canceling a running query might incur charges. OR error_result.reason = 'stopped' ); -- BigQuery hides the number of bytes billed on all queries against tables with -- row-level security. CREATE TEMP FUNCTION isMaybeUsingRowLevelSecurity( job_type STRING, tib_billed FLOAT64, error_result ANY TYPE) AS ( job_type = 'QUERY' AND tib_billed IS NULL AND isBillable(error_result) ); WITH query_params AS ( SELECT date 'START_DATE' AS start_date, -- inclusive date 'END_DATE' AS end_date, -- inclusive ), usage_with_multiplier AS ( SELECT job_type, error_result, creation_time, -- Jobs are billed by end_time in PST8PDT timezone, regardless of where -- the job ran. EXTRACT(date FROM end_time AT TIME ZONE 'PST8PDT') billing_date, total_bytes_billed / 1024 / 1024 / 1024 / 1024 total_tib_billed, CASE statement_type WHEN 'SCRIPT' THEN 0 WHEN 'CREATE_MODEL' THEN 50 * PRICE_PER_TIB ELSE PRICE_PER_TIB END AS multiplier, FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS ) SELECT billing_date, sum(total_tib_billed * multiplier) estimated_charge, sum(total_tib_billed) estimated_usage_in_tib, countif(isMaybeUsingRowLevelSecurity(job_type, total_tib_billed, error_result)) AS jobs_using_row_level_security, FROM usage_with_multiplier, query_params WHERE 1 = 1 -- Filter by creation_time for partition pruning. AND date(creation_time) BETWEEN date_sub(start_date, INTERVAL 2 day) AND end_date AND billing_date BETWEEN start_date AND end_date AND isBillable(error_result) GROUP BY billing_date ORDER BY billing_date;
์ ํ์ฌํญ
BigQuery๋ ํ ์์ค ๋ณด์์ ๊ฐ์ถ ํ ์ด๋ธ์ ๋ํ ์ฟผ๋ฆฌ์ ์ผ๋ถ ํต๊ณ๋ฅผ ์จ๊น๋๋ค. ์ ๊ณต๋ ์ฟผ๋ฆฌ๋ ์ํฅ์ ๋ฐ๋ ์์ ์๋ฅผ
jobs_using_row_level_security
๋ก ๊ณ์ฐํ์ง๋ง ์ฒญ๊ตฌ ๊ฐ๋ฅํ ์ฌ์ฉ๋์ ์ก์ธ์คํ ์ ์์ต๋๋ค.BigQuery ML ์ฃผ๋ฌธํ ์ฟผ๋ฆฌ ๊ฐ๊ฒฉ ์ฑ ์ ์ ์์ฑ ์ค์ธ ๋ชจ๋ธ์ ์ ํ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
INFORMATION_SCHEMA.JOBS
๋ ์์ฑ๋ ๋ชจ๋ธ ์ ํ์ ์ถ์ ํ์ง ์์ผ๋ฏ๋ก ์ ๊ณต๋ ์ฟผ๋ฆฌ๋ ๋ชจ๋ CREATE_MODEL ๋ฌธ์์ ์ฒญ๊ตฌ ์๊ธ์ด ๋ ๋์ ๋ชจ๋ธ ์ ํ์ ๋ง๋ค์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.Apache Spark ์ ์ฐจ์๋ ์ ์ฌํ ๊ฐ๊ฒฉ ์ฑ ์ ๋ชจ๋ธ์ด ์ฌ์ฉ๋์ง๋ง ์๊ธ์ BigQuery Enterprise ๋ฒ์ ์ฌ์ฉํ ๋งํผ๋ง ์ง๋ถํ๋ SKU๋ก ๋ณด๊ณ ๋ฉ๋๋ค.
INFORMATION_SCHEMA.JOBS
๋ ์ด ์ฌ์ฉ๋์total_bytes_billed
๋ก ์ถ์ ํ์ง๋ง ์ฌ์ฉ๋์ด ๋ํ๋ด๋ SKU๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
ํ๊ท ์ฌ๋กฏ ์ฌ์ฉ๋ ๊ณ์ฐ
๋ค์ ์์์์๋ ์ง์ ๋ ํ๋ก์ ํธ์ ์ง๋ 7์ผ ๋์์ ๋ชจ๋ ์ฟผ๋ฆฌ์ ๋ํ ํ๊ท ์ฌ๋กฏ ์ฌ์ฉ๋์ ๊ณ์ฐํฉ๋๋ค. ์ด ๊ณ์ฐ์ ์ผ์ฃผ์ผ ๋์ ์ผ๊ด๋ ์ฌ๋กฏ ์ฌ์ฉ๋์ ๊ฐ์ง ํ๋ก์ ํธ์์ ๊ฐ์ฅ ์ ํํฉ๋๋ค. ํ๋ก์ ํธ์ ์ฌ๋กฏ ์ฌ์ฉ๋์ด ์ผ์ ํ์ง ์์ผ๋ฉด ์ด ์ฌ์ฉ๋ ์์น๊ฐ ์์๋ณด๋ค ๋ฎ์ ์ ์์ต๋๋ค.
์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
SELECT SUM(total_slot_ms) / (1000 * 60 * 60 * 24 * 7) AS avg_slots FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE -- Filter by the partition column first to limit the amount of data scanned. -- Eight days allows for jobs created before the 7 day end_time filter. creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 8 DAY) AND CURRENT_TIMESTAMP() AND job_type = 'QUERY' AND statement_type != 'SCRIPT' AND end_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY) AND CURRENT_TIMESTAMP();
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
+------------+ | avg_slots | +------------+ | 3879.1534 | +------------+
ํน์ ์์ฝ์ ๋ํ ์ฌ์ฉ๋์ WHERE reservation_id = "โฆ"
๋ก ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ ์ผ์ ๊ธฐ๊ฐ ๋์ ์์ฝ ์ฌ์ฉ ๋น์จ์ ๊ฒฐ์ ํ๋ ๋ฐ ์ ์ฉํ ์ ์์ต๋๋ค. ์คํฌ๋ฆฝํธ ์์
์ ๊ฒฝ์ฐ ์์ ์์
์ ํ์ ์์
์ ์ด ์ฌ๋กฏ ์ฌ์ฉ๋๋ ๋ณด๊ณ ํฉ๋๋ค. ์ค๋ณต ๊ณ์ฐ์ด ๋ฐฉ์ง๋๋๋ก WHERE statement_type != "SCRIPT"
๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์์
์ ์ ์ธํฉ๋๋ค.
๊ฐ๋ณ ์์
์ ํ๊ท ์ฌ๋กฏ ์ฌ์ฉ๋์ ํ์ธํ๋ ค๋ฉด total_slot_ms / TIMESTAMP_DIFF(end_time, start_time, MILLISECOND)
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฟผ๋ฆฌ ์ฐ์ ์์๋ณ ์ต๊ทผ ํ์ฑ ์ฟผ๋ฆฌ ์
๋ค์ ์์์๋ ์ง๋ 7์๊ฐ ์ด๋ด์ ์์๋ ์ฟผ๋ฆฌ ์๋ฅผ ์ฐ์ ์์(๋ํํ ๋๋ ์ผ๊ด)๋ณ๋ก ๊ทธ๋ฃนํํ์ฌ ํ์ํฉ๋๋ค.
SELECT priority, COUNT(*) active_jobs FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 hour) AND job_type = 'QUERY' GROUP BY priority;
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
+-------------+-------------+ | priority | active_jobs | +-------------+-------------+ | INTERACTIVE | 2 | | BATCH | 3 | +-------------+-------------+
priority
ํ๋๋ ์ฟผ๋ฆฌ๊ฐ INTERACTIVE
์ธ์ง BATCH
์ธ์ง ๋ํ๋
๋๋ค.
๋ก๋ ์์ ๊ธฐ๋ก ๋ณด๊ธฐ
๋ค์ ์์์์๋ ์ง์ ๋ ํ๋ก์ ํธ์ ์ผ๊ด ๋ก๋ ์์ ์ ์ ์ถํ ๋ชจ๋ ์ฌ์ฉ์ ๋๋ ์๋น์ค ๊ณ์ ์ ๋์ดํฉ๋๋ค. ์๊ฐ ๊ฒฝ๊ณ๊ฐ ์ง์ ๋์ง ์์์ผ๋ฏ๋ก ์ด ์ฟผ๋ฆฌ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๊ธฐ๋ก์ ๊ฒ์ฌํฉ๋๋ค.
SELECT user_email AS user, COUNT(*) num_jobs FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE job_type = 'LOAD' GROUP BY user_email;
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
+--------------+ | user | +--------------+ | abc@xyz.com | | xyz@xyz.com | | bob@xyz.com | +--------------+
๋ก๋ ์์ ์๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉ๋ ์ผ์ผ ์์ ํ ๋น๋ ํ์ธ
๋ค์ ์์๋ ์ผ์ผ ์์ ํ ๋น๋์ ์ฌ์ฉ๋์ ํ์ธํ ์ ์๋๋ก ๋ ์ง, ๋ฐ์ดํฐ ์ธํธ, ํ ์ด๋ธ๋ณ๋ก ์์ ์๋ฅผ ๋ฐํํฉ๋๋ค.
SELECT DATE(creation_time) as day, destination_table.project_id as project_id, destination_table.dataset_id as dataset_id, destination_table.table_id as table_id, COUNT(job_id) AS load_job_count FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 8 DAY) AND CURRENT_TIMESTAMP() AND job_type = "LOAD" GROUP BY day, project_id, dataset_id, table_id ORDER BY day DESC;
+-------------+------------+-------------+----------+-----------------+ |day | project_id | dataset_id | table_id | load_job_count | +-------------+------------+-------------+----------+-----------------+ | 2020-10-10 | my_project | dataset1 | orders | 58 | | 2020-10-10 | my_project | dataset1 | product | 20 | | 2020-10-10 | my_project | dataset1 | sales | 11 | +-------------+------------+-------------+----------+-----------------+
์ต๊ทผ ์คํจํ ์์ ๊ฐ์ ธ์ค๊ธฐ
๋ค์ ์์๋ ์ต๊ทผ ์คํจํ ์์ 3๊ฐ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
SELECT job_id, creation_time, user_email, error_result FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE error_result.reason != "Null" ORDER BY creation_time DESC LIMIT 3;
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๋น์ทํ๊ฒ ํ์๋ฉ๋๋ค.
+------------+--------------------------+------------------+-------------------------------------+ | job_id | creation_time | user_email | error_result | +------------+--------------------------+------------------+-------------------------------------+ | bquxjob_1 | 2020-10-10 00:00:00 UTC | abc@example.com | Column 'col1' has mismatched type...| | bquxjob_2 | 2020-10-11 00:00:00 UTC | xyz@example.com | Column 'col1' has mismatched type...| | bquxjob_3 | 2020-10-11 00:00:00 UTC | bob@example.com | Column 'col1' has mismatched type...| +------------+--------------------------+------------------+-------------------------------------+
์ฅ๊ธฐ ์คํ ์์ ๋ชฉ๋ก ์ฟผ๋ฆฌ
๋ค์ ์์๋ 30๋ถ ์ด์ RUNNING
๋๋ PENDING
์ํ์ธ ์ฅ๊ธฐ ์คํ ์์
๋ชฉ๋ก์ ๋ณด์ฌ์ค๋๋ค.
SELECT job_id, job_type, state, creation_time, start_time, user_email FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE state!="DONE" AND creation_time <= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 MINUTE) ORDER BY creation_time ASC;
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
+--------+----------+---------+--------------------------------+--------------------------------+------------------+ | job_id | job_type | state | creation_time | start_time | user_email | +--------+----------+---------+--------------------------------+--------------------------------+------------------+ | bquxjob_1 | QUERY | RUNNING | 2023-05-03 05:07:22.818000 UTC | 2023-05-03 05:07:22.905000 UTC | abc@example.com | | bquxjob_2 | QUERY | PENDING | 2023-05-01 02:05:47.925000 UTC | 2023-05-01 02:05:47.998000 UTC | xyz@example.com | | bquxjob_3 | QUERY | PENDING | 2023-05-01 02:05:47.925000 UTC | 2023-05-01 02:05:47.998000 UTC | abc@example.com | +--------+----------+---------+--------------------------------+--------------------------------+------------------+
์ ํ์ ์์ ์์ฑ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ
๋ค์ ์์๋ BigQuery์์ ์์ ์ ๋ง๋ค์ง ์์ ์ ํ์ ์์ ์์ฑ ๋ชจ๋์์ ์คํ๋ ์ฟผ๋ฆฌ ๋ชฉ๋ก์ ๋ณด์ฌ์ค๋๋ค.
SELECT job_id, FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE TIMESTAMP_TRUNC(creation_time, DAY) = '2024-06-12' AND job_creation_reason.code IS NULL LIMIT 3;
๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
+-----------+ | job_id | | +-----------+ | bquxjob_1 | | bquxjob_2 | | bquxjob_3 | +-----------+
๋ค์ ์์๋ BigQuery์์ ์์ ์ ๋ง๋ค์ง ์์ ์ ํ์ ์์ ์์ฑ ๋ชจ๋์์ ์คํ๋ ์ฟผ๋ฆฌ์ ๊ดํ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋๋ค.
SELECT job_id, statement_type, priority, cache_hit, job_creation_reason.code AS job_creation_reason_code, total_bytes_billed, total_bytes_processed, total_slot_ms, state, error_result.message AS error_result_message, FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE TIMESTAMP_TRUNC(creation_time, DAY) = '2024-06-12' AND job_id = '2Lm09bHxDEsoVK8zwzWJomLHU_Ud%1910479b151' -- queryId
์ฐธ๊ณ : ์ด ์ฟผ๋ฆฌ์ ๋ํ ์์
์ด ์์ฑ๋์ง ์์ ๊ฒฝ์ฐ job_id
ํ๋์ ์ฟผ๋ฆฌ์ queryId
๊ฐ ํฌํจ๋ฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
+-----------+----------------+-------------+-----------+--------------------------+--------------------+---------------------+---------------+-------+----------------------+ | job_id | statement_type | priority | cache_hit | job_creation_reason_code | total_bytes_billed | total_bytes_processed | total_slot_ms | state | error_result_message | +-----------+----------------+-------------+-----------+--------------------------+--------------------+---------------------+---------------+-------+----------------------+ | bquxjob_1 | SELECT | INTERACTIVE | false | null | 161480704 | 161164718 | 3106 | DONE | null | +-----------+----------------+-------------+-----------+--------------------------+--------------------+---------------------+---------------+-------+----------------------+
๋ค์ ์์๋ BigQuery์์ ์์ ์ ๋ง๋ ์ ํ์ ์์ ์์ฑ ๋ชจ๋์์ ์คํ๋ ์ฟผ๋ฆฌ ๋ชฉ๋ก์ ๋ณด์ฌ์ค๋๋ค.
SELECT job_id, job_creation_reason.code AS job_creation_reason_code FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE TIMESTAMP_TRUNC(creation_time, DAY) = '2024-06-12' AND job_creation_reason.code IS NOT NULL AND job_creation_reason.code != 'REQUESTED' LIMIT 3
๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
+-----------+--------------------------+ | job_id | job_creation_reason_code | +-----------+--------------------------+ | bquxjob_1 | LARGE_RESULTS | | bquxjob_2 | LARGE_RESULTS | | bquxjob_3 | LARGE_RESULTS | +-----------+--------------------------+
์ฌ์ฉ์ ID๋น ์ฒ๋ฆฌ๋๋ ๋ฐ์ดํธ ์
๋ค์ ์์๋ ์ฌ์ฉ์๋น ์ฟผ๋ฆฌ ์์ ์ ๋ํด ์ฒญ๊ตฌ๋๋ ์ด ๋ฐ์ดํธ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
SELECT user_email, SUM(total_bytes_billed) AS bytes_billed FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE job_type = 'QUERY' AND statement_type != 'SCRIPT' GROUP BY user_email;
์ฐธ๊ณ : JOBS
๋ทฐ์ ๋ํด ์คํค๋ง ๋ฌธ์์์ total_bytes_billed
์ด์ ๋ํ ์ฃผ์ ์ฌํญ์ ์ฐธ์กฐํ์ธ์.
๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ํ์๋ฉ๋๋ค.
+---------------------+--------------+ | user_email | bytes_billed | +---------------------+--------------+ | bob@example.com | 2847932416 | | alice@example.com | 1184890880 | | charles@example.com | 10485760 | +---------------------+--------------+
์ฒ๋ฆฌ๋ ๋ฐ์ดํธ์ ์๊ฐ๋ณ ๋ถ๋ฅ
๋ค์ ์์๋ ์ฟผ๋ฆฌ ์์ ์ ๋ํด ์ฒญ๊ตฌ๋๋ ์ด ๋ฐ์ดํธ๋ฅผ ์๊ฐ๋ณ ๊ฐ๊ฒฉ์ผ๋ก ๋ณด์ฌ์ค๋๋ค.
SELECT TIMESTAMP_TRUNC(end_time, HOUR) AS time_window, SUM(total_bytes_billed) AS bytes_billed FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE job_type = 'QUERY' AND statement_type != 'SCRIPT' GROUP BY time_window ORDER BY time_window DESC;
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
+-------------------------+--------------+ | time_window | bytes_billed | +-------------------------+--------------+ | 2022-05-17 20:00:00 UTC | 1967128576 | | 2022-05-10 21:00:00 UTC | 0 | | 2022-04-15 17:00:00 UTC | 41943040 | +-------------------------+--------------+
ํ ์ด๋ธ๋น ์ฟผ๋ฆฌ ์์ ์
๋ค์ ์์๋ my_project
์ ์ฟผ๋ฆฌ๋ ๊ฐ ํ
์ด๋ธ์ด ์ฟผ๋ฆฌ ์์
์ผ๋ก ์ฐธ์กฐ๋ ํ์๋ฅผ ๋ณด์ฌ์ค๋๋ค.
SELECT t.project_id, t.dataset_id, t.table_id, COUNT(*) AS num_references FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS, UNNEST(referenced_tables) AS t GROUP BY t.project_id, t.dataset_id, t.table_id ORDER BY num_references DESC;
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
+------------+------------+----------+----------------+ | project_id | dataset_id | table_id | num_references | +------------+------------+----------+----------------+ | my_project | dataset1 | orders | 58 | | my_project | dataset1 | products | 40 | | other_proj | dataset1 | accounts | 12 | +------------+------------+----------+----------------+
ํ๋ก์ ํธ๋ณ ๊ธฐ์กด SQL ์ฟผ๋ฆฌ ์์ ์
INFORMATION_SCHEMA์ 'query_dialect' ํ๋๋ 2025๋ 5์์ ์ ๊ณต๋ ์์ ์ ๋๋ค. ๋ค์ ์์๋ ํ๋ก์ ํธ์์ ์คํ๋ ๊ธฐ์กด SQL ์ฟผ๋ฆฌ ์์ ์๋ฅผ ๋ณด์ฌ์ค๋๋ค.
SELECT project_id, -- Implicitly defaulted to LegacySQL since the query dialect was not specified -- in the request. COUNTIF(query_dialect = 'DEFAULT_LEGACY_SQL') AS default_legacysql_query_jobs, -- Explicitly requested LegacySQL. COUNTIF(query_dialect = 'LEGACY_SQL') AS legacysql_query_jobs, FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE query_dialect = 'DEFAULT_LEGACY_SQL' OR query_dialect = 'LEGACY_SQL' GROUP BY project_id ORDER BY default_legacysql_query_jobs DESC, legacysql_query_jobs DESC;
ํ ์ด๋ธ๋น ์ฟผ๋ฆฌ ๋ฐ ๋ก๋ ์์ ์ผ๋ก ์์ ๋ ํํฐ์ ์
๋ค์ ์์์์๋ ํ
์ด๋ธ๋ง๋ค DML ๋ฌธ๊ณผ ๋ก๋ ์์
์ด ์๋ ์ฟผ๋ฆฌ๋ก ์์ ๋ ํํฐ์
์๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ด ์ฟผ๋ฆฌ์๋ ๋ณต์ฌ ์์
์ total_modified_partitions
๊ฐ ํ์๋์ง ์์ต๋๋ค.
SELECT destination_table.table_id, SUM(total_modified_partitions) AS total_modified_partitions FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE DATE(creation_time, "America/Los_Angeles") = CURRENT_DATE() GROUP BY table_id ORDER BY total_modified_partitions DESC
์์ ์์ ์ฌ์ฉํ ๋ฐ๋ฆฌ์ด๋น ํ๊ท ์ฌ๋กฏ ์
๋ค์ ์์์๋ ์คํ ์ ๋ฐ์ ๊ฑธ์ณ ์์ ์์ ์ฌ์ฉํ ํ๊ท ์ฌ๋กฏ ์๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ์ด๋ ๋๋ฆฐ ์ฟผ๋ฆฌ๋ฅผ ํด๊ฒฐํ๊ณ ์ฟผ๋ฆฌ์ ๋๋ฆฐ ์คํ์ ๋์ผํ ์ฟผ๋ฆฌ์ ๋น ๋ฅธ ์คํ๊ณผ ๋น๊ตํ ๋ ์ ์ฉํฉ๋๋ค. ์ด ๊ฐ์ ์ด ์์ฝ ํฌ๊ธฐ ๋ฐ ํ๋ก์ ํธ ๋๋ ์์ฝ ๋ด์์ ์คํ๋ ๋์ ์์ ์ ํ๊ท ์์ ๋น๊ตํ๋ฉด ์คํ ์ค์ ์ฌ๋ฌ ์ฟผ๋ฆฌ๊ฐ ๋์์ ์ฌ๋กฏ์ ๋๊ณ ๊ฒฝ์ํ๋์ง ํ์ ํ ์ ์์ต๋๋ค.
ํ๊ท ์ฌ๋กฏ ์๊ฐ ๋ง์์๋ก ์์ ์ ํ ๋น๋ ๋ฆฌ์์ค๊ฐ ๋ง์์ง๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ์คํ ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค.
SELECT ROUND(SAFE_DIVIDE(total_slot_ms,TIMESTAMP_DIFF(end_time, start_time, MILLISECOND)), 1) as avg_slots_per_ms FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE job_id = 'JOB_ID'
JOB_ID
์ ์กฐ์ฌ ์ค์ธ job_id
๋ก ๋ฐ๊ฟ๋๋ค.
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๋น์ทํ๊ฒ ํ์๋ฉ๋๋ค.
+------------------+ | avg_slots_per_ms | +------------------+ | 17.0 | +------------------+
ํ๋ก์ ํธ๋ณ๋ก ๋น์ฉ์ด ๊ฐ์ฅ ๋ง์ด ๋๋ ์ฟผ๋ฆฌ
๋ค์ ์์์๋ ์ฌ๋กฏ ์ฌ์ฉ ์๊ฐ๋ณ๋ก my_project
์์ ๋น์ฉ์ด ๊ฐ์ฅ ๋ง์ด ๋๋ ์ฟผ๋ฆฌ๊ฐ ๋์ ์์ต๋๋ค.
SELECT job_id, query, user_email, total_slot_ms FROM `my_project`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE EXTRACT(DATE FROM creation_time) = current_date() ORDER BY total_slot_ms DESC LIMIT 3
๋ค์ ์์๋ก ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ณ๋ก ๋น์ฉ์ด ๊ฐ์ฅ ๋ง์ด ๋๋ ์ฟผ๋ฆฌ๋ฅผ ๋์ดํ ์๋ ์์ต๋๋ค.
SELECT job_id, query, user_email, total_bytes_processed FROM `my_project`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE EXTRACT(DATE FROM creation_time) = current_date() ORDER BY total_bytes_processed DESC LIMIT 3
๋ ์์ ์ค ํ๋์ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
+-----------+---------------------------------+-----------------------+---------------+ | job_id | query | user_email | total_slot_ms | +-----------+---------------------------------+--------------------------+------------+ | bquxjob_1 | SELECT ... FROM dataset.table1 | bob@example.com | 80,000 | | bquxjob_2 | SELECT ... FROM dataset.table2 | alice@example.com | 78,000 | | bquxjob_3 | SELECT ... FROM dataset.table3 | charles@example.com | 75,000 | +-----------+---------------------------------+-----------------------+---------------+
๋ฆฌ์์ค ๊ฒฝ๊ณ ์ ๋ํ ์ธ๋ถ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
๋ฆฌ์์ค ์ด๊ณผ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด ์ผ์ ๊ธฐ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์กฐํํ ์ ์์ต๋๋ค.
SELECT query, query_info.resource_warning FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time BETWEEN TIMESTAMP("2022-12-01") AND TIMESTAMP("2022-12-08") AND query_info.resource_warning IS NOT NULL LIMIT 3;
๋ ์ง๋ณ๋ก ๊ทธ๋ฃนํ๋ ๋ฆฌ์์ค ๊ฒฝ๊ณ ๋ชจ๋ํฐ๋ง
๋ฆฌ์์ค ์ด๊ณผ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด ๋ ์ง๋ณ๋ก ๊ทธ๋ฃนํ๋ ๋ฆฌ์์ค ๊ฒฝ๊ณ ์ ์ด ๊ฐ์๋ฅผ ๋ชจ๋ํฐ๋งํ์ฌ ์ํฌ๋ก๋์ ๋ณ๊ฒฝ์ด ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
WITH resource_warnings AS ( SELECT EXTRACT(DATE FROM creation_time) AS creation_date FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 14 DAY) AND query_info.resource_warning IS NOT NULL ) SELECT creation_date, COUNT(1) AS warning_counts FROM resource_warnings GROUP BY creation_date ORDER BY creation_date DESC;
์ฟผ๋ฆฌ์ ์ฌ๋กฏ ์ฌ์ฉ๋ ๋ฐ ๋น์ฉ ์์
๋ค์ ์์์์๋ estimated_runnable_units
๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ์์
์ ํ๊ท ์ฌ๋กฏ๊ณผ ์ต๋ ์ฌ๋กฏ์ ๊ณ์ฐํฉ๋๋ค.
์์ฝ์ด ์์ผ๋ฉด reservation_id
๊ฐ NULL
์
๋๋ค.
SELECT project_id, job_id, reservation_id, EXTRACT(DATE FROM creation_time) AS creation_date, TIMESTAMP_DIFF(end_time, start_time, SECOND) AS job_duration_seconds, job_type, user_email, total_bytes_billed, -- Average slot utilization per job is calculated by dividing total_slot_ms by the millisecond duration of the job SAFE_DIVIDE(job.total_slot_ms,(TIMESTAMP_DIFF(job.end_time, job.start_time, MILLISECOND))) AS job_avg_slots, query, -- Determine the max number of slots used at ANY stage in the query. -- The average slots might be 55. But a single stage might spike to 2000 slots. -- This is important to know when estimating number of slots to purchase. MAX(SAFE_DIVIDE(unnest_job_stages.slot_ms,unnest_job_stages.end_ms - unnest_job_stages.start_ms)) AS jobstage_max_slots, -- Check if there's a job that requests more units of works (slots). If so you need more slots. -- estimated_runnable_units = Units of work that can be scheduled immediately. -- Providing additional slots for these units of work accelerates the query, -- if no other query in the reservation needs additional slots. MAX(unnest_timeline.estimated_runnable_units) AS estimated_runnable_units FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS AS job CROSS JOIN UNNEST(job_stages) as unnest_job_stages CROSS JOIN UNNEST(timeline) AS unnest_timeline WHERE project_id = 'my_project' AND (statement_type != 'SCRIPT' OR statement_type IS NULL) AND DATE(creation_time) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AND CURRENT_DATE() GROUP BY 1,2,3,4,5,6,7,8,9,10 ORDER BY job_id;
์๋ฅผ ๋ค์ด ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
+-----------+-----------+----------------+---------------+----------------------+----------+-----------------+--------------------+--------------+--------------------------------+--------------------+--------------------------+ |project_id | job_id | reservation_id | creation_date | job_duration_seconds | job_type | user_email | total_bytes_billed | job_avg_slots| query | jobstage_max_slots | estimated_runnable_units | +-----------+-----------+----------------+---------------+----------------------+----------+-----------------+--------------------+--------------+--------------------------------+--------------------+--------------------------+ | project1 | bquxjob1 | reservation1 | 2020-10-10 | 160 | LOAD | abc@example.com | 161480704 | 2890 | SELECT ... FROM dataset.table1 | 2779.1534 | 8293 | | project1 | bquxjob2 | reservation2 | 2020-12-10 | 120 | LOAD | abc@example.com | 161480704 | 2890 | SELECT ... FROM dataset.table1 | 2779.1534 | 8768 | | project1 | bquxjob3 | reservation1 | 2020-12-10 | 120 | LOAD | abc@example.com | 161480704 | 2890 | SELECT ... FROM dataset.table1 | 1279.1534 | 8738 | +-----------+-----------+----------------+---------------+----------------------+----------+-----------------+--------------------+--------------+--------------------------------+--------------------+--------------------------+
์ฟผ๋ฆฌ ์ฑ๋ฅ ํต๊ณ ๋ณด๊ธฐ
๋ค์ ์์์์๋ Google Cloud ์ฝ์์ ์ฟผ๋ฆฌ ์คํ ๊ทธ๋ํ์ ์ฐ๊ฒฐ๋๋ URL๊ณผ ํจ๊ป ์ง๋ 30์ผ ๋์ ํ๋ก์ ํธ์ ์ฑ๋ฅ ํต๊ณ๊ฐ ์๋ ๋ชจ๋ ์ฟผ๋ฆฌ ์์ ์ ๋ฐํํฉ๋๋ค.
SELECT `bigquery-public-data`.persistent_udfs.job_url( project_id || ':us.' || job_id) AS job_url, query_info.performance_insights FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE DATE(creation_time) >= CURRENT_DATE - 30 -- scan 30 days of query history AND job_type = 'QUERY' AND state = 'DONE' AND error_result IS NULL AND statement_type != 'SCRIPT' AND EXISTS ( -- Only include queries which had performance insights SELECT 1 FROM UNNEST( query_info.performance_insights.stage_performance_standalone_insights ) WHERE slot_contention OR insufficient_shuffle_quota UNION ALL SELECT 1 FROM UNNEST( query_info.performance_insights.stage_performance_change_insights ) WHERE input_data_change.records_read_diff_percentage IS NOT NULL );
๋ฉํ๋ฐ์ดํฐ ์๋ก๊ณ ์นจ ์์ ๋ณด๊ธฐ
๋ค์ ์์๋ ์ง๋ 6์๊ฐ ๋์์ ๋ฉํ๋ฐ์ดํฐ ์๋ก๊ณ ์นจ ์์ ์ ๋ณด์ฌ์ค๋๋ค.
SELECT * FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE job_id LIKE '%metadata_cache_refresh%' AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 6 HOUR) ORDER BY start_time desc LIMIT 10;
REGION_NAME์ ํ์ฌ ๋ฆฌ์ ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
๋์ผํ ์ฟผ๋ฆฌ์ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์ฑ๋ฅ ๋ถ์
๋ค์ ์์์์๋ ์ง๋ 7์ผ ๋์ ๋์ผํ ์ฟผ๋ฆฌ๋ฅผ ์คํํ ์์ ์ค ๊ฐ์ฅ ๋๋ฆฐ ์์ 10๊ฐ๋ฅผ ๋ฐํํฉ๋๋ค.
DECLARE querytext STRING DEFAULT( SELECT query FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE job_id = 'JOB_ID' LIMIT 1 ); SELECT start_time, end_time, project_id, job_id, TIMESTAMP_DIFF(end_time, start_time, SECOND) AS run_secs, total_bytes_processed / POW(1024, 3) AS total_gigabytes_processed, query FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE query = querytext AND total_bytes_processed > 0 AND creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY) ORDER BY 5 DESC LIMIT 3;
JOB_ID
๋ฅผ ๋ถ์ ์ค์ธ ์ฟผ๋ฆฌ๋ฅผ ์คํํ job_id
๋ก ๋ฐ๊ฟ๋๋ค.
์ค๋ ๊ฐ์ฅ ๋ง์ ๋ฐ์ดํธ๋ฅผ ์ค์บํ ์์ 5๊ฐ ์์
๋ค์ ์์์์๋ ์ค๋ ๋ ์ง์ ์กฐ์ง์์ ๊ฐ์ฅ ๋ง์ ๋ฐ์ดํธ๋ฅผ ๊ฒ์ํ ์์
5๊ฐ๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ๋ก๋, ๋ด๋ณด๋ด๊ธฐ, ์ฟผ๋ฆฌ์ ๊ฐ์ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ฟผ๋ฆฌํ๋ ค๋ฉด statement_type
์ ์ถ๊ฐ๋ก ํํฐ๋งํ ์ ์์ต๋๋ค.
SELECT job_id, user_email, total_bytes_billed FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION WHERE EXTRACT(DATE FROM creation_time) = current_date() ORDER BY total_bytes_billed DESC LIMIT 3;
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
+--------------+--------------+---------------------------+ | job_id | user_email | total_bytes_billed | +--------------+--------------+---------------------------+ | bquxjob_1 | abc@xyz.com | 999999 | | bquxjob_2 | def@xyz.com | 888888 | | bquxjob_3 | ghi@xyz.com | 777777 | +--------------+--------------+---------------------------+
๋๊ธฐ ์ค์ด๊ฑฐ๋ ์คํ ์ค์ธ ์์ ๋ณด๊ธฐ
SELECT job_id, creation_time, query FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_USER WHERE state != 'DONE';
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
+--------------+---------------------------+---------------------------------+ | job_id | creation_time | query | +--------------+---------------------------+---------------------------------+ | bquxjob_1 | 2019-10-10 00:00:00 UTC | SELECT ... FROM dataset.table1 | | bquxjob_2 | 2019-10-10 00:00:01 UTC | SELECT ... FROM dataset.table2 | | bquxjob_3 | 2019-10-10 00:00:02 UTC | SELECT ... FROM dataset.table3 | +--------------+---------------------------+---------------------------------+
๋์ผํ ํ๋ก์ ํธ์์ ํน์ ์์ ๊ณผ ํจ๊ป ์คํ๋๋ ํ๊ท ๋์ ์์ ๋ณด๊ธฐ
๋ค์ ์์์๋ ๋์ผํ ํ๋ก์ ํธ์์ ํน์ ์ฟผ๋ฆฌ ์์ ๊ณผ ๋์์ ์คํ๋๋ ์์ ์ ํ๊ท ์๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
์ด ๊ณ์ฐ์ ๋์ผํ ํ๋ก์ ํธ ๋ด ๋์ ์์ ์๊ฐ ์ฆ๊ฐํ์ฌ ์ฌ๋กฏ ๊ฒฝํฉ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋๋ฆฐ ์ฟผ๋ฆฌ๋ฅผ ํด๊ฒฐํ๊ฑฐ๋ ๋๋ฆฐ ์ฟผ๋ฆฌ์ ๋น ๋ฅธ ์ฟผ๋ฆฌ ์คํ์ ๋น๊ตํ ๋ ์ด ๋ฐ์ดํฐ๋ฅผ ์์งํ์ธ์.
์์๋ณด๋ค ํจ์ฌ ๋ง์ ๋์ ์ฟผ๋ฆฌ๊ฐ ์คํ๋๋ ๊ฒฝ์ฐ ์์๋ ์์ ์ด ๋ ๋ง๊ฑฐ๋, ์ฟผ๋ฆฌ๋ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์๋์ง ๋๋ ๋ ๋ค์ธ์ง ํ์ธํฉ๋๋ค.
WITH job_metadata AS ( SELECT creation_time, end_time, job_type FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE job_id = 'JOB_ID' -- If you know the date the job was created, add the following line to speed up the query by providing the date in UTC: -- AND DATE(creation_time) = 'YYYY-MM-DD' ), intervals AS ( SELECT TIMESTAMP_ADD(creation_time, INTERVAL (seconds_offset) SECOND) AS ts, job_type FROM job_metadata, UNNEST (GENERATE_ARRAY(0, IF(TIMESTAMP_DIFF(end_time, creation_time, SECOND) > 0, TIMESTAMP_DIFF(end_time, creation_time, SECOND), 1))) as seconds_offset ), concurrent_jobs AS ( SELECT int.ts, COUNT(*) as concurrent_jobs_count FROM intervals int JOIN `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT j ON int.ts BETWEEN j.creation_time and j.end_time WHERE job_id != 'JOB_ID' AND j.job_type = int.job_type GROUP BY int.ts) SELECT ROUND(AVG(concurrent_jobs_count),1) as average_concurrent_jobs FROM concurrent_jobs
๋ค์์ ๋ฐ๊ฟ๋๋ค.
JOB_ID
: ๋ถ์ ์ค์ธ ์ฟผ๋ฆฌ์ ์์ IDREGION_NAME
: ํ๋ก์ ํธ ๋ฆฌ์
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๋น์ทํฉ๋๋ค.
+-------------------------+ | average_concurrent_jobs | +-------------------------+ | 2.8 | +-------------------------+
๋ด๋ณด๋ด๊ธฐ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋ ๋ฐ์ดํธ ๊ฐ์ ธ์ค๊ธฐ
๋ค์ ์์์์๋ EXTRACT
์์
์ ํ์ total_bytes_processed
๊ฐ์ ๊ณ์ฐํฉ๋๋ค. ๋ด๋ณด๋ด๊ธฐ ์์
ํ ๋น๋์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ด๋ณด๋ด๊ธฐ ์์
ํ ๋น๋ ์ ์ฑ
์ ์ฐธ๊ณ ํ์ธ์.
์ฒ๋ฆฌ๋ ์ด ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ง๊ณ ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋งํ๊ณ ๋ด๋ณด๋ด๊ธฐ ์์
์ ์ผ์ผ 50TB ํ๋ ์ดํ๋ก ์ ์งํ ์ ์์ต๋๋ค.
SELECT DATE(creation_time) as day, project_id as source_project_id, SUM(total_bytes_processed) AS total_bytes_processed FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 8 DAY) AND CURRENT_TIMESTAMP() AND job_type = "EXTRACT" GROUP BY day, source_project_id ORDER BY day DESC;
๋ณต์ฌ ์์ ์ฌ์ฉ๋ ๊ฐ์ ธ์ค๊ธฐ
๋ณต์ฌ ์์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ ์ด๋ธ ๋ณต์ฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์. ๋ค์์ ๋ณต์ฌ ์์ ์ ์ฌ์ฉ๋์ ๊ฐ์ ธ์ค๋ ์์์ ๋๋ค.
SELECT DATE(creation_time) as day, project_id as source_project_id, CONCAT(destination_table.project_id,":",destination_table.dataset_id,".",destination_table.table_id) as destination_table, COUNT(job_id) AS copy_job_count FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 8 DAY) AND CURRENT_TIMESTAMP() AND job_type = "COPY" GROUP BY day, source_project_id, destination_table ORDER BY day DESC;
BigQuery ์คํ ๋ฆฌ์ง ์ต์ ํ์์ Apache Iceberg์ฉ BigLake ํ ์ด๋ธ ์ฌ์ฉ๋ ๊ฐ์ ธ์ค๊ธฐ
๋ค์ ์์์๋ BigQuery ์คํ ๋ฆฌ์ง ์ต์ ํ์์ BigLake Iceberg ํ ์ด๋ธ์ ์ฌ์ฉ๋์ ์ ๊ณตํฉ๋๋ค.
SELECT job_id, reservation_id, edition, total_slot_ms, total_bytes_processed, state FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 6 HOUR) AND user_email = "bigquery-adminbot@system.gserviceaccount.com" AND query LIKE "CALL BQ.OPTIMIZE_STORAGE(%)";
BigQuery ๋ด๋ณด๋ด๊ธฐ ํ ์ด๋ธ ๋ฉํ๋ฐ์ดํฐ์์ BigLake Iceberg ํ ์ด๋ธ ์ฌ์ฉ๋ ๊ฐ์ ธ์ค๊ธฐ
๋ค์ ์์์๋ Iceberg EXPORT TABLE METADATA FROM
์ ์ฌ์ฉ๋์ ๊ฐ์ ธ์ต๋๋ค.
SELECT job_id, user_email, start_time, end_time, TIMESTAMP_DIFF(end_time, start_time, SECOND) AS duration_seconds, total_bytes_processed, reservation_id, CASE WHEN reservation_id IS NULL THEN 'PAYG (On-demand)' WHEN reservation_id != '' THEN 'Reservation' ELSE 'Unknown' END AS compute_type, query FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS WHERE job_type = 'QUERY' AND end_time IS NOT NULL -- Filter for queries containing the specified pattern (case-insensitive) AND REGEXP_CONTAINS(LOWER(query), r"export table metadata from") ORDER BY start_time DESC LIMIT 3;
๊ด๋ฆฌ ๋ฆฌ์์ค ์ฐจํธ์ ์ฌ๋กฏ ์ฌ์ฉ ๋์ ์ผ์น
๊ด๋ฆฌ ๋ฆฌ์์ค ์ฐจํธ์ ์ ๋ณด์ ์ ์ฌํ ์ฌ๋กฏ ์ฌ์ฉ ๋์์ ์ดํด๋ณด๋ ค๋ฉด INFORMATION_SCHEMA.JOBS_TIMELINE
๋ทฐ๋ฅผ ์ฟผ๋ฆฌํฉ๋๋ค.