Tampilan STREAMING_TIMELINE

Tampilan INFORMATION_SCHEMA.STREAMING_TIMELINE berisi statistik streaming gabungan per menit untuk project saat ini.

Anda dapat mengkueri tampilan streaming INFORMATION_SCHEMA untuk mengambil informasi historis dan real-time tentang data streaming ke BigQuery yang menggunakan metode tabledata.insertAll lama, bukan BigQuery Storage Write API. Untuk mengetahui informasi selengkapnya tentang streaming data ke BigQuery, baca Streaming data ke BigQuery.

Izin yang diperlukan

Untuk membuat kueri tabel virtual INFORMATION_SCHEMA.STREAMING_TIMELINE, Anda memerlukan izin Identity and Access Management (IAM) bigquery.tables.list untuk project tersebut.

Setiap peran IAM yang telah ditetapkan berikut menyertakan izin yang diperlukan:

  • roles/bigquery.user
  • roles/bigquery.dataViewer
  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.metadataViewer
  • roles/bigquery.resourceAdmin
  • roles/bigquery.admin

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

Skema

Saat Anda membuat kueri tampilan streaming INFORMATION_SCHEMA, hasil kueri akan berisi informasi historis dan real-time tentang streaming data ke BigQuery. Setiap baris pada tampilan berikut mewakili statistik untuk streaming ke tabel tertentu, yang digabungkan selama interval satu menit mulai dari start_timestamp. Statistik dikelompokkan berdasarkan kode error, sehingga akan ada satu baris untuk setiap kode error yang ditemukan selama interval satu menit untuk setiap kombinasi stempel waktu dan tabel. Permintaan yang berhasil memiliki kode error yang ditetapkan ke NULL. Jika tidak ada data yang di-streaming ke tabel selama jangka waktu tertentu, tidak akan ada baris untuk stempel waktu yang sesuai bagi tabel tersebut.

Tampilan INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_* memiliki skema berikut:

Nama kolom Jenis data Nilai
start_timestamp TIMESTAMP (Kolom partisi) Stempel waktu mulai dari interval 1 menit untuk statistik gabungan.
project_id STRING (Kolom pengelompokan) ID project.
project_number INTEGER Nomor project.
dataset_id STRING (Kolom pengelompokan) ID set data.
table_id STRING (Kolom pengelompokan) ID tabel.
error_code STRING Kode error yang ditampilkan untuk permintaan yang ditentukan oleh baris ini. NULL untuk permintaan yang berhasil.
total_requests INTEGER Jumlah total permintaan dalam interval 1 menit.
total_rows INTEGER Jumlah total baris dari semua permintaan dalam interval 1 menit.
total_input_bytes INTEGER Jumlah total byte dari semua baris dalam interval 1 menit.

Retensi data

Tampilan ini berisi histori streaming 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.STREAMING_TIMELINE[_BY_PROJECT] 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

  • Untuk membuat kueri data di multi-region AS, gunakan `region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT
  • Untuk membuat kueri data di multi-region Uni Eropa, gunakan `region-eu`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT
  • Untuk membuat kueri data di region asia-northeast1, gunakan `region-asia-northeast1`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT

Untuk mengetahui daftar region yang tersedia, lihat Lokasi set data.

Contoh

Contoh 1: Kegagalan streaming terbaru

Contoh berikut menghitung perincian per menit dari total permintaan yang gagal untuk semua tabel dalam project dalam 30 menit terakhir, yang dipisahkan berdasarkan kode error:

SELECT
  start_timestamp,
  error_code,
  SUM(total_requests) AS num_failed_requests
FROM
  `region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT
WHERE
  error_code IS NOT NULL
  AND start_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 30 MINUTE)
GROUP BY
  start_timestamp,
  error_code
ORDER BY
  start_timestamp DESC;

Hasilnya mirip dengan hal berikut:

+---------------------+------------------+---------------------+
|   start_timestamp   |    error_code    | num_failed_requests |
+---------------------+------------------+---------------------+
| 2020-04-15 20:55:00 | INTERNAL_ERROR   |                  41 |
| 2020-04-15 20:41:00 | CONNECTION_ERROR |                   5 |
| 2020-04-15 20:30:00 | INTERNAL_ERROR   |                 115 |
+---------------------+------------------+---------------------+
Contoh 2: Perincian per menit untuk semua permintaan dengan kode error

Contoh berikut menghitung perincian per menit dari permintaan streaming yang berhasil dan gagal, yang dibagi menjadi beberapa kategori kode error. Kueri ini dapat digunakan untuk mengisi dasbor.

SELECT
  start_timestamp,
  SUM(total_requests) AS total_requests,
  SUM(total_rows) AS total_rows,
  SUM(total_input_bytes) AS total_input_bytes,
  SUM(
    IF(
      error_code IN ('QUOTA_EXCEEDED', 'RATE_LIMIT_EXCEEDED'),
      total_requests,
      0)) AS quota_error,
  SUM(
    IF(
      error_code IN (
        'INVALID_VALUE', 'NOT_FOUND', 'SCHEMA_INCOMPATIBLE',
        'BILLING_NOT_ENABLED', 'ACCESS_DENIED', 'UNAUTHENTICATED'),
      total_requests,
      0)) AS user_error,
  SUM(
    IF(
      error_code IN ('CONNECTION_ERROR','INTERNAL_ERROR'),
      total_requests,
      0)) AS server_error,
  SUM(IF(error_code IS NULL, 0, total_requests)) AS total_error,
FROM
  `region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT
GROUP BY
  start_timestamp
ORDER BY
  start_timestamp DESC;

Hasilnya mirip dengan hal berikut:

+---------------------+----------------+------------+-------------------+-------------+------------+--------------+-------------+
|   start_timestamp   | total_requests | total_rows | total_input_bytes | quota_error | user_error | server_error | total_error |
+---------------------+----------------+------------+-------------------+-------------+------------+--------------+-------------+
| 2020-04-15 22:00:00 |         441854 |     441854 |       23784853118 |           0 |          0 |           17 |          17 |
| 2020-04-15 21:59:00 |         355627 |     355627 |       26101982742 |           0 |          0 |            0 |           0 |
| 2020-04-15 21:58:00 |         354603 |     354603 |       26160565341 |           0 |          0 |            0 |           0 |
| 2020-04-15 21:57:00 |         298823 |     298823 |       23877821442 |           0 |          0 |            0 |           0 |
+---------------------+----------------+------------+-------------------+-------------+------------+--------------+-------------+
Contoh 3: Tabel dengan traffic masuk terbanyak

Contoh berikut menampilkan statistik streaming untuk 10 tabel dengan traffic masuk terbanyak:

SELECT
  project_id,
  dataset_id,
  table_id,
  SUM(total_rows) AS num_rows,
  SUM(total_input_bytes) AS num_bytes,
  SUM(total_requests) AS num_requests
FROM
  `region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT
GROUP BY
  project_id,
  dataset_id,
  table_id
ORDER BY
  num_bytes DESC
LIMIT 10;

Hasilnya mirip dengan berikut ini:

+----------------------+------------+-------------------------------+------------+----------------+--------------+
|      project_id      | dataset_id |           table_id            |  num_rows  |   num_bytes    | num_requests |
+----------------------+------------+-------------------------------+------------+----------------+--------------+
| my-project           | dataset1   | table1                        | 8016725532 | 73787301876979 |   8016725532 |
| my-project           | dataset1   | table2                        |   26319580 | 34199853725409 |     26319580 |
| my-project           | dataset2   | table1                        |   38355294 | 22879180658120 |     38355294 |
| my-project           | dataset1   | table3                        |  270126906 | 17594235226765 |    270126906 |
| my-project           | dataset2   | table2                        |   95511309 | 17376036299631 |     95511309 |
| my-project           | dataset2   | table3                        |   46500443 | 12834920497777 |     46500443 |
| my-project           | dataset2   | table4                        |   25846270 |  7487917957360 |     25846270 |
| my-project           | dataset1   | table4                        |   18318404 |  5665113765882 |     18318404 |
| my-project           | dataset1   | table5                        |   42829431 |  5343969665771 |     42829431 |
| my-project           | dataset1   | table6                        |    8771021 |  5119004622353 |      8771021 |
+----------------------+------------+-------------------------------+------------+----------------+--------------+
Contoh 4: Rasio error streaming untuk tabel

Contoh berikut menghitung perincian per hari dari error untuk tabel tertentu, yang dipisahkan berdasarkan kode error:

SELECT
  TIMESTAMP_TRUNC(start_timestamp, DAY) as day,
  project_id,
  dataset_id,
  table_id,
  error_code,
  SUM(total_rows) AS num_rows,
  SUM(total_input_bytes) AS num_bytes,
  SUM(total_requests) AS num_requests
FROM
  `region-us`.INFORMATION_SCHEMA.STREAMING_TIMELINE_BY_PROJECT
WHERE
  table_id LIKE 'my_table'
GROUP BY
  project_id, dataset_id, table_id, error_code, day
ORDER BY
  day, project_id, dataset_id DESC;

Hasilnya akan mirip dengan berikut ini:

+---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+
|         day         |  project_id | dataset_id | table_id |   error_code   | num_rows | num_bytes | num_requests |
+---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+
| 2020-04-21 00:00:00 | my_project  | my_dataset | my_table | NULL           |       41 |    252893 |           41 |
| 2020-04-20 00:00:00 | my_project  | my_dataset | my_table | NULL           |     2798 |  10688286 |         2798 |
| 2020-04-19 00:00:00 | my_project  | my_dataset | my_table | NULL           |     2005 |   7979495 |         2005 |
| 2020-04-18 00:00:00 | my_project  | my_dataset | my_table | NULL           |     2054 |   7972378 |         2054 |
| 2020-04-17 00:00:00 | my_project  | my_dataset | my_table | NULL           |     2056 |   6978079 |         2056 |
| 2020-04-17 00:00:00 | my_project  | my_dataset | my_table | INTERNAL_ERROR |        4 |     10825 |            4 |
+---------------------+-------------+------------+----------+----------------+----------+-----------+--------------+