Tabel virtual COLUMN_FIELD_PATHS

Tabel virtual INFORMATION_SCHEMA.COLUMN_FIELD_PATHS berisi satu baris untuk setiap kolom yang bertingkat dalam kolom RECORD (atau STRUCT).

Izin yang diperlukan

Untuk membuat kueri tabel virtual INFORMATION_SCHEMA.COLUMN_FIELD_PATHS, Anda memerlukan izin Identity and Access Management (IAM) berikut:

  • bigquery.tables.get
  • bigquery.tables.list

Setiap peran IAM yang telah ditetapkan berikut mencakup izin sebelumnya:

  • roles/bigquery.admin
  • roles/bigquery.dataViewer
  • roles/bigquery.dataEditor
  • roles/bigquery.metadataViewer

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

Skema

Hasil kueri berisi satu baris untuk setiap kolom yang bertingkat dalam kolom RECORD (atau STRUCT).

Saat Anda membuat kueri tabel virtual INFORMATION_SCHEMA.COLUMN_FIELD_PATHS, hasil kueri akan berisi satu baris untuk setiap kolom yang bertingkat dalam kolom RECORD (atau STRUCT).

Tabel virtual INFORMATION_SCHEMA.COLUMN_FIELD_PATHS memiliki skema berikut:

Nama kolom Jenis data Nilai
table_catalog STRING ID project dari project yang berisi set data.
table_schema STRING Nama set data yang berisi tabel juga disebut sebagai datasetId.
table_name STRING Nama tabel atau tampilan juga disebut sebagai tableId.
column_name STRING Nama kolom.
field_path STRING Jalur ke kolom yang bertingkat dalam kolom `RECORD` atau `STRUCT`.
data_type STRING Jenis data GoogleSQL pada kolom.
description STRING Deskripsi kolom.
collation_name STRING Nama spesifikasi kolasi jika ada; jika tidak, NULL.

Jika kolom STRING, ARRAY<STRING>, atau STRING dalam STRUCT diteruskan, spesifikasi kolasi akan ditampilkan jika ada; jika tidak ada, NULL akan ditampilkan.
rounding_mode STRING Mode pembulatan yang digunakan saat menerapkan presisi dan skala ke nilai NUMERIC atau BIGNUMERIC yang berparameter; jika tidak, nilainya adalah NULL.
data_policies.name STRING Daftar kebijakan data yang dilampirkan ke kolom untuk mengontrol akses dan penyamaran. Kolom ini berada dalam (Pratinjau).
policy_tags ARRAY<STRING> Daftar tag kebijakan yang dilampirkan ke kolom.

Untuk stabilitas, sebaiknya cantumkan kolom secara eksplisit dalam kueri skema informasi Anda, bukan menggunakan karakter pengganti (SELECT *). Mencantumkan kolom secara eksplisit akan mencegah kueri rusak jika skema yang mendasarinya berubah.

Cakupan dan sintaksis

Kueri terhadap tabel virtual ini harus menyertakan set data atau penentu region. Untuk kueri dengan penentu set data, Anda harus memiliki izin untuk set data. Untuk kueri dengan penentu region, Anda harus memiliki izin untuk project. Untuk informasi selengkapnya, lihat Sintaksis. Tabel berikut menjelaskan cakupan region dan resource untuk tabel virtual ini:

Nama tabel virtual Cakupan resource Cakupan region
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS Level project REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS Level set data Lokasi set data
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`.
  • DATASET_ID: ID set data Anda. Untuk mengetahui informasi selengkapnya, lihat Penentu set data.

Contoh

Contoh berikut mengambil metadata dari tabel virtual INFORMATION_SCHEMA.COLUMN_FIELD_PATHS untuk tabel commits dalam set data github_repos. Set data ini adalah bagian dari program set data publik BigQuery.

Karena tabel yang Anda buat kuerinya berada di project lain, yakni project bigquery-public-data, Anda menambahkan project ID ke set data dalam format berikut: `project_id`.dataset.INFORMATION_SCHEMA.view; untuk contoh, `bigquery-public-data`.github_repos.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS.

Tabel commits berisi kolom bertingkat serta kolom bertingkat dan berulang berikut:

  • author: kolom RECORD bertingkat
  • committer: kolom RECORD bertingkat
  • trailer: kolom RECORD bertingkat dan berulang
  • difference: kolom RECORD bertingkat dan berulang

Untuk melihat metadata tentang kolom author dan difference, jalankan kueri berikut.

SELECT
  *
FROM
  `bigquery-public-data`.github_repos.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
WHERE
  table_name = 'commits'
  AND (column_name = 'author' OR column_name = 'difference');

Hasilnya mirip dengan berikut ini. Agar mudah dibaca, beberapa kolom dikecualikan dari hasil.

  +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------------+
  | table_name | column_name |     field_path      |                                                                      data_type                                                                      | description | policy_tags |
  +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------------+
  | commits    | author      | author              | STRUCT<name STRING, email STRING, time_sec INT64, tz_offset INT64, date TIMESTAMP>                                                                  | NULL        | 0 rows      |
  | commits    | author      | author.name         | STRING                                                                                                                                              | NULL        | 0 rows      |
  | commits    | author      | author.email        | STRING                                                                                                                                              | NULL        | 0 rows      |
  | commits    | author      | author.time_sec     | INT64                                                                                                                                               | NULL        | 0 rows      |
  | commits    | author      | author.tz_offset    | INT64                                                                                                                                               | NULL        | 0 rows      |
  | commits    | author      | author.date         | TIMESTAMP                                                                                                                                           | NULL        | 0 rows      |
  | commits    | difference  | difference          | ARRAY<STRUCT<old_mode INT64, new_mode INT64, old_path STRING, new_path STRING, old_sha1 STRING, new_sha1 STRING, old_repo STRING, new_repo STRING>> | NULL        | 0 rows      |
  | commits    | difference  | difference.old_mode | INT64                                                                                                                                               | NULL        | 0 rows      |
  | commits    | difference  | difference.new_mode | INT64                                                                                                                                               | NULL        | 0 rows      |
  | commits    | difference  | difference.old_path | STRING                                                                                                                                              | NULL        | 0 rows      |
  | commits    | difference  | difference.new_path | STRING                                                                                                                                              | NULL        | 0 rows      |
  | commits    | difference  | difference.old_sha1 | STRING                                                                                                                                              | NULL        | 0 rows      |
  | commits    | difference  | difference.new_sha1 | STRING                                                                                                                                              | NULL        | 0 rows      |
  | commits    | difference  | difference.old_repo | STRING                                                                                                                                              | NULL        | 0 rows      |
  | commits    | difference  | difference.new_repo | STRING                                                                                                                                              | NULL        | 0 rows      |
  +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------------+