このページでは、bq
コマンドライン ツールを使用してクエリを実行し、データを読み込む方法について説明します。
始める前に
このクイックスタートを始める前に、Google Cloud Console を使用して、プロジェクトを作成または選択し、Cloud SDK をインストールします。
- Google アカウントにログインします。
Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
- Cloud SDK をインストールして初期化します。
- 新しいプロジェクトでは、BigQuery が自動的に有効になります。既存のプロジェクトで BigQuery を有効にするには、 BigQuery API を有効にします。 にアクセスします。
- クレジット カード情報の提供やプロジェクトに対する課金の有効化を行わない場合は、BigQuery によってサンドボックスが提供されます。このトピックの手順は、プロジェクトへの課金が有効かどうかに関係なく機能します。必要に応じて課金を有効にする場合は、課金を有効にする方法についてをご覧ください。
テーブルを確認する
BigQuery には、クエリで使用可能なサンプル テーブルがいくつか用意されています。このクイックスタートでクエリを実行する shakespeare
テーブルには、シェイクスピアの全戯曲のすべての単語のエントリが含まれます。
特定のテーブルのスキーマを調べるには、次のコマンドを実行します。プロジェクト ID とデータセット ID は、bq
ツールのデフォルト値の場合は省略できます。
bq show PROJECT_ID:DATASET_ID.TABLE_ID
次の例では、samples
データセットの shakespeare
テーブルを調べます。
bq show bigquery-public-data:samples.shakespeare
出力:
Table bigquery-public-data:samples.shakespeare Last modified Schema Total Rows Total Bytes Expiration ----------------- ------------------------------------ ------------ ------------- ------------ 26 Aug 14:43:49 |- word: string (required) 164656 6432064 |- word_count: integer (required) |- corpus: string (required) |- corpus_date: integer (required)
help コマンドを実行する
bq
コマンドライン ツールの詳細情報を取得するには、bq help
を使用します。
bq help
特定のコマンドについての情報を表示するには、コマンド名を指定します。たとえば、次の bq help
の呼び出しでは、query
コマンドについての情報が表示されます。
bq help query
クエリの実行
クエリを実行し、シェイクスピアの作品に raisin
という部分文字列が出現する回数を調べます。
クエリを実行するには、bq query "SQL_STATEMENT"
コマンドを実行します。
SQL_STATEMENT
内の引用符は\
記号でエスケープします。または、全体を囲んでいる記号とは異なる種類の引用符を使用します(
"
と'
)。
次の標準 SQL クエリを使用して、シェイクスピアの作品に raisin
という部分文字列が出現する回数を調べます。
bq query --use_legacy_sql=false \ 'SELECT word, SUM(word_count) AS count FROM `bigquery-public-data`.samples.shakespeare WHERE word LIKE "%raisin%" GROUP BY word'
出力:
Waiting on job_dcda37c0bbed4c669b04dfd567859b90 ... (0s) Current status: DONE +---------------+-------+ | word | count | +---------------+-------+ | Praising | 4 | | raising | 5 | | raisins | 1 | | praising | 8 | | dispraising | 2 | | dispraisingly | 1 | +---------------+-------+
シェイクスピアの作品に出現しない単語を検索すると、結果は返されません。たとえば、次のように huzzah
を検索すると一致するものは返されません。
bq query --use_legacy_sql=false \ 'SELECT word FROM `bigquery-public-data`.samples.shakespeare WHERE word = "huzzah"'
出力:
Waiting on job_e19 ... (4s) Current status: DONE $
新しいテーブルを作成する
次に、新しいテーブルを作成します。すべてのテーブルはデータセットに格納されます。データセットは、テーブルやビューなどのリソースのグループです。
ステップ 1: サンプルデータをダウンロードする
サンプルデータには、人気のある新生児の名前に関する約 7 MB のデータが含まれています。これは米国社会保障局が提供しているものです。
ファイルを抽出します。
zip ファイルには、データセットのスキーマについて説明した README ファイルが含まれています。このデータセットの詳細
yob2010.txt
というファイルを開いて、データの内容を確認します。このファイルは、名前、性別(M
またはF
)、その名前の子供の数を示す 3 つの列を含む CSV ファイルです。このファイルにヘッダー行はありません。bq
コマンドライン ツールを実行しているディレクトリに、yob2010.txt
ファイルをコピーまたは移動します。Cloud Shell でbq
コマンドライン ツールを実行している場合は、yob2010.txt
ファイルをアップロードします。Cloud Shell を使用したファイルの管理をご覧ください。
ステップ 2: 新しいデータセットを作成する
-
デフォルトのプロジェクトに既存のデータセットがあるかどうかを確認するには、
bq ls
コマンドを使用します。bq ls
出力例:
datasetId ------------- olddataset
bq ls
を再び実行し、コロン(:)を末尾に付加したプロジェクト ID を指定して、特定のプロジェクトに含まれるデータセットの一覧を取得します。次の例では、publicdata
プロジェクトのデータセットの一覧を取得しています。bq ls publicdata:
出力:
datasetId ----------- samples
-
デフォルトのプロジェクトに
babynames
という名前の新しいデータセットを作成するには、bq mk
コマンドを使用します。データセット名は、最大 1,024 文字で、A~Z、a~z、0~9、アンダースコアで構成できますが、数字またはアンダースコアで始めることはできません。また、スペースを入れることもできません。bq mk babynames
出力例:
Dataset 'myprojectid:babynames' successfully created.
bq ls
を実行して、デフォルトのプロジェクトに新しいデータセットが表示されることを確認します。bq ls
出力例:
datasetId ------------- olddataset babynames
ステップ 3: テーブルをアップロードする
bq load
コマンドは、テーブルの作成または更新とデータの読み込みを 1 回のステップで実行します。
-
bq load
コマンドを実行して、作成したbabynames
データセットのnames2010
という新しいテーブルにソースファイルを読み込みます。デフォルトでは、このコマンドは同期的に実行され、完了するまでに数秒かかります。bq load babynames.names2010 yob2010.txt name:string,gender:string,count:integer
bq load
コマンドの引数:- datasetID:
babynames
- テーブル ID:
names2010
- ソース:
yob2010.txt
: 必要に応じて、ファイルへのフルパスを含めてください - スキーマ:
name:string,gender:string,count:integer
出力例:
Waiting on job_4f0c0878f6184119abfdae05f5194e65 ... (35s) Current status: DONE
- datasetID:
-
bq ls
を実行して、テーブルがデータセットに表示されることを確認します。bq ls babynames
出力:
tableId Type ----------- ------- names2010 TABLE
-
bq show
を実行して、スキーマを確認します。bq show babynames.names2010
出力:
Table myprojectid:babynames.names2010 Last modified Schema Total Rows Total Bytes Expiration ----------------- ------------------- ------------ ------------- ------------ 13 Mar 15:31:00 |- name: string 34041 653855 |- gender: string |- count: integer
デフォルトでは、BigQuery は読み込まれるデータが UTF-8 エンコード データであるものと想定します。ISO-8859-1(または Latin-1)でエンコードされたデータがあり、そのデータに問題がある場合は、-E
フラグを使用して、Latin-1 としてデータを処理するように BigQuery に対して指定します。詳細については、エンコードをご覧ください。
ステップ 4: クエリを実行する
-
最も人気のある女の子の名前を取得するには、次のコマンドを実行します。
bq query "SELECT name,count FROM babynames.names2010 WHERE gender = 'F' ORDER BY count DESC LIMIT 5"
出力:
Waiting on job_58c0f5ca52764ef1902eba611b71c651 ... (0s) Current status: DONE +----------+-------+ | name | COUNT | +----------+-------+ | Isabella | 22731 | | Sophia | 20477 | | Emma | 17179 | | Olivia | 16860 | | Ava | 15300 | +----------+-------+
-
最も珍しい男の子の名前を取得するには、次のコマンドを実行します。ソースデータは出現数が 5 未満の名前を除外するので、最小数は 5 です。
bq query "SELECT name,count FROM babynames.names2010 WHERE gender = 'M' ORDER BY count ASC LIMIT 5"
出力:
Waiting on job_556ba2e5aad340a7b2818c3e3280b7a3 ... (1s) Current status: DONE +----------+-------+ | name | COUNT | +----------+-------+ | Aarian | 5 | | Aaidan | 5 | | Aamarion | 5 | | Aadhavan | 5 | | Aaqib | 5 | +----------+-------+
クリーンアップ
このクイックスタートで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。
bq rm
コマンドを実行して、babynames
データセットを削除します。-r
フラグを使用して、names2010
テーブルを含むデータセットのすべてのテーブルを削除します。bq rm -r babynames
y
コマンドを入力して、削除コマンドの結果を確認します。
次のステップ
bq
コマンドライン ツールの詳細については、bq
コマンドライン ツールの使用をご覧ください。BigQuery へのデータの読み込みの詳細については、データの読み込みの概要をご覧ください。
データのクエリの詳細については、BigQuery データのクエリの概要をご覧ください。
BigQuery からデータをエクスポートする方法については、テーブルデータのエクスポートをご覧ください。
プログラムで BigQuery にアクセスする方法については、REST API リファレンスまたは BigQuery API クライアント ライブラリのページをご覧ください。