Tabel virtual JOBS_TIMELINE_BY_FOLDER

Tabel virtual INFORMATION_SCHEMA.JOBS_TIMELINE_BY_FOLDER berisi metadata BigQuery yang hampir real-time berdasarkan timeslice untuk semua tugas yang dikirimkan di folder induk project saat ini, termasuk tugas di subfolder di bawahnya. Tabel virtual ini berisi tugas yang sedang berjalan dan yang telah selesai.

Izin yang diperlukan

Untuk membuat kueri tabel virtual INFORMATION_SCHEMA.JOBS_TIMELINE_BY_FOLDER, Anda memerlukan izin Identity and Access Management (IAM) bigquery.jobs.listAll untuk folder induk. Setiap peran IAM yang telah ditetapkan berikut menyertakan izin yang diperlukan:

  • Folder Admin
  • BigQuery Admin

Untuk mengetahui informasi selengkapnya tentang izin BigQuery, lihat Kontrol akses dengan IAM.

Skema

Saat Anda membuat kueri tabel virtual INFORMATION_SCHEMA.JOBS_TIMELINE_BY_*, hasil kueri akan berisi satu baris untuk setiap detik eksekusi setiap tugas BigQuery. Setiap periode dimulai pada interval satu detik penuh dan berlangsung tepat satu detik.

Tabel virtual INFORMATION_SCHEMA.JOBS_TIMELINE_BY_* memiliki skema berikut:

Nama kolom Jenis data Nilai
period_start TIMESTAMP Waktu mulai periode ini.
period_slot_ms INTEGER Slot milidetik yang terpakai dalam periode ini.
period_shuffle_ram_usage_ratio FLOAT Rasio penggunaan acak pada jangka waktu yang dipilih.
project_id STRING (Kolom pengelompokan) ID project.
project_number INTEGER Nomor project.
folder_numbers REPEATED INTEGER Nomor ID folder yang berisi project, dimulai dengan folder yang langsung berisi project, diikuti dengan folder yang berisi folder turunan, dan seterusnya. Misalnya, jika `folder_numbers` adalah `[1, 2, 3]`, maka folder `1` langsung berisi project, folder `2` berisi `1`, dan folder `3` berisi `2`.
user_email STRING (Kolom pengelompokan) Alamat email atau akun layanan pengguna yang menjalankan tugas.
job_id STRING ID tugas. Misalnya, bquxjob_1234.
job_type STRING Jenis tugas. Dapat berupa QUERY, LOAD, EXTRACT, COPY, atau null. Jenis tugas null menunjukkan tugas internal, seperti evaluasi pernyataan tugas skrip atau pemuatan ulang tampilan terwujud.
statement_type STRING Jenis pernyataan kueri, jika valid. Misalnya, SELECT, INSERT, UPDATE, atau DELETE.
job_creation_time TIMESTAMP (Kolom partisi) Waktu pembuatan tugas ini. Partisi didasarkan pada waktu UTC stempel waktu ini.
job_start_time TIMESTAMP Waktu mulai tugas ini.
job_end_time TIMESTAMP Waktu berakhir tugas ini.
state STRING Status menjalankan tugas di akhir periode ini. Status yang valid mencakup PENDING, RUNNING, dan DONE.
reservation_id STRING Nama pemesanan utama yang ditetapkan untuk tugas ini di akhir periode ini, jika berlaku.
total_bytes_processed INTEGER Total byte yang diproses oleh tugas.
error_result RECORD Detail error (jika ada) sebagai ErrorProto.
cache_hit BOOLEAN Apakah hasil kueri tugas ini berasal dari cache.
period_estimated_runnable_units INTEGER Unit tugas yang dapat langsung dijadwalkan dalam periode ini. Slot tambahan untuk unit pekerjaan ini akan mempercepat kueri Anda, asalkan tidak ada kueri lain di pemesanan yang memerlukan slot tambahan.

Retensi data

Tabel virtual ini berisi tugas yang sedang berjalan dan histori tugas selama 180 hari terakhir.

Cakupan dan sintaksis

Kueri terhadap tabel virtual ini harus menyertakan penentu region. Jika Anda tidak menentukan penentu regional, metadata akan diambil dari semua region. Tabel berikut menjelaskan cakupan region untuk tabel virtual ini:

Nama tabel virtual Cakupan resource Cakupan region
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_FOLDER Level project REGION
Ganti kode berikut:

  • Opsional: PROJECT_ID: ID project Google Cloud Anda. Jika tidak ditentukan, project default akan digunakan.
  • REGION: nama region set data apa pun. Misalnya, region-us.

Contoh

Contoh berikut menunjukkan cara membuat kueri tabel virtual INFORMATION_SCHEMA.JOBS_TIMELINE_BY_FOLDER.

Mendapatkan jumlah tugas unik

Kueri berikut menampilkan jumlah tugas unik yang berjalan per menit dalam folder project yang ditunjuk:

SELECT
  TIMESTAMP_TRUNC(period_start, MINUTE) AS per_start,
  COUNT(DISTINCT job_id) AS unique_jobs
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_FOLDER,
  UNNEST(folder_numbers) f
WHERE
  my_folder_number = f
GROUP BY
  per_start
ORDER BY
  per_start DESC;

Hasilnya akan mirip dengan berikut ini:

+---------------------------+---------------------------------+
|  per_start                |  unique_jobs                    |
+---------------------------+---------------------------------+
|  2019-10-10 00:04:00 UTC  |  5                              |
|  2019-10-10 00:03:00 UTC  |  2                              |
|  2019-10-10 00:02:00 UTC  |  3                              |
|  2019-10-10 00:01:00 UTC  |  4                              |
|  2019-10-10 00:00:00 UTC  |  4                              |
+---------------------------+---------------------------------+

Menghitung waktu-slot yang digunakan

Kueri berikut menampilkan waktu-slot yang digunakan per menit dalam folder project yang ditunjuk:

SELECT
  TIMESTAMP_TRUNC(period_start, MINUTE) AS per_start,
  SUM(period_slot_ms) AS slot_ms
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_FOLDER,
  UNNEST(folder_numbers) f
WHERE
  my_folder_number = f
  AND reservation_id = "my reservation id"
  AND statement_type != "SCRIPT"
GROUP BY
  per_start
ORDER BY
  per_start DESC;

Hasilnya akan mirip dengan berikut ini:

+---------------------------+---------------------------------+
|  per_start                |  slot_ms                        |
+---------------------------+---------------------------------+
|  2019-10-10 00:04:00 UTC  |  500                            |
|  2019-10-10 00:03:00 UTC  |  1000                           |
|  2019-10-10 00:02:00 UTC  |  3000                           |
|  2019-10-10 00:01:00 UTC  |  4000                           |
|  2019-10-10 00:00:00 UTC  |  4000                           |
+---------------------------+---------------------------------+