bq ツールを使用する
このチュートリアルでは、BigQuery 用の Python ベースのコマンドライン インターフェース(CLI)ツールである bq を使用して、データセットの作成、サンプルデータの読み込み、テーブルのクエリを行う方法について説明します。このチュートリアルを完了すると、bq と、CLI を使用して BigQuery を操作する方法を理解できます。
すべての bq コマンドとフラグの詳細なリファレンスについては、bq コマンドライン ツールのリファレンスをご覧ください。
このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、「ガイドを表示」をクリックしてください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。
-
Enable the BigQuery API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.新しいプロジェクトでは、BigQuery API が自動的に有効になります。
- (省略可)プロジェクトに対する課金を有効にします。課金を有効にしない場合や、クレジット カードを指定しない場合でも、このドキュメントの手順は行えます。BigQuery には、この手順を実施するためのサンドボックスが用意されています。詳細については、BigQuery サンドボックスを有効にするをご覧ください。
-
読み込みジョブとクエリジョブの実行: BigQuery ジョブユーザー (
roles/bigquery.jobUser) -
データセットの作成、テーブルの作成、テーブルへのデータの読み込み、テーブルのクエリ: BigQuery データ編集者 (
roles/bigquery.dataEditor) 新しいブラウザタブで次の URL を開き、米国社会保障局のデータをダウンロードします。
https://www.ssa.gov/OACT/babynames/names.zipファイルを抽出します。
データセット スキーマの詳細については、抽出した
NationalReadMe.pdfファイルをご覧ください。データの内容を確認するには、
yob2024.txtファイルを開きます。このファイルには、名前、出生時の性別、その名前の子供の数の値がカンマ区切りで含まれています。このファイルにはヘッダー行がありません。ファイルを作業ディレクトリに移動します。
Cloud Shell で作業している場合は、
[詳細] 、[アップロード] の順にクリックし、[ファイル選択] をクリックして、yob2024.txtファイルを選択後、[アップロード] をクリックします。ローカルシェルで作業している場合は、bq ツールを実行しているディレクトリにファイル
yob2024.txtをコピーまたは移動します。
ドキュメントから Cloud Shell を起動した場合は、次のコマンドを入力してプロジェクト ID を設定します。これにより、各 CLI コマンドでプロジェクト ID を指定する必要がなくなります。
gcloud config set project PROJECT_IDPROJECT_ID は、実際のプロジェクト ID に置き換えます。
次のコマンドを入力して、
babynamesという名前のデータセットを作成します。bq mk --dataset babynames出力は次のようになります。
Dataset 'babynames' successfully created.データセット
babynamesがプロジェクトに表示されることを確認します。bq ls --datasets=true出力は次のようになります。
datasetId ------------- babynamesbabynamesデータセットで、ソースファイルyob2024.txtをnames2024という名前の新しいテーブルに読み込みます。bq load babynames.names2024 yob2024.txt name:string,assigned_sex_at_birth:string,count:integer出力は次のようになります。
Upload complete. Waiting on bqjob_r3c045d7cbe5ca6d2_0000018292f0815f_1 ... (1s) Current status: DONEテーブル
names2024がbabynamesデータセットに表示されることを確認します。bq ls --format=pretty babynames出力は次のようになります。出力を簡素化するために、一部の列は省略されています。
+-----------+-------+ | tableId | Type | +-----------+-------+ | names2024 | TABLE | +-----------+-------+新しい
names2024テーブルのテーブル スキーマがname: string、assigned_sex_at_birth: string、count: integerであることを確認します。bq show babynames.names2024出力は次のようになります。出力を簡素化するために、一部の列は省略されています。
Last modified Schema Total Rows Total Bytes ----------------- ------------------------------- ------------ ------------ 14 Mar 17:16:45 |- name: string 31904 607494 |- assigned_sex_at_birth: string |- count: integerデータ内の最も人気のある女の子の名前を特定します。
bq query \ 'SELECT name, count FROM babynames.names2024 WHERE assigned_sex_at_birth = "F" ORDER BY count DESC LIMIT 5'出力は次のようになります。
+-----------+-------+ | name | count | +-----------+-------+ | Olivia | 14718 | | Emma | 13485 | | Amelia | 12740 | | Charlotte | 12552 | | Mia | 12113 | +-----------+-------+データの中から最も人気の低い男の子の名前を特定します。
bq query \ 'SELECT name, count FROM babynames.names2024 WHERE assigned_sex_at_birth = "M" ORDER BY count ASC LIMIT 5'出力は次のようになります。
+---------+-------+ | name | count | +---------+-------+ | Aaran | 5 | | Aadiv | 5 | | Aadarsh | 5 | | Aarash | 5 | | Aadrik | 5 | +---------+-------+ソースデータは出現数が 5 未満の名前を除外するので、最小数は 5 です。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
babynamesデータセットを削除します。bq rm --recursive=true babynames--recursiveフラグは、names2024テーブルを含むデータセット内のすべてのテーブルを削除します。出力は次のようになります。
rm: remove dataset 'myproject:babynames'? (y/N)削除コマンドを確定するには、「
y」と入力します。- bq ツールの使用の詳細を確認する。
- BigQuery サンドボックスについて学習する。
- BigQuery へのデータの読み込みの概要について詳細を確認する。
- BigQuery でのデータのクエリについて詳細を学習する。
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
必要なロール
データセットの作成、テーブルの作成、データの読み込み、データのクエリに必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
ソースデータを含むファイルをダウンロードする
ダウンロードするファイルには、人気のある新生児の名前に関する約 7 MB のデータが含まれます。これは米国社会保障局から提供されています。
このデータの詳細については、米国社会保障局の人気の名前の背景情報をご覧ください。
データセットを作成する
テーブルにデータを読み込む
テーブルデータをクエリする
クリーンアップ
このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、リソースを含む Google Cloud プロジェクトを削除します。
プロジェクトを削除する
BigQuery サンドボックスを使用して一般公開データセットをクエリした場合、そのプロジェクトでは課金は有効になっていないため、プロジェクトを削除する必要はありません。課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
プロジェクトを削除するには:
リソースを削除する
既存のプロジェクトを使用した場合は、作成したリソースを削除します。