このドキュメントでは、BigQuery で標準(組み込み)テーブルを作成して使用する方法について説明します。他のタイプのテーブルを作成する方法については、以下をご覧ください。
- 取り込み時間パーティション分割テーブルの作成と使用
DATE
列またはTIMESTAMP
列でパーティション分割されたテーブルの作成と使用- 整数列でパーティション分割されたテーブルの作成と使用
- クラスタ化テーブルの作成と使用
テーブルを作成した後は、以下の操作を行うことができます。
- テーブルデータへのアクセスを制御する
- テーブルに関する情報を取得する
- データセット内のテーブルを一覧表示する
- テーブル メタデータの取得
テーブルのプロパティの更新、テーブルのコピー、テーブルの削除などのテーブルの管理の詳細については、テーブルの管理をご覧ください。
始める前に
BigQuery でテーブルを作成する前に、まず次のことを行います。
- BigQuery スタートガイドに従ってプロジェクトを設定します。
- BigQuery データセットを作成します。
- 必要に応じて、テーブルの概要でテーブルの制限事項、割り当て、料金を把握します。
テーブルの命名
BigQuery でテーブルを作成するとき、テーブル名はデータセットごとに一意である必要があります。テーブル名の要件は次のとおりです。
- 1,024 文字以内。
- カテゴリ L(文字)、M(マーク)、N(数字)、Pc(コネクタ、アンダースコアを含む)、Pd(ダッシュ)、Zs(スペース)の Unicode 文字を含む。詳しくは、一般カテゴリをご覧ください。
たとえば、table-01
、ग्राहक
、00_お客様
、étudiant
はすべて有効なテーブル名です。
一部のテーブル名とテーブル名の接頭辞は予約済みです。テーブル名または接頭辞が予約されているというエラーが表示された場合は、別の名前を選択して、もう試してください。
テーブルの作成
BigQuery では、次の方法でテーブルを作成できます。
- Cloud Console または
bq
コマンドライン ツールのbq mk
コマンドを使用して手動で作成する。 - プログラムで
tables.insert
API メソッドを呼び出して作成する。 - クライアント ライブラリを使用する。
- クエリ結果から作成する。
- 外部データソースを参照するテーブルを定義する。
- データを読み込むときに作成する。
CREATE TABLE
データ定義言語(DDL)ステートメントを使用する。
必要な権限
テーブルを作成するには、少なくとも次の権限が付与されている必要があります。
bigquery.tables.create
(テーブルを作成する権限)bigquery.tables.updateData
(読み込みジョブ、クエリジョブ、コピージョブを使用してテーブルにデータを書き込む権限)bigquery.jobs.create
(テーブルにデータを書き込むクエリジョブ、読み込みジョブ、コピージョブを実行する権限)
テーブルに書き込むデータにアクセスするには、bigquery.tables.getData
などの追加の権限が必要になる場合があります。
次の事前定義済みの IAM ロールには bigquery.tables.create
権限と bigquery.tables.updateData
権限の両方が含まれています。
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
次の事前定義済みの IAM ロールには bigquery.jobs.create
権限が含まれています。
bigquery.user
bigquery.jobUser
bigquery.admin
また、bigquery.datasets.create
権限を持つユーザーがデータセットを作成すると、そのデータセットに対する bigquery.dataOwner
アクセス権がユーザーに付与されます。bigquery.dataOwner
アクセス権があれば、データセット内でテーブルを作成および更新できます。
BigQuery での IAM のロールと権限については、事前定義ロールと権限をご覧ください。
スキーマ定義を含む空のテーブルの作成
次の方法でスキーマ定義を含む空のテーブルを作成できます。
- Cloud Console を使用してスキーマを入力する。
bq
コマンドライン ツールを使用してインラインでスキーマを指定する。bq
コマンドライン ツールを使用して JSON スキーマ ファイルを送信する。- API の
tables.insert
メソッドを呼び出すときに、テーブル リソースでスキーマを指定する。
テーブル スキーマの指定方法については、スキーマの指定をご覧ください。
テーブルを作成した後、そのテーブルへデータを入力するにはデータの読み込みまたはクエリ結果の書き込みを行います。
スキーマ定義を含む空のテーブルを作成するには:
コンソール
Cloud Console で、[BigQuery] ページを開きます。
[エクスプローラ] パネルでプロジェクトを展開し、データセットを選択します。
[テーブルの作成] ページの [ソース] セクションで、[空のテーブル] を選択します。
[テーブルの作成] ページの [送信先] セクションで、次の操作を行います。
[データセット名] で、該当するデータセットを選択します。
[テーブル名] に、BigQuery で作成するテーブルの名前を入力します。
[テーブルタイプ] が [ネイティブ テーブル] に設定されていることを確認します。
[スキーマ] セクションでスキーマ定義を入力します。
スキーマ情報を手動で入力します。
[テキストとして編集] を有効にし、テーブル スキーマを JSON 配列として入力します。
[+ フィールドを追加] を使用して、スキーマを手動で入力します。
[パーティションとクラスタの設定] はデフォルト値(
No partitioning
)のままにします。[詳細オプション] セクションの [暗号化] の値は、デフォルト(
Google-managed key
)のままにします。BigQuery はデフォルトで、保存されているお客様のコンテンツを暗号化します。[テーブルを作成] をクリックします。
SQL
データ定義言語(DDL)ステートメントを使用すると、標準 SQL クエリ構文を使用してテーブルとビューの作成と変更ができます。
データ定義言語ステートメントの使用をご覧ください。
Cloud Console で DDL ステートメントを使用してテーブルを作成するには:
Cloud Console で、[BigQuery] ページを開きます。
[クエリを新規作成] をクリックします。
[クエリエディタ] テキスト領域に
CREATE TABLE
DDL ステートメントを入力します。次のクエリは、2023 年 1 月 1 日まで有効の、
newtable
という名前のテーブルを作成します。テーブルの説明は「2023 年に有効期限切れとなるテーブル」、テーブルのラベルはorg_unit:development
です。CREATE TABLE mydataset.newtable ( x INT64 OPTIONS(description="An optional INTEGER field"), y STRUCT< a ARRAY<STRING> OPTIONS(description="A repeated STRING field"), b BOOL > ) OPTIONS( expiration_timestamp=TIMESTAMP "2023-01-01 00:00:00 UTC", description="a table that expires in 2023", labels=[("org_unit", "development")] )
(省略可)[展開] をクリックして [クエリの設定] を選択します。
(省略可)[処理を行うロケーション] で [自動選択] をクリックし、データのロケーションを選択します。処理を行うロケーションの設定を未指定のままにすると、該当するロケーションが自動的に検出されます。
[実行] をクリックします。クエリが完了すると、テーブルが [リソース] ペインに表示されます。
bq
--table
または -t
フラグを指定して bq mk
コマンドを使用します。テーブル スキーマ情報は、インラインまたは JSON ファイルによって指定できます。次のオプション パラメータを使用できます。
--expiration
--description
--time_partitioning_type
--destination_kms_key
--label
--time_partitioning_type
と --destination_kms_key
はここでは説明しません。--time_partitioning_type
の詳細については、取り込み時間パーティション分割テーブルまたはパーティション分割テーブルをご覧ください。--destination_kms_key
の詳細については、顧客管理の暗号鍵をご覧ください。
デフォルト以外のプロジェクトでテーブルを作成する場合は、project_id:dataset
の形式でプロジェクト ID をデータセットに追加します。
既存のデータセット内にスキーマ定義を持つ空のテーブルを作成するには、以下を入力します。
bq mk \ --table \ --expiration integer \ --description description \ --label key:value, key:value \ project_id:dataset.table \ schema
次のように置き換えます。
- integer はテーブルのデフォルトの存続期間(秒)です。最小値は 3,600 秒(1 時間)です。現在の UTC 時間にこの整数値を足した値が、有効期限になります。テーブルの作成時に有効期限を設定した場合、データセットのデフォルトのテーブル有効期限設定は無視されます。
- description はテーブルの説明です。引用符で囲みます。
- key:value は、ラベルを表す Key-Value ペアです。カンマ区切りのリストを使用して複数のラベルを入力できます。
- project_id は、プロジェクト ID です。
- dataset は、プロジェクトのデータセットです。
- table は、作成するテーブルの名前です。
- schema は、field:data_type,field:data_type という形式のインライン スキーマ定義、またはローカルマシン上の JSON スキーマ ファイルへのパスです。
コマンドラインでスキーマを指定する場合、RECORD
(STRUCT
)型と列の説明を含めることはできません。また、列のモードも指定できません。すべてのモードはデフォルトの NULLABLE
になります。説明、モード、RECORD
型を含めるには、JSON スキーマ ファイルを指定します。
例:
インライン スキーマ定義を使用してテーブルを作成するには、以下のコマンドを入力します。このコマンドは、デフォルト プロジェクトにある mydataset
内に mytable
という名前のテーブルを作成します。テーブルの存続期間は 3,600 秒(1 時間)、説明は This is my table
、ラベルは organization:development
に設定されます。このコマンドでは --table
ではなく -t
ショートカットを使用しています。スキーマはインラインで qtr:STRING,sales:FLOAT,year:STRING
と指定されています。
bq mk \
-t \
--expiration 3600 \
--description "This is my table" \
--label organization:development \
mydataset.mytable \
qtr:STRING,sales:FLOAT,year:STRING
次のコマンドを入力し、JSON スキーマ ファイルを使用してテーブルを作成します。このコマンドは、デフォルト プロジェクトにある mydataset
内に mytable
という名前のテーブルを作成します。テーブルの存続期間は 3,600 秒(1 時間)、説明は This is my table
、ラベルは organization:development
に設定されます。スキーマ ファイルのパスは /tmp/myschema.json
です。
bq mk \
--table \
--expiration 3600 \
--description "This is my table" \
--label organization:development \
mydataset.mytable \
/tmp/myschema.json
JSON スキーマ ファイルを使用してテーブルを作成するには、次のコマンドを入力します。このコマンドは、myotherproject
プロジェクトにある mydataset
内に mytable
という名前のテーブルを作成します。テーブルの存続期間は 3,600 秒(1 時間)、説明は This is my table
、ラベルは organization:development
に設定されます。スキーマ ファイルのパスは /tmp/myschema.json
です。
bq mk \
--table \
--expiration 3600 \
--description "This is my table" \
--label organization:development \
myotherproject:mydataset.mytable \
/tmp/myschema.json
API
定義済みのテーブル リソースを使用して tables.insert
メソッドを呼び出します。
C#
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、BigQuery C# API のリファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Go の手順に従って設定を行ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
PHP
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある PHP 向けの手順に従って設定を行ってください。詳細については、BigQuery PHP API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
Ruby
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用で説明している Ruby 向けの手順に沿って設定を行ってください。詳細については、BigQuery Ruby API のリファレンス ドキュメントをご覧ください。
スキーマ定義を含まない空のテーブルの作成
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
クエリ結果からのテーブルの作成
クエリ結果からテーブルを作成するには、結果を宛先テーブルに書き込みます。
Console
Cloud Console で [BigQuery] ページを開きます。
[エクスプローラ] パネルでプロジェクトを展開し、データセットを選択します。
クエリエディタが表示されていない場合は、ウィンドウの右上にある [エディタを表示] をクリックします。
[クエリエディタ] テキスト領域に有効な SQL クエリを入力します。
[展開] をクリックして、[クエリ オプション] を選択します。
[クエリ結果の宛先テーブルを設定する] チェックボックスをオンにします。
[送信先] セクションの [プロジェクト名] と [データセット名] でテーブルを作成するプロジェクトとデータセットをそれぞれ選択し、[テーブル名] に作成するテーブルの名前を設定します。
[宛先テーブルの書き込み設定] セクションで、次のいずれかを選択します。
- [空の場合に書き込む] - テーブルが空の場合にのみ、クエリ結果をテーブルに書き込みます。
- [テーブルに追加する] - クエリ結果を既存のテーブルに追加します。
- [テーブルを上書きする] - 既存のテーブルにクエリ結果を同じ名前で上書きします。
(省略可)[処理を行うロケーション] で [自動選択] をクリックし、ロケーションを選択します。
[クエリを実行] をクリックします。これにより、指定したテーブルにクエリ結果を書き込むクエリジョブが作成されます。
宛先テーブルを指定せずにクエリを実行した場合は、エディタの下にある [結果を保存する] ボタンをクリックすると、キャッシュに保存された結果テーブルを永続テーブルにコピーできます。
SQL
データ定義言語(DDL)ステートメントでは、標準 SQL クエリ構文を使用してテーブルの作成と変更ができます。
詳細については、CREATE TABLE
ステートメントのページと、既存のテーブルからの新しいテーブルの作成の CREATE TABLE
の例をご覧ください。
bq
クエリ結果に基づいて永続テーブルを作成するには、bq query
コマンドを入力して、--destination_table
フラグを指定します。標準 SQL 構文を使用するには、use_legacy_sql=false
フラグを指定します。デフォルト プロジェクト以外のプロジェクトにあるテーブルにクエリ結果を書き込むには、project_id:dataset
の形式でプロジェクト ID をデータセット名に追加します。
(省略可)--location
フラグを指定して、その値をロケーションに設定します。
既存の宛先テーブルに対する書き込み処理を制御するには、次のオプション フラグのいずれかを指定します。
--append_table
: 宛先テーブルが存在する場合、クエリ結果がそのテーブルに追加されます。--replace
: 宛先テーブルが存在する場合、そのテーブルはクエリ結果で上書きされます。
bq --location=location query \ --destination_table project_id:dataset.table \ --use_legacy_sql=false 'query'
次のように置き換えます。
location
は、クエリの処理に使用するロケーションの名前です。--location
フラグは省略可能です。たとえば、BigQuery を東京リージョンで使用している場合は、このフラグの値をasia-northeast1
に設定します。ロケーションのデフォルト値は、.bigqueryrc
ファイルを使用して設定できます。project_id
はプロジェクト ID です。dataset
は、クエリ結果を書き込むテーブルを含むデータセットの名前です。table
は、クエリ結果を書き込むテーブルの名前です。query
は標準 SQL 構文のクエリです。
書き込み処理フラグが指定されていない場合は、デフォルトの動作として、テーブルが空の場合にのみ結果が書き込まれます。テーブルが存在していて空でない場合は、「BigQuery error in query operation: Error processing job project_id:bqjob_123abc456789_00000e1234f_1': Already
Exists: Table project_id:dataset.table
」というエラーが返されます。
例:
次のコマンドを入力すると、mydataset
内の mytable
という宛先テーブルにクエリ結果が書き込まれます。このデータセットはデフォルト プロジェクトにあります。コマンドに書き込み処理フラグは指定されていないため、宛先テーブルは新規または空である必要があります。それ以外の場合は、Already exists
エラーが返されます。このクエリは、USA Name Data 一般公開データセットからデータを取得します。
bq query \ --destination_table mydataset.mytable \ --use_legacy_sql=false \ 'SELECT name, number FROM `bigquery-public-data`.usa_names.usa_1910_current WHERE gender = "M" ORDER BY number DESC'
クエリ結果を使用して mydataset
内の mytable
という名前の宛先テーブルを上書きするには、次のコマンドを入力します。このデータセットはデフォルト プロジェクトにあります。このコマンドには --replace
フラグが指定されているため、宛先テーブルが上書きされます。
bq query \ --destination_table mydataset.mytable \ --replace \ --use_legacy_sql=false \ 'SELECT name, number FROM `bigquery-public-data`.usa_names.usa_1910_current WHERE gender = "M" ORDER BY number DESC'
mydataset
内の mytable
という名前の宛先テーブルにクエリ結果を追加するには、次のコマンドを入力します。このデータセットはデフォルト プロジェクトではなく my-other-project
にあります。このコマンドには --append_table
フラグが指定されているため、クエリ結果が宛先テーブルに追加されます。
bq query \ --append_table \ --use_legacy_sql=false \ --destination_table my-other-project:mydataset.mytable \ 'SELECT name, number FROM `bigquery-public-data`.usa_names.usa_1910_current WHERE gender = "M" ORDER BY number DESC'
上記のそれぞれの例では、次のような出力が生成されます。読みやすくするために、出力の一部のみを示します。
Waiting on bqjob_r123abc456_000001234567_1 ... (2s) Current status: DONE +---------+--------+ | name | number | +---------+--------+ | Robert | 10021 | | John | 9636 | | Robert | 9297 | | ... | +---------+--------+
API
クエリ結果を永続テーブルに保存するには、jobs.insert
メソッドを呼び出して query
ジョブを構成し、destinationTable
プロパティの値を含めます。既存の宛先テーブルに対する書き込み処理を制御するには、writeDisposition
プロパティを構成します。
クエリジョブの処理を行うロケーションを制御するには、ジョブリソースの jobReference
セクションにある location
プロパティを指定します。
Go
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Go の手順に従って設定を行ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
クエリの結果を永続テーブルに保存するには、QueryJobConfiguration で宛先テーブルを目的の TableId に設定します。
Node.js
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
クエリ結果を永続テーブルに保存するには、QueryJobConfig を作成し、宛先を目的の TableReference に設定します。そのジョブ構成を query メソッドに渡します。外部データソースを参照するテーブルの作成
外部データソース(フェデレーション データソースとも呼ばれます)は、データが BigQuery に格納されていない場合でも直接クエリできるデータソースです。データの読み込みまたはストリーミングの代わりに、外部データソースを参照するテーブルを作成します。
BigQuery では、以下に格納されているデータに対して直接クエリを実行できます。
サポートされている形式は次のとおりです。
- Avro
- CSV
- JSON(改行区切りのみ)
- ORC
- Parquet
外部データソースに格納されているデータを参照する一時または永続テーブルを作成することにより、サポートされている外部データソース内のデータに対してクエリを実行できます。外部データソースの操作の詳細については、次をご覧ください。
データ読み込み時のテーブルの作成
BigQuery にデータを読み込むときに、新しいテーブルかパーティションにデータを読み込むことができます。また、既存のテーブルまたはパーティションへのデータの追加や、テーブルまたはパーティションの上書きもできます。データを読み込む前に空のテーブルを作成する必要はありません。新しいテーブルの作成とデータの読み込みを同時に行うことができます。
BigQuery にデータを読み込むとき、テーブルまたはパーティションのスキーマを指定できます。また、サポートされているデータ形式であれば、スキーマの自動検出を使用できます。
データの読み込みの詳細については、BigQuery へのデータの読み込みの概要をご覧ください。
テーブルへのアクセスの制御
テーブルとビューへのアクセスを構成するには、エンティティに次のレベルで IAM ロールを付与します。以下に、各レベルを許可されるリソースの範囲が大きい順に一覧で示します。
- Google Cloud リソース階層の上位レベル(プロジェクト、フォルダ、組織レベルなど)
- データセット レベル
- テーブル / ビューレベル
IAM で保護されているリソースを使用したアクセスは追加型です。たとえば、エンティティにプロジェクトなどの上位レベルのアクセス権がない場合は、データセット レベルでアクセス権を付与すると、データセット内のテーブルとビューにアクセスできます。同様に、エンティティに高レベルまたはデータセット レベルでのアクセス権がない場合は、テーブルまたはビューレベルでエンティティにアクセス権を付与できます。
プロジェクト、フォルダ、組織レベルなど、Google Cloud リソース階層の上位レベルで IAM ロールを付与すると、エンティティは幅広いリソースのセットにアクセスできるようになります。たとえば、プロジェクト レベルでエンティティにロールを付与すると、そのエンティティには、プロジェクトに含まれるすべてのデータセットに適用される権限が付与されます。
データセット レベルでロールを付与すると、そのエンティティが上位レベルでアクセスできない場合でも、そのデータセットのテーブルとビューで実行できるオペレーションが指定されます。データセット レベルのアクセス制御を構成する方法については、データセットへのアクセスの制御をご覧ください。
テーブルまたはビューレベルでロールを付与すると、エンティティに上位レベルのアクセスがない場合でも、特定のテーブルやビューに対してエンティティが実行できるオペレーションが特定されます。テーブルレベルのアクセス制御の構成については、テーブルおよびビューへのアクセスの制御をご覧ください。
また、IAM カスタムロールを作成することもできます。カスタムロールを作成する場合、エンティティに実行を許可する特定のオペレーションによって、付与する権限は異なります。
IAM で保護されているリソースに「拒否」権限を設定することはできません。
ロールと権限の詳細については、以下をご覧ください。
- IAM ドキュメントにおけるロールについて
- BigQuery の事前定義ロールと権限
- データセットへのアクセスの制御
- テーブルおよびビューへのアクセスの制御
- BigQuery の列レベルのセキュリティによるアクセスの制限
テーブルの使用
テーブルに関する情報の取得
テーブルに関する情報またはメタデータは、次の方法で入手できます。
- Cloud Console を使用する。
bq
コマンドライン ツールのbq show
コマンドを使用する。tables.get
API メソッドを呼び出す。- クライアント ライブラリを使用する。
INFORMATION_SCHEMA
ビューのクエリを実行する(ベータ版)。
必要な権限
テーブルに関する情報を取得するには、少なくとも bigquery.tables.get
権限が付与されている必要があります。次の事前定義済みの IAM ロールには bigquery.tables.get
権限が含まれています。
bigquery.metadataViewer
bigquery.dataViewer
bigquery.dataOwner
bigquery.dataEditor
bigquery.admin
また、bigquery.datasets.create
権限を持つユーザーがデータセットを作成すると、そのデータセットに対する bigquery.dataOwner
アクセス権がユーザーに付与されます。bigquery.dataOwner
アクセス権により、ユーザーはテーブルのメタデータを取得できます。
BigQuery での IAM ロールと権限の詳細については、アクセス制御をご覧ください。
テーブルの情報の取得
テーブルに関する情報を取得するには:
Console
ナビゲーション パネルの [リソース] セクションでプロジェクトを展開し、データセットを選択します。データセット名をクリックして展開します。これにより、データセット内のテーブルとビューが表示されます。
テーブル名をクリックします。
エディタの下にある [詳細] をクリックします。表示されるページに、テーブルの説明とテーブル情報が示されます。
テーブルのスキーマ定義を表示するには、[スキーマ] タブをクリックします。
bq
すべてのテーブル情報を表示するには、bq show
コマンドを発行します。テーブルのスキーマ情報のみを表示するには、--schema
フラグを使用します。--format
フラグを使用して出力を制御できます。
デフォルト以外のプロジェクトにあるテーブルの情報を取得する場合は、project_id:dataset
の形式でプロジェクト ID をデータセットに追加します。
bq show \ --schema \ --format=prettyjson \ project_id:dataset.table
ここで
- project_id は、プロジェクト ID です。
- dataset は、データセットの名前です。
- table は、テーブルの名前です。
例:
次のコマンドを入力して、mydataset
にある mytable
に関するすべての情報を表示します。mydataset
はデフォルト プロジェクトにあります。
bq show --format=prettyjson mydataset.mytable
次のコマンドを入力して、mydataset
にある mytable
に関するすべての情報を表示します。mydataset
は、デフォルト プロジェクトではなく myotherproject
にあります。
bq show --format=prettyjson myotherproject:mydataset.mytable
mydataset
内の mytable
に関するスキーマ情報のみを表示するには、次のコマンドを入力します。mydataset
はデフォルト プロジェクトではなく myotherproject
にあります。
bq show --schema --format=prettyjson myotherproject:mydataset.mytable
API
tables.get
メソッドを呼び出し、関連パラメータを指定します。
Go
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Go の手順に従って設定を行ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
PHP
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある PHP 向けの手順に従って設定を行ってください。詳細については、BigQuery PHP API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
INFORMATION_SCHEMA
を使用したテーブル情報の取得(ベータ版)
INFORMATION_SCHEMA
は、データセット、ルーティン、テーブル、ビュー、ジョブ、予約、ストリーミング データに関するメタデータへのアクセスを可能にする一連のビューです。
INFORMATION_SCHEMA.TABLES
および INFORMATION_SCHEMA.TABLE_OPTIONS
ビューにクエリを実行し、プロジェクト内のテーブルとビューに関するメタデータを取得できます。INFORMATION_SCHEMA.COLUMNS
および INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
ビューにクエリを実行し、テーブル内の列(フィールド)に関するメタデータを取得することもできます。
TABLES
と TABLE_OPTIONS
ビューには、ビューに関する概要情報も含まれています。詳細情報を取得するには、INFORMATION_SCHEMA.VIEWS
ビューに対してクエリを実行します。
TABLES
ビュー
INFORMATION_SCHEMA.TABLES
ビューにクエリを実行すると、クエリの結果として、データセット内の各テーブルまたはビューが 1 行で返されます。
INFORMATION_SCHEMA.TABLES
ビューのスキーマは次のとおりです。
列名 | データ型 | 値 |
---|---|---|
TABLE_CATALOG |
STRING |
データセットを含むプロジェクトのプロジェクト ID |
TABLE_SCHEMA |
STRING |
datasetId とも呼ばれる、テーブルやビューを含むデータセットの名前 |
TABLE_NAME |
STRING |
テーブルまたはビューの名前(tableId とも呼ばれる) |
TABLE_TYPE |
STRING |
テーブルタイプ:
|
IS_INSERTABLE_INTO |
STRING |
YES または NO (テーブルが DML INSERT ステートメントに対応しているかどうかによる) |
IS_TYPED |
STRING |
値は常に NO |
CREATION_TIME |
TIMESTAMP |
テーブルの作成時間 |
DDL (プレビュー) |
STRING |
テーブルの再作成に使用できる DDL ステートメント(CREATE TABLE 、CREATE VIEW など)。DDL 列は、SELECT * クエリでは非表示になります。明示的に選択した場合にのみ返されます。この列は、EXTERNAL TABLE に対して NULL を返します。 |
例
例 1:
次の例では、mydataset
という名前のデータセット内のすべてのテーブルのテーブル メタデータを取得します。このクエリは、将来の使用のために予約されている is_typed
と、SELECT *
クエリから非表示である ddl
を除いて、INFORMATION_SCHEMA.TABLES
ビューからすべての列を選択します。デフォルト プロジェクトにある mydataset
内のすべてのテーブルに対するメタデータが返されます。
mydataset
には、次のテーブルが含まれています。
mytable1
: 標準の BigQuery テーブルmyview1
: BigQuery のビュー
デフォルト プロジェクト以外のプロジェクトに対してクエリを実行するには、`project_id`.dataset.INFORMATION_SCHEMA.view
という形式でそのプロジェクト ID をデータセットに追加します。例: `myproject`.mydataset.INFORMATION_SCHEMA.TABLES
クエリを実行するには:
Console
Cloud Console で [BigQuery] ページを開きます。
[クエリエディタ] ボックスに、次の標準 SQL クエリを入力します。
INFORMATION_SCHEMA
には標準 SQL 構文を使用する必要があります。標準 SQL は Cloud Console のデフォルトの構文です。SELECT * EXCEPT(is_typed) FROM mydataset.INFORMATION_SCHEMA.TABLES
[実行] をクリックします。
bq
query
コマンドで、--nouse_legacy_sql
または --use_legacy_sql=false
フラグを使用して標準 SQL 構文を指定します。INFORMATION_SCHEMA
クエリには標準 SQL 構文を使用する必要があります。
クエリを実行するには、次のように入力します。
bq query --nouse_legacy_sql \ 'SELECT * EXCEPT(is_typed) FROM mydataset.INFORMATION_SCHEMA.TABLES'
結果は次のようになります。
+----------------+---------------+----------------+------------+--------------------+---------------------+ | table_catalog | table_schema | table_name | table_type | is_insertable_into | creation_time | +----------------+---------------+----------------+------------+--------------------+---------------------+ | myproject | mydataset | mytable1 | BASE TABLE | YES | 2018-10-29 20:34:44 | | myproject | mydataset | myview1 | VIEW | NO | 2018-12-29 00:19:20 | +----------------+---------------+----------------+------------+--------------------+---------------------+
例 2:
次の例では、INFORMATION_SCHEMA.TABLES
ビューからタイプが BASE TABLE
のすべてのテーブルを取得します。is_typed
列が除外され、ddl
列が非表示になります。デフォルト プロジェクトにある mydataset
のテーブルに対するメタデータが返されます。
デフォルト プロジェクト以外のプロジェクトに対してクエリを実行するには、`project_id`.dataset.INFORMATION_SCHEMA.view
という形式でそのプロジェクト ID をデータセットに追加します。例: `myproject`.mydataset.INFORMATION_SCHEMA.TABLES
クエリを実行するには:
Console
Cloud Console で [BigQuery] ページを開きます。
[クエリエディタ] ボックスに、次の標準 SQL クエリを入力します。
INFORMATION_SCHEMA
には標準 SQL 構文を使用する必要があります。標準 SQL は Cloud Console のデフォルトの構文です。SELECT * EXCEPT(is_typed) FROM mydataset.INFORMATION_SCHEMA.TABLES WHERE table_type="BASE TABLE"
[実行] をクリックします。
bq
query
コマンドで、--nouse_legacy_sql
または --use_legacy_sql=false
フラグを使用して標準 SQL 構文を指定します。INFORMATION_SCHEMA
クエリには標準 SQL 構文を使用する必要があります。
クエリを実行するには、次のように入力します。
bq query --nouse_legacy_sql \ 'SELECT * EXCEPT(is_typed) FROM mydataset.INFORMATION_SCHEMA.TABLES WHERE table_type="BASE TABLE"'
結果は次のようになります。
+----------------+---------------+----------------+------------+--------------------+---------------------+ | table_catalog | table_schema | table_name | table_type | is_insertable_into | creation_time | +----------------+---------------+----------------+------------+--------------------+---------------------+ | myproject | mydataset | mytable1 | BASE TABLE | NO | 2018-10-31 22:40:05 | +----------------+---------------+----------------+------------+--------------------+---------------------+
例 3:
次の例では、census_bureau_usa
データセットにある population_by_zip_2010
テーブルの INFORMATION_SCHEMA.TABLES
ビューから table_name
列と ddl
列を取得します。このデータセットは、BigQuery の一般公開データセット プログラムの一部です。
クエリ対象のテーブルは別のプロジェクトにあるため、`project_id`.dataset.INFORMATION_SCHEMA.view
の形式でプロジェクト ID をデータセットに追加します。この例での値は `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES
です。
クエリを実行するには:
Console
Cloud Console で [BigQuery] ページを開きます。
[クエリエディタ] ボックスに、次の標準 SQL クエリを入力します。
INFORMATION_SCHEMA
には標準 SQL 構文を使用する必要があります。標準 SQL は Cloud Console のデフォルトの構文です。SELECT table_name, ddl FROM `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES WHERE table_name="population_by_zip_2010"
[実行] をクリックします。
bq
query
コマンドで、--nouse_legacy_sql
または --use_legacy_sql=false
フラグを使用して標準 SQL 構文を指定します。INFORMATION_SCHEMA
クエリには標準 SQL 構文を使用する必要があります。
クエリを実行するには、次のように入力します。
bq query --nouse_legacy_sql \ 'SELECT table_name, ddl FROM `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES WHERE table_name="population_by_zip_2010"'
結果は次のようになります。
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | table_name | ddl | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | population_by_zip_2010 | CREATE TABLE `bigquery-public-data.census_bureau_usa.population_by_zip_2010` | | | ( | | | geo_id STRING OPTIONS(description="Geo code"), | | | zipcode STRING NOT NULL OPTIONS(description="Five digit ZIP Code Tabulation Area Census Code"), | | | population INT64 OPTIONS(description="The total count of the population for this segment."), | | | minimum_age INT64 OPTIONS(description="The minimum age in the age range. If null, this indicates the row as a total for male, female, or overall population."), | | | maximum_age INT64 OPTIONS(description="The maximum age in the age range. If null, this indicates the row as having no maximum (such as 85 and over) or the row is a total of the male, female, or overall population."), | | | gender STRING OPTIONS(description="male or female. If empty, the row is a total population summary.") | | | ) | | | OPTIONS( | | | labels=[("freebqcovid", "")] | | | ); | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
TABLE_OPTIONS
ビュー
INFORMATION_SCHEMA.TABLE_OPTIONS
ビューにクエリを実行すると、クエリの結果として、データセット内の各テーブルまたはビューが 1 行で返されます。
INFORMATION_SCHEMA.TABLE_OPTIONS
ビューのスキーマは次のとおりです。
列名 | データ型 | 値 |
---|---|---|
TABLE_CATALOG |
STRING |
データセットを含むプロジェクトのプロジェクト ID |
TABLE_SCHEMA |
STRING |
datasetId とも呼ばれる、テーブルやビューを含むデータセットの名前 |
TABLE_NAME |
STRING |
テーブルまたはビューの名前(tableId とも呼ばれる) |
OPTION_NAME |
STRING |
options テーブル内の名前値の 1 つ |
OPTION_TYPE |
STRING |
オプション テーブルのデータ型の値の 1 つ |
OPTION_VALUE |
STRING |
オプション テーブルの値オプションの 1 つ |
オプション テーブル
OPTION_NAME |
OPTION_TYPE |
OPTION_VALUE |
---|---|---|
partition_expiration_days |
FLOAT64 |
パーティション分割テーブルのすべてのパーティションのデフォルトの存続期間(日数) |
expiration_timestamp |
FLOAT64 |
このテーブルの有効期限 |
kms_key_name |
STRING |
テーブルの暗号化に使用される Cloud KMS 鍵の名前 |
friendly_name |
STRING |
テーブルのわかりやすい名前 |
description |
STRING |
テーブルの説明 |
labels |
ARRAY<STRUCT<STRING, STRING>> |
テーブルのラベルを表す STRUCT の配列 |
require_partition_filter |
BOOL |
テーブルに対するクエリでパーティション フィルタが必要かどうか |
enable_refresh |
BOOL |
マテリアライズド ビューで自動更新が有効にされているかどうか |
refresh_interval_minutes |
FLOAT64 |
マテリアライズド ビューが更新される頻度 |
例
例 1:
次の例では、INFORMATION_SCHEMA.TABLE_OPTIONS
ビューにクエリを実行して、デフォルト プロジェクト(myproject
)にある mydataset
の全テーブルのデフォルトのテーブル有効期限を取得します。
デフォルト プロジェクト以外のプロジェクトに対してクエリを実行するには、`project_id`.dataset.INFORMATION_SCHEMA.view
という形式でそのプロジェクト ID をデータセットに追加します。例: `myproject`.mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS
クエリを実行するには:
Console
Cloud Console で [BigQuery] ページを開きます。
[クエリエディタ] ボックスに、次の標準 SQL クエリを入力します。
INFORMATION_SCHEMA
には標準 SQL 構文を使用する必要があります。標準 SQL は Cloud Console のデフォルトの構文です。SELECT * FROM mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS WHERE option_name="expiration_timestamp"
[実行] をクリックします。
bq
query
コマンドで、--nouse_legacy_sql
または --use_legacy_sql=false
フラグを使用して標準 SQL 構文を指定します。INFORMATION_SCHEMA
クエリには標準 SQL 構文を使用する必要があります。
クエリを実行するには、次のように入力します。
bq query --nouse_legacy_sql \ 'SELECT * FROM mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS WHERE option_name="expiration_timestamp"'
結果は次のようになります。
+----------------+---------------+------------+----------------------+-------------+--------------------------------------+ | table_catalog | table_schema | table_name | option_name | option_type | option_value | +----------------+---------------+------------+----------------------+-------------+--------------------------------------+ | myproject | mydataset | mytable1 | expiration_timestamp | TIMESTAMP | TIMESTAMP "2020-01-16T21:12:28.000Z" | | myproject | mydataset | mytable2 | expiration_timestamp | TIMESTAMP | TIMESTAMP "2021-01-01T21:12:28.000Z" | +----------------+---------------+------------+----------------------+-------------+--------------------------------------+
例 2:
次の例では、mydataset
内のすべてのテーブルから、テストデータを含むテーブルを絞り込んでそのメタデータを取得します。このクエリでは、説明に「test」が含まれているテーブルを見つけるために description
オプションの値を使用します。mydataset
はデフォルト プロジェクト(myproject
)にあります。
デフォルト プロジェクト以外のプロジェクトに対してクエリを実行するには、`project_id`.dataset.INFORMATION_SCHEMA.view
の形式でそのプロジェクト ID をデータセットに追加します。例: `myproject`.mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS
クエリを実行するには:
Console
Cloud Console で [BigQuery] ページを開きます。
[クエリエディタ] ボックスに、次の標準 SQL クエリを入力します。
INFORMATION_SCHEMA
には標準 SQL 構文を使用する必要があります。標準 SQL は Cloud Console のデフォルトの構文です。SELECT * FROM mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS WHERE option_name="description" AND option_value LIKE "%test%"
[実行] をクリックします。
bq
query
コマンドで、--nouse_legacy_sql
または --use_legacy_sql=false
フラグを使用して標準 SQL 構文を指定します。INFORMATION_SCHEMA
クエリには標準 SQL 構文を使用する必要があります。
クエリを実行するには、次のように入力します。
bq query --nouse_legacy_sql \ 'SELECT * FROM mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS WHERE option_name="description" AND option_value LIKE "%test%"'
結果は次のようになります。
+----------------+---------------+------------+-------------+-------------+--------------+ | table_catalog | table_schema | table_name | option_name | option_type | option_value | +----------------+---------------+------------+-------------+-------------+--------------+ | myproject | mydataset | mytable1 | description | STRING | "test data" | | myproject | mydataset | mytable2 | description | STRING | "test data" | +----------------+---------------+------------+-------------+-------------+--------------+
COLUMNS
ビュー
INFORMATION_SCHEMA.COLUMNS
ビューにクエリを実行すると、クエリ結果として、テーブル内の列(フィールド)ごとに 1 行が表示されます。
INFORMATION_SCHEMA.COLUMNS
ビューのスキーマは次のとおりです。
列名 | データ型 | 値 |
---|---|---|
TABLE_CATALOG |
STRING |
データセットを含むプロジェクトのプロジェクト ID |
TABLE_SCHEMA |
STRING |
datasetId とも呼ばれる、テーブルを含むデータセットの名前 |
TABLE_NAME |
STRING |
テーブルまたはビューの名前(tableId とも呼ばれる) |
COLUMN_NAME |
STRING |
列の名前 |
ORDINAL_POSITION |
INT64 |
テーブル内の列の 1 から始まるオフセット。_PARTITIONTIME や _PARTITIONDATE などの疑似列の場合、値は NULL |
IS_NULLABLE |
STRING |
YES または NO (列のモードが NULL 値を許可するかどうかによる) |
DATA_TYPE |
STRING |
列の標準 SQL データ型 |
IS_GENERATED |
STRING |
値は常に NEVER |
GENERATION_EXPRESSION |
STRING |
値は常に NULL |
IS_STORED |
STRING |
値は常に NULL |
IS_HIDDEN |
STRING |
YES または NO (列が _PARTITIONTIME や _PARTITIONDATE などの疑似列であるかどうかによる) |
IS_UPDATABLE |
STRING |
値は常に NULL |
IS_SYSTEM_DEFINED |
STRING |
YES または NO (列が _PARTITIONTIME や _PARTITIONDATE などの疑似列であるかどうかによる) |
IS_PARTITIONING_COLUMN |
STRING |
YES または NO (列がパーティショニング列かどうかによる) |
CLUSTERING_ORDINAL_POSITION |
INT64 |
テーブルのクラスタリング列内の列の 1 から始まるオフセット。テーブルがクラスタ化テーブルでない場合、値は NULL |
例
次の例では、census_bureau_usa
データセットにある population_by_zip_2010
テーブルの INFORMATION_SCHEMA.COLUMNS
ビューからメタデータを取得しています。このデータセットは、BigQuery の一般公開データセット プログラムの一部です。
クエリ対象のテーブルは別のプロジェクト(bigquery-public-data
プロジェクト)にあるため、この形式 `project_id`.dataset.INFORMATION_SCHEMA.view
でプロジェクト ID をデータセットに追加します。例: `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES
次の列は現時点で今後の使用のために予約されているため、クエリ結果から除外されます。
IS_GENERATED
GENERATION_EXPRESSION
IS_STORED
IS_UPDATABLE
クエリを実行するには:
Console
Cloud Console で [BigQuery] ページを開きます。
[クエリエディタ] ボックスに、次の標準 SQL クエリを入力します。
INFORMATION_SCHEMA
には標準 SQL 構文を使用する必要があります。標準 SQL は Cloud Console のデフォルトの構文です。SELECT * EXCEPT(is_generated, generation_expression, is_stored, is_updatable) FROM `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.COLUMNS WHERE table_name="population_by_zip_2010"
[実行] をクリックします。
bq
query
コマンドで、--nouse_legacy_sql
または --use_legacy_sql=false
フラグを使用して標準 SQL 構文を指定します。INFORMATION_SCHEMA
クエリには標準 SQL 構文を使用する必要があります。
クエリを実行するには、次のように入力します。
bq query --nouse_legacy_sql \ 'SELECT * EXCEPT(is_generated, generation_expression, is_stored, is_updatable) FROM `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.COLUMNS WHERE table_name="population_by_zip_2010"'
結果は次のようになります。読みやすくするために table_catalog
と table_schema
は結果から除外されます。
+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+ | table_name | column_name | ordinal_position | is_nullable | data_type | is_hidden | is_system_defined | is_partitioning_column | clustering_ordinal_position | +------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+ | population_by_zip_2010 | zipcode | 1 | NO | STRING | NO | NO | NO | NULL | | population_by_zip_2010 | geo_id | 2 | YES | STRING | NO | NO | NO | NULL | | population_by_zip_2010 | minimum_age | 3 | YES | INT64 | NO | NO | NO | NULL | | population_by_zip_2010 | maximum_age | 4 | YES | INT64 | NO | NO | NO | NULL | | population_by_zip_2010 | gender | 5 | YES | STRING | NO | NO | NO | NULL | | population_by_zip_2010 | population | 6 | YES | INT64 | NO | NO | NO | NULL | +------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+
COLUMN_FIELD_PATHS
ビュー
INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
ビューにクエリを実行すると、クエリ結果として、RECORD
(または STRUCT
)列内でネストされた列ごとに 1 行が表示されます。
INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
ビューのスキーマは次のとおりです。
列名 | データ型 | 値 |
---|---|---|
TABLE_CATALOG |
STRING |
データセットを含むプロジェクトのプロジェクト ID |
TABLE_SCHEMA |
STRING |
datasetId とも呼ばれる、テーブルを含むデータセットの名前 |
TABLE_NAME |
STRING |
テーブルまたはビューの名前(tableId とも呼ばれる) |
COLUMN_NAME |
STRING |
列の名前 |
FIELD_PATH |
STRING |
RECORD 列または STRUCT 列内でネストされた列のパス |
DATA_TYPE |
STRING |
列の標準 SQL データ型 |
DESCRIPTION |
STRING |
列の説明 |
例
次の例では、github_repos
データセットにある commits
テーブルの INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
ビューからメタデータを取得しています。このデータセットは、BigQuery の一般公開データセット プログラムの一部です。
クエリ対象のテーブルは別のプロジェクト(bigquery-public-data
プロジェクト)にあるため、この形式 `project_id`.dataset.INFORMATION_SCHEMA.view
でプロジェクト ID をデータセットに追加します。例: `bigquery-public-data`.github_repos.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
commits
テーブルには、以下のネストされた列と、ネストされた繰り返し列があります。
author
: ネストされたRECORD
列committer
: ネストされたRECORD
列trailer
: ネストされた繰り返しのRECORD
列difference
: ネストされた繰り返しのRECORD
列
クエリでは、author
列と difference
列に関するメタデータを取得します。
クエリを実行するには:
Console
Cloud Console で [BigQuery] ページを開きます。
[クエリエディタ] ボックスに、次の標準 SQL クエリを入力します。
INFORMATION_SCHEMA
には標準 SQL 構文を使用する必要があります。標準 SQL は Cloud Console のデフォルトの構文です。SELECT * FROM `bigquery-public-data`.github_repos.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS WHERE table_name="commits" AND column_name="author" OR column_name="difference"
[実行] をクリックします。
bq
query
コマンドで、--nouse_legacy_sql
または --use_legacy_sql=false
フラグを使用して標準 SQL 構文を指定します。INFORMATION_SCHEMA
クエリには標準 SQL 構文を使用する必要があります。
クエリを実行するには、次のように入力します。
bq query --nouse_legacy_sql \ 'SELECT * FROM `bigquery-public-data`.github_repos.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS WHERE table_name="commits" AND column_name="author" OR column_name="difference"'
結果は次のようになります。読みやすくするために table_catalog
と table_schema
は結果から除外されます。
+------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+ | table_name | column_name | field_path | data_type | description | +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+ | commits | author | author | STRUCT<name STRING, email STRING, time_sec INT64, tz_offset INT64, date TIMESTAMP> | NULL | | commits | author | author.name | STRING | NULL | | commits | author | author.email | STRING | NULL | | commits | author | author.time_sec | INT64 | NULL | | commits | author | author.tz_offset | INT64 | NULL | | commits | author | author.date | TIMESTAMP | NULL | | 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 | | commits | difference | difference.old_mode | INT64 | NULL | | commits | difference | difference.new_mode | INT64 | NULL | | commits | difference | difference.old_path | STRING | NULL | | commits | difference | difference.new_path | STRING | NULL | | commits | difference | difference.old_sha1 | STRING | NULL | | commits | difference | difference.new_sha1 | STRING | NULL | | commits | difference | difference.old_repo | STRING | NULL | | commits | difference | difference.new_repo | STRING | NULL | +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+
データセット内のテーブルの一覧表示
データセット内のテーブルは、次の方法で一覧表示できます。
- Cloud Console を使用する。
bq
コマンドライン ツールのbq ls
コマンドを使用する。tables.list
API メソッドを呼び出す。- クライアント ライブラリを使用する。
必要な権限
データセットに含まれるテーブルを一覧表示するには、少なくとも bigquery.tables.list
権限が付与されている必要があります。次の IAM 事前定義ロールには bigquery.tables.list
権限が含まれています。
bigquery.user
bigquery.metadataViewer
bigquery.dataViewer
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
BigQuery での IAM ロールと権限の詳細については、アクセス制御をご覧ください。
テーブルの一覧表示
データセット内のテーブルを一覧表示するには:
Console
Cloud Console のナビゲーション パネルで、データセット名をクリックして展開します。これにより、データセット内のテーブルとビューが表示されます。
リストをスクロールして、データセット内のテーブルを表示します。テーブルとビューはアイコンで区別できます。
bq
bq ls
コマンドを発行します。--format
フラグを使用して出力を制御できます。デフォルト プロジェクト以外のプロジェクトにあるテーブルを一覧表示する場合は、project_id:dataset
の形式でプロジェクト ID をデータセットに追加します。
その他のフラグ
--max_results
または-n
: 結果の最大数を示す整数。デフォルト値は50
です。
bq ls \ --format=pretty \ --max_results integer \ project_id:dataset
ここで
- integer は一覧表示するテーブルの数を表す整数です。
- project_id はプロジェクト ID です。
- dataset は、データセットの名前です。
このコマンドを実行すると、Type
フィールドに TABLE
または VIEW
が表示されます。例:
+-------------------------+-------+----------------------+-------------------+ | tableId | Type | Labels | Time Partitioning | +-------------------------+-------+----------------------+-------------------+ | mytable | TABLE | department:shipping | | | myview | VIEW | | | +-------------------------+-------+----------------------+-------------------+
例:
次のコマンドを入力すると、デフォルト プロジェクトにある mydataset
データセット内のテーブルが一覧表示されます。
bq ls --format=pretty mydataset
次のコマンドを入力して、mydataset
からデフォルト出力数の 50 を超えるテーブルを返します。mydataset
はデフォルト プロジェクトにあります。
bq ls --format=pretty --max_results 60 mydataset
次のコマンドを入力すると、myotherproject
にある mydataset
データセット内のテーブルが一覧表示されます。
bq ls --format=pretty myotherproject:mydataset
API
API を使用してテーブルを一覧表示するには、tables.list
メソッドを呼び出します。
C#
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、BigQuery C# API のリファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Go の手順に従って設定を行ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
PHP
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある PHP 向けの手順に従って設定を行ってください。詳細については、BigQuery PHP API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
Ruby
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用で説明している Ruby 向けの手順に沿って設定を行ってください。詳細については、BigQuery Ruby API のリファレンス ドキュメントをご覧ください。
次のステップ
- データセットの詳細については、データセットの概要をご覧ください。
- テーブルデータの処理の詳細については、テーブルデータの管理をご覧ください。
- テーブル スキーマの指定の詳細については、スキーマの指定をご覧ください。
- テーブル スキーマの変更の詳細については、テーブル スキーマの変更をご覧ください。
- テーブルの管理の詳細については、テーブルの管理をご覧ください。
INFORMATION_SCHEMA
の概要については、BigQueryINFORMATION_SCHEMA
の概要をご覧ください。
使ってみる
Google Cloud を初めて使用される方は、アカウントを作成して、実際のシナリオでの BigQuery のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイに使用できる無料クレジット $300 分を差し上げます。
BigQuery の無料トライアル