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

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

データセット内のビューは、次の方法で一覧表示できます。

  • Google Cloud コンソールを使用する
  • bq コマンドライン ツールの bq ls コマンド
  • tables.list API メソッドを呼び出す
  • クライアント ライブラリの使用

始める前に

このドキュメントの各タスクを実行するために必要な権限をユーザーに与える Identity and Access Management(IAM)のロールを付与します。

ビューの一覧表示

ビューを一覧表示するプロセスは、テーブルを一覧表示するプロセスと同じです。

必要な権限

データセット内のビューを一覧表示するには、bigquery.tables.list IAM 権限が必要です。

次の IAM 事前定義ロールには、データセット内のビューを一覧表示するために必要な権限が含まれています。

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

BigQuery での IAM のロールと権限については、事前定義ロールと権限をご覧ください。

データセット内のビューの一覧表示

データセット内のビューを一覧表示するには、次の手順に沿って操作します。

Console

  1. [エクスプローラ] パネルでプロジェクトを開いて、データセットを選択します。

  2. リストをスクロールして、データセット内のテーブルを表示します。テーブルとビューはアイコンで区別できます。

    テーブルとビューのアイコン

SQL

INFORMATION_SHCEMA.VIEWS ビューを使用します:

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    SELECT table_name
    FROM DATASET_ID.INFORMATION_SCHEMA.VIEWS;
    

    DATASET_ID は、データセットの名前に置き換えます。

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリの実行をご覧ください。

bq

bq ls コマンドを発行します。--format フラグを使用して出力を制御できます。デフォルト プロジェクト以外のプロジェクトにあるビューを一覧表示する場合は、project_id:dataset の形式でプロジェクト ID をデータセットに追加します。

bq ls --format=pretty project_id:dataset

ここで

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

このコマンドを実行すると、Type フィールドに TABLE または VIEW が表示されます。例:

+-------------------------+-------+----------------------+-------------------+
|         tableId         | Type  |        Labels        | Time Partitioning |
+-------------------------+-------+----------------------+-------------------+
| mytable                 | TABLE | department:shipping  |                   |
| myview                  | VIEW  |                      |                   |
+-------------------------+-------+----------------------+-------------------+

例:

次のコマンドを入力すると、デフォルト プロジェクトにある mydataset データセット内のビューが一覧表示されます。

bq ls --format=pretty mydataset

次のコマンドを入力すると、myotherproject にある mydataset データセット内のビューが一覧表示されます。

bq ls --format=pretty myotherproject:mydataset

API

API を使用してビューを一覧表示するには、tables.list メソッドを呼び出します。

Go

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

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
	"google.golang.org/api/iterator"
)

// listTables demonstrates iterating through the collection of tables in a given dataset.
func listTables(w io.Writer, projectID, datasetID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// tableID := "mytable"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	ts := client.Dataset(datasetID).Tables(ctx)
	for {
		t, err := ts.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return err
		}
		fmt.Fprintf(w, "Table: %q\n", t.TableID)
	}
	return nil
}

Python

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

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。


from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset that contains
#                  the tables you are listing.
# dataset_id = 'your-project.your_dataset'

tables = client.list_tables(dataset_id)  # Make an API request.

print("Tables contained in '{}':".format(dataset_id))
for table in tables:
    print("{}.{}.{}".format(table.project, table.dataset_id, table.table_id))

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

  • Google Cloud コンソールを使用する
  • bq コマンドライン ツールの bq show コマンドを使用する
  • tables.get API メソッドを呼び出す
  • クライアント ライブラリの使用
  • INFORMATION_SCHEMA ビューのクエリ

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

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

必要な権限

ビューの情報を取得するには、bigquery.tables.get の IAM 権限が必要です。

次の各事前定義 IAM ロールには、それぞれビューに関する情報の取得に必要な権限が含まれています。

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

また、bigquery.datasets.create 権限がある場合は、自分が作成したデータセット内のビューに関する情報を取得できます。

BigQuery での IAM のロールと権限については、事前定義ロールと権限をご覧ください。

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

Console

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

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

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

    詳細を表示

SQL

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

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

      SELECT
        * EXCEPT (check_option)
      FROM
        mydataset.INFORMATION_SCHEMA.VIEWS;
      

    DATASET_ID は、データセットの名前に置き換えます。

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリの実行をご覧ください。

bq

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

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

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
}

Java

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

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Table;
import com.google.cloud.bigquery.TableId;

// Sample to get a view
public class GetView {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String viewName = "MY_VIEW_NAME";
    getView(datasetName, viewName);
  }

  public static void getView(String datasetName, String viewName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      TableId tableId = TableId.of(datasetName, viewName);
      Table view = bigquery.getTable(tableId);
      System.out.println("View retrieved successfully" + view.getDescription());
    } catch (BigQueryException e) {
      System.out.println("View not retrieved. \n" + e.toString());
    }
  }
}

Node.js

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

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

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

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

from google.cloud import bigquery

client = bigquery.Client()

view_id = "my-project.my_dataset.my_view"
# Make an API request to get the table resource.
view = client.get_table(view_id)

# Display view properties
print(f"Retrieved {view.table_type}: {str(view.reference)}")
print(f"View Query:\n{view.view_query}")

ビューのセキュリティ

BigQuery でビューへのアクセスを制御するには、承認済みビューをご覧ください。

次のステップ