ビューに関する情報の取得

このドキュメントでは、BigQuery ビューの情報やメタデータを取得する方法について説明します。

ビューのメタデータは、次の方法で取得できます。

  • GCP Console または従来の BigQuery ウェブ UI
  • bq show CLI コマンド
  • tables.get API メソッドの呼び出し
  • クライアント ライブラリの使用
  • INFORMATION_SCHEMA ビューのクエリ(ベータ版

必要な権限

ビューに関する情報を取得するには、少なくとも bigquery.tables.get 権限が付与されている必要があります。事前定義された以下の Cloud IAM 役割には、bigquery.tables.get 権限が含まれています。

  • bigquery.metadataViewer
  • bigquery.dataViewer
  • bigquery.dataOwner
  • bigquery.dataEditor
  • bigquery.admin

また、bigquery.datasets.create 権限があるユーザーがデータセットを作成すると、作成したデータセットに対する bigquery.dataOwner アクセス権がそのユーザーに付与されます。 bigquery.dataOwner アクセス権により、データセットに含まれるビューに関する情報を取得できます。

BigQuery での Cloud IAM 役割と権限については、アクセス制御をご覧ください。

ビューの情報の取得

ビューに関する情報を取得するプロセスは、テーブルに関する情報を取得するプロセスと同じです。

ビューに関する情報を取得するには:

Console

  1. データセットを展開します。

  2. ビュー名をクリックします。

  3. [詳細] をクリックします。[詳細] タブには、ビューの説明、ビューの情報、ビューを定義する SQL クエリが表示されます。

    詳細の表示

従来の UI

  1. データセットを展開します。

  2. ビュー名をクリックします。

  3. [Details] をクリックします。[View Details] ページには、ビューの説明、ビューの情報、およびビューを定義する SQL クエリが表示されます。

    詳細の表示

CLI

bq show コマンドを発行します。--format フラグを使用して出力を制御できます。デフォルト プロジェクト以外のプロジェクトにあるビューの情報を取得する場合は、[PROJECT_ID]:[DATASET] の形式でプロジェクト ID をデータセットに追加します。

bq show \
--format=prettyjson \
project_id:dataset.view

ここで

  • project_id は、プロジェクト ID です。
  • dataset は、データセットの名前です。
  • view はビューの名前です。

例:

デフォルト プロジェクトにある mydataset データセット内の myview に関する情報を表示するには、次のコマンドを入力します。

bq show --format=prettyjson mydataset.myview

myotherproject にある mydataset データセット内の myview に関する情報を表示するには、次のコマンドを入力します。

bq show --format=prettyjson myotherproject:mydataset.myview

API

tables.get メソッドを呼び出して、関連するパラメータを指定します。

Go

このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある Go 向けの手順に沿って設定を行ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
view := client.Dataset(datasetID).Table(viewID)
meta, err := view.Metadata(ctx)
if err != nil {
	return err
}
fmt.Printf("View %s, query: %s\n", view.FullyQualifiedName(), meta.ViewQuery)

Python

このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある Python の設定手順に沿って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。

# from google.cloud import bigquery
# client = bigquery.Client()
# shared_dataset_id = 'my_shared_dataset'

view_ref = client.dataset(shared_dataset_id).table("my_shared_view")
view = client.get_table(view_ref)  # API Request

# Display view properties
print("View at {}".format(view.full_table_id))
print("View Query:\n{}".format(view.view_query))

INFORMATION_SCHEMAベータ版

INFORMATION_SCHEMA は、データセット、テーブル、ビューに関するメタデータへのアクセスを提供する一連のビューです。

VIEWS ビュー

INFORMATION_SCHEMA.VIEWS ビューにクエリを実行すると、データセット内の各ビューが 1 行で返されます。

INFORMATION_SCHEMA.VIEWS ビューにクエリを実行する場合は、データセット修飾子を使用する必要があります。クエリを送信するユーザーには、ビューを含むデータセットへのアクセス権が必要です。

INFORMATION_SCHEMA.VIEWS ビューのスキーマは次のとおりです。

列名 データ型
TABLE_CATALOG STRING データセットを含むプロジェクトの名前
TABLE_SCHEMA STRING ビューを含むデータセットの名前(データセット id と呼ぶこともある)
TABLE_NAME STRING ビューの名前(テーブル id と呼ぶこともある)
VIEW_DEFINITION STRING ビューを定義する SQL クエリ
CHECK_OPTION STRING 常に NULL が返されます。
USE_STANDARD_SQL STRING 標準 SQL クエリでビューが作成された場合は YESuseLegacySqltrue に設定されている場合は NO

テーブルとビューのプロパティの詳細については、REST API ドキュメントのテーブル リソースのページをご覧ください。

例 1:

次の例では、将来用に予約されている check_option を除き、すべての列を INFORMATION_SCHEMA.VIEWS ビューから取得します。デフォルト プロジェクト(myproject)にある mydataset のすべてのビューに対するメタデータが返されます。

INFORMATION_SCHEMA.VIEWS ビューにクエリを実行する場合は、データセット修飾子を使用する必要があります。クエリを送信するユーザーには、ビューを含むデータセットへのアクセス権が必要です。

デフォルト プロジェクト以外のプロジェクトに対してクエリを実行するには、`project_id`.dataset.INFORMATION_SCHEMA.view の形式でプロジェクト ID をデータセットに追加します(例: `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS)。

クエリを実行するには:

Console

  1. GCP Console で BigQuery ウェブ UI を開きます。

    GCP Console に移動

  2. [クエリエディタ] ボックスに、次の標準 SQL クエリを入力します。 INFORMATION_SCHEMA では標準 SQL 構文が必要です。標準 SQL は GCP Console のデフォルトの構文です。

    SELECT
     * EXCEPT(check_option)
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    
  3. [実行] をクリックします。

CLI

query コマンドで、--nouse_legacy_sql または --use_legacy_sql=false フラグを使用して標準 SQL 構文を指定します。INFORMATION_SCHEMA クエリには標準 SQL 構文が必要です。

クエリを実行するには、次のように入力します。

bq query --nouse_legacy_sql \
'SELECT
   * EXCEPT(check_option)
 FROM
   mydataset.INFORMATION_SCHEMA.VIEWS'

結果は次のようになります。

  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | table_catalog  | table_schema  |  table_name   |                        view_definition                              | use_standard_sql |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | myproject      | mydataset     | myview        | SELECT column1, column2 FROM [myproject:mydataset.mytable] LIMIT 10 | NO               |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  

結果から、このビューはレガシー SQL クエリを使用して作成されたことがわかります。

例 2:

次の例では、デフォルト プロジェクト(myproject)の mydatasetmyview を定義するときに使用する SQL クエリとクエリ構文を取得します。

INFORMATION_SCHEMA.VIEWS ビューにクエリを実行する場合は、データセット修飾子を使用する必要があります。クエリを送信するユーザーには、ビューを含むデータセットへのアクセス権が必要です。

デフォルト プロジェクト以外のプロジェクトに対してクエリを実行するには、`project_id`.dataset.INFORMATION_SCHEMA.view の形式でプロジェクト ID をデータセットに追加します(例: `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS)。

クエリを実行するには:

Console

  1. GCP Console で BigQuery ウェブ UI を開きます。

    GCP Console に移動

  2. [クエリエディタ] ボックスに、次の標準 SQL クエリを入力します。 INFORMATION_SCHEMA では標準 SQL 構文が必要です。標準 SQL は GCP Console のデフォルトの構文です。

    SELECT
     table_name, view_definition, use_standard_sql
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    WHERE
     table_name="myview"
    
  3. [実行] をクリックします。

CLI

query コマンドで、--nouse_legacy_sql または --use_legacy_sql=false フラグを使用して標準 SQL 構文を指定します。INFORMATION_SCHEMA クエリには標準 SQL 構文が必要です。

クエリを実行するには、次のように入力します。

bq query --nouse_legacy_sql \
'SELECT
   table_name, view_definition, use_standard_sql
 FROM
   mydataset.INFORMATION_SCHEMA.VIEWS
 WHERE
   table_name="myview"'

結果は次のようになります。

  +---------------+---------------------------------------------------------------+------------------+
  |  table_name   |                        view_definition                        | use_standard_sql |
  +---------------+---------------------------------------------------------------+------------------+
  | myview        | SELECT column1, column2, column3 FROM mydataset.mytable       | YES              |
  +---------------+---------------------------------------------------------------+------------------+
  

結果から、このビューは標準の SQL クエリで作成されたことがわかります。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。