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

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

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

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

必要な権限

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

  • 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 のリファレンス ドキュメントをご覧ください。

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
)

// getView demonstrates fetching the metadata from a BigQuery logical view and printing it to an io.Writer.
func getView(w io.Writer, projectID, datasetID, viewID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// viewID := "myview"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	view := client.Dataset(datasetID).Table(viewID)
	meta, err := view.Metadata(ctx)
	if err != nil {
		return err
	}
	fmt.Fprintf(w, "View %s, query: %s\n", view.FullyQualifiedName(), meta.ViewQuery)
	return nil
}

Node.js

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

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function getView() {
  // Retrieves view properties.

  /**
   * TODO(developer): Uncomment the following lines before running the sample
   */
  // const datasetId = "my_dataset";
  // const tableId = "my_view";

  // Retrieve view
  const dataset = bigquery.dataset(datasetId);
  const [view] = await dataset.table(tableId).get();

  const fullTableId = view.metadata.id;
  const viewQuery = view.metadata.view.query;

  // Display view properties
  console.log(`View at ${fullTableId}`);
  console.log(`View query: ${viewQuery}`);
}
getView();

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 ビューのスキーマは次のとおりです。

列名 データ型
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

例 1:

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

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

クエリを実行するには:

Console

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

    Cloud Console に移動

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

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

コマンドライン

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 クエリとクエリ構文を取得します。

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

クエリを実行するには:

Console

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

    Cloud Console に移動

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

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

コマンドライン

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 クエリで作成されたことがわかります。

次のステップ