データセットに関する情報の取得

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

データセット情報は次の方法で取得できます。

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

必要な権限

データセットに関する情報やメタデータを取得するには、データセット レベルで READER 役割が付与されているか、bigquery.datasets.get 権限を含むプロジェクト レベルの IAM 役割が割り当てられている必要があります。事前定義されたプロジェクト レベルの IAM 役割のうち、bigquery.jobUser 以外には、bigquery.datasets.get 権限が含まれています。

BigQuery での IAM 役割と権限の詳細については、アクセス制御をご覧ください。データセット レベルの役割の詳細については、データセットに対する基本の役割をご覧ください。

データセットの情報の取得

プロジェクト内のデータセットに関する情報を取得するには:

Console

[リソース] パネルでデータセット名をクリックします。[クエリエディタ] の下に、データセットの説明と詳細が表示されます。データセットのテーブルは、[リソース] パネル内のデータセット名の下に入れ子になっています。

データセットを表示

デフォルトでは、匿名データセットは BigQuery ウェブ UI に表示されません。匿名データセットの情報を表示するには、CLI または API を使用します。

従来の UI

データセット名をクリックします。[Dataset Details] ページに、データセットの説明、詳細、テーブルが表示されます。

データセットを表示

デフォルトでは、匿名データセットは BigQuery ウェブ UI に表示されません。匿名データセットの情報を表示するには、CLI または API を使用します。

コマンドライン

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

匿名データセットの情報を表示するには、bq ls --all コマンドを使用してデータセットの一覧を表示し、bq show コマンドで匿名データセットの名前を使用します。

bq show --format=prettyjson [PROJECT_ID]:[DATASET]

ここで

  • [PROJECT_ID] はプロジェクトの名前です。
  • [DATASET] は、データセットの名前です。

例:

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

bq show --format=prettyjson mydataset

myotherproject 内の mydataset に関する情報を表示するには、次のコマンドを入力します。

bq show --format=prettyjson myotherproject:mydataset

次のコマンドを入力して、匿名データセット(デフォルト プロジェクトでは _1234abcd56efgh78ijkl1234)の情報を表示します。

bq show --format=prettyjson _1234abcd56efgh78ijkl1234

API

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

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")
meta, err := client.Dataset(datasetID).Metadata(ctx)
if err != nil {
	return err
}

fmt.Printf("Dataset ID: %s\n", datasetID)
fmt.Printf("Description: %s\n", meta.Description)
fmt.Println("Labels:")
for k, v := range meta.Labels {
	fmt.Printf("\t%s: %s", k, v)
}
fmt.Println("Tables:")
it := client.Dataset(datasetID).Tables(ctx)

cnt := 0
for {
	t, err := it.Next()
	if err == iterator.Done {
		break
	}
	cnt++
	fmt.Printf("\t%s\n", t.TableID)
}
if cnt == 0 {
	fmt.Println("\tThis dataset does not contain any tables.")
}

Java

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

DatasetId datasetId = DatasetId.of(projectId, datasetName);
Dataset dataset = bigquery.getDataset(datasetId);

Python

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

from google.cloud import bigquery

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

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = 'your-project.your_dataset'

dataset = client.get_dataset(dataset_id)

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
friendly_name = dataset.friendly_name
print(
    "Got dataset '{}' with friendly_name '{}'.".format(
        full_dataset_id, friendly_name
    )
)

# View dataset properties
print("Description: {}".format(dataset.description))
print("Labels:")
labels = dataset.labels
if labels:
    for label, value in labels.items():
        print("\t{}: {}".format(label, value))
else:
    print("\tDataset has no labels defined.")

# View tables in dataset
print("Tables:")
tables = list(client.list_tables(dataset))  # API request(s)
if tables:
    for table in tables:
        print("\t{}".format(table.table_id))
else:
    print("\tThis dataset does not contain any tables.")

INFORMATION_SCHEMAベータ版

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

SCHEMATA ビュー

INFORMATION_SCHEMA.SCHEMATA ビューにクエリを実行すると、現在のユーザーがアクセスできるプロジェクトの各データセットが 1 行で返されます。

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

列名 データ型
CATALOG_NAME STRING データセットを含むプロジェクトの名前
SCHEMA_NAME STRING データセットの名前datasetId
SCHEMA_OWNER STRING 値は常に NULL です。
CREATION_TIME TIMESTAMP データセットの作成時間
LAST_MODIFIED_TIME TIMESTAMP データセットの最終更新日時
LOCATION STRING データセットの地理的なロケーション

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

デフォルト プロジェクト以外のプロジェクトに対してクエリを実行するには、次の形式でプロジェクト ID をデータセットに追加します。 `[PROJECT_ID]`.INFORMATION_SCHEMA.[VIEW] (例: `myproject`.INFORMATION_SCHEMA.SCHEMATA

クエリを実行するには:

Console

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

    BigQuery ウェブ UI に移動

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

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

コマンドライン

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

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

bq query --nouse_legacy_sql \
'SELECT * EXCEPT(schema_owner) FROM INFORMATION_SCHEMA.SCHEMATA'

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

  +----------------+---------------+---------------------+---------------------+-----------------+
  |  catalog_name  |  schema_name  |    creation_time    | last_modified_time  |    location     |
  +----------------+---------------+---------------------+---------------------+-----------------+
  | myproject      | mydataset1    | 2018-11-07 19:50:24 | 2018-11-07 19:50:24 | US              |
  | myproject      | mydataset2    | 2018-07-16 04:24:22 | 2018-07-16 04:24:22 | US              |
  | myproject      | mydataset3    | 2018-02-07 21:08:45 | 2018-05-01 23:32:53 | asia-northeast1 |
  +----------------+---------------+---------------------+---------------------+-----------------+
  

SCHEMATA_OPTIONS ビュー

INFORMATION_SCHEMA.SCHEMATA_OPTIONS ビューにクエリを実行すると、現在のユーザーがアクセスできるプロジェクトの各データセットが 1 行で返されます。

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

列名 データ型
CATALOG_NAME STRING データセットを含むプロジェクトの名前
SCHEMA_NAME STRING データセットの名前datasetId
OPTION_NAME STRING options テーブル内の名前値の 1 つ
OPTION_TYPE STRING options テーブルのデータ型値の 1 つ
OPTION_VALUE STRING options テーブルの値オプションの 1 つ
options テーブル
OPTION_NAME OPTION_TYPE OPTION_VALUE
default_table_expiration_days FLOAT64 データセット内のすべてのテーブルのデフォルトの有効期間(日数)
friendly_name STRING わかりやすいデータセット名
description STRING データセットの説明
labels ARRAY<STRUCT<STRING, STRING>> データセットのラベルを表す STRUCT の配列

例 1:

次の例では、INFORMATION_SCHEMATA.SCHEMATA_OPTIONS ビューにクエリを実行して、デフォルト プロジェクト(myproject)内のすべてのデータセットのデフォルトのテーブル有効期限を取得します。

デフォルト プロジェクト以外のプロジェクトに対してクエリを実行するには、次の形式でプロジェクト ID をデータセットに追加します。 `[PROJECT_ID]`.INFORMATION_SCHEMA.[VIEW] (例: `myproject`.INFORMATION_SCHEMA.SCHEMATA_OPTIONS

クエリを実行するには:

Console

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

    BigQuery ウェブ UI に移動

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

    SELECT
     *
    FROM
     INFORMATION_SCHEMA.SCHEMATA_OPTIONS
    WHERE
     option_name="default_table_expiration_days"
    
  3. [実行] をクリックします。

コマンドライン

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

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

bq query --nouse_legacy_sql \
'SELECT * FROM INFORMATION_SCHEMA.SCHEMATA_OPTIONS
WHERE option_name="default_table_expiration_days"'

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

  +----------------+---------------+-------------------------------+-------------+---------------------+
  |  catalog_name  |  schema_name  |          option_name          | option_type |    option_value     |
  +----------------+---------------+-------------------------------+-------------+---------------------+
  | myproject      | mydataset3    | default_table_expiration_days | FLOAT64     | 0.08333333333333333 |
  | myproject      | mydataset2    | default_table_expiration_days | FLOAT64     | 90.0                |
  | myproject      | mydataset1    | default_table_expiration_days | FLOAT64     | 30.0                |
  +----------------+---------------+-------------------------------+-------------+---------------------+
  

例 2:

次の例では、INFORMATION_SCHEMATA.SCHEMATA_OPTIONS ビューにクエリを実行して、デフォルト プロジェクト(myproject)のすべてのデータセットのラベルを取得します。

デフォルト プロジェクト以外のプロジェクトに対してクエリを実行するには、次の形式でプロジェクト ID をデータセットに追加します。 `[PROJECT_ID]`.INFORMATION_SCHEMA.[VIEW] (例: `myproject`.INFORMATION_SCHEMA.SCHEMATA_OPTIONS

クエリを実行するには:

Console

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

    BigQuery ウェブ UI に移動

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

    SELECT
     *
    FROM
     INFORMATION_SCHEMA.SCHEMATA_OPTIONS
    WHERE
     option_name="labels"
    
  3. [実行] をクリックします。

コマンドライン

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

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

bq query --nouse_legacy_sql \
'SELECT * FROM INFORMATION_SCHEMA.SCHEMATA_OPTIONS
WHERE option_name="labels"'

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

  +----------------+---------------+-------------+---------------------------------+------------------------+
  |  catalog_name  |  schema_name  | option_name |          option_type            |      option_value      |
  +----------------+---------------+-------------+---------------------------------+------------------------+
  | myproject      | mydataset1    | labels      | ARRAY<STRUCT<STRING, STRING>>   | [STRUCT("org", "dev")] |
  | myproject      | mydataset2    | labels      | ARRAY<STRUCT<STRING, STRING>>   | [STRUCT("org", "dev")] |
  +----------------+---------------+-------------+---------------------------------+------------------------+
  

次のステップ

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

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

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