arrow_back

BigQuery: Qwik Start - コマンドライン

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

BigQuery: Qwik Start - コマンドライン

Lab 30分 universal_currency_alt No cost show_chart 入門
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP071

Google Cloud セルフペース ラボ

概要

適切なハードウェアとインフラストラクチャを用意することなく大規模なデータセットを保存してクエリを実行すると、多大な時間と費用がかかってしまう可能性があります。BigQuery は、Google のインフラストラクチャが持つ処理能力を駆使した超高速 SQL クエリの実現によりこの問題を解決する、サーバーレスでスケーラビリティの高いクラウド データ ウェアハウスです。ユーザーがデータを BigQuery に読み込んだら、後の処理は Google 側で行われます。他のユーザーにデータの表示やクエリを許可するなど、ビジネスニーズに基づいてプロジェクトとデータへのアクセスを制御できます。

BigQuery には、コンソールWeb UI、またはコマンドライン ツールでアクセスできます。コマンドライン ツールでは、Java、.NET、Python などの各種クライアント ライブラリを使用できます。BigQuery の操作には、さまざまなソリューション プロバイダを利用することもできます。

このハンズオンラボでは、Python ベースの BigQuery 用コマンドライン ツールである bq を使用して一般公開テーブルにクエリを実行し、サンプルデータを BigQuery に読み込む方法を説明します。

演習内容

  • 一般公開データセットに対してクエリを実行する
  • 新しいデータセットを作成する
  • 新しいテーブルにデータを読み込む
  • カスタム テーブルに対してクエリを実行する

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。

このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
  • ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントへの追加料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、[ラボの詳細] パネルから [ユーザー名] をコピーして [ログイン] ダイアログに貼り付けます。[次へ] をクリックします。

  4. [ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。

    重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  5. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後このタブで Cloud Console が開きます。

注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。 ナビゲーション メニュー アイコン

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

  2. 出力は次のようになります。

出力:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = <project_ID>

出力例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

タスク 1. テーブルを確認する

BigQuery には、クエリを実行できるサンプル テーブルがいくつかあります。このラボでクエリを実行する Shakespeare テーブルには、シェイクスピアの全戯曲のすべての単語のエントリが含まれます。

サンプル データセットの Shakespeare テーブルのスキーマを調べるには、次のコマンドを実行します。

bq show bigquery-public-data:samples.shakespeare

このコマンドでは、次の操作を行っています。

  • bq で BigQuery コマンドライン ツールを起動
  • show を実行されるアクションとして指定
  • 表示したい BigQuery 内の project:public dataset.table の名称を一覧として記載

出力:

Last modified Schema Total Rows Total Bytes Expiration Time Partitioning Clustered Fields Labels ----------------- ------------------------------------ ------------ ------------- ------------ ------------------- ------------------ -------- 14 Mar 13:16:45 |- word: string (required) 164656 6432064 |- word_count: integer (required) |- corpus: string (required) |- corpus_date: integer (required)

タスク 2. help コマンドを実行する

help コマンドにコマンド名を指定すると、そのコマンドに関する情報が得られます。

  1. たとえば、次の bq help の呼び出しでは、query コマンドについての情報が表示されます。
bq help query
  1. bq で使用される全コマンドの一覧を表示するには、bq help だけを実行します。

タスク 3. クエリを実行する

クエリを実行し、シェイクスピアの作品に「raisin」という部分文字列が出現する回数を調べます。

  1. クエリを実行するには、コマンド bq query "[SQL_STATEMENT]" を実行します。
  • [SQL_STATEMENT] 内で引用符を使用する場合は \ 記号でエスケープします。

  • または、全体を囲んでいる記号とは異なる種類の引用符を使用します(例: 全体を囲んでいる「'」に対して「"」を使用)。

  1. Cloud Shell で以下の標準 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'

コマンドの内容:

  • --use_legacy_sql=false は、標準 SQL をデフォルトのクエリ構文に設定します。

出力:

Waiting on job_e19 ... (0s) Current status: DONE +---------------+-------+ | word | count | +---------------+-------+ | praising | 8 | | Praising | 4 | | raising | 5 | | dispraising | 2 | | dispraisingly | 1 | | raisins | 1 |

このテーブルは、「raisin」という単語そのものは出現していないものの、いくつかのシェイクスピアの作品にこの文字の並びが出現することを示しています。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。一般公開データセットに対するクエリが正常に実行された場合、評価スコアが表示されます。

クエリを実行する(データセット: samples、テーブル: shakespeare、部分文字列: raisin)

シェイクスピアの作品に出現しない単語を検索すると、結果は返されません。

  • 次のように「huzzah」を検索しても、一致するものは返りません。
bq query --use_legacy_sql=false \ 'SELECT word FROM `bigquery-public-data`.samples.shakespeare WHERE word = "huzzah"'

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。一般公開データセットに対するクエリが正常に実行された場合、評価スコアが表示されます。

クエリを実行する(データセット: samples、テーブル: shakespeare、部分文字列: huzzah)

タスク 4. 新しいテーブルを作成する

次に、新しいテーブルを作成します。すべてのテーブルはデータセットに格納されます。データセットは、テーブルやビューなどのリソースをまとめたグループです。

新しいデータセットを作成する

  1. 次のように bq ls コマンドを使用してプロジェクト内の既存のデータセットを一覧表示します。
bq ls

デフォルトのプロジェクト内にはまだデータセットがないため、自動的にコマンドラインに戻ります。

  1. 次のように bq lsbigquery-public-data プロジェクト ID の最後にコロン(:)を追加して実行します。該当するプロジェクトに存在するデータセットが一覧表示されます。
bq ls bigquery-public-data:

出力:

datasetId ----------------------------- austin_311 austin_bikeshare austin_crime austin_incidents austin_waste baseball bitcoin_blockchain bls census_bureau_construction census_bureau_international census_bureau_usa census_utility chicago_crime ...

今度は、データセットを作成します。データセット名は最大 1,024 文字で、A~Z、a~z、0~9、アンダースコアで構成できます。ただし、先頭に数字またはアンダースコアを使用したり、スペースを含めたりすることはできません。

  1. プロジェクトに babynames という名前の新しいデータセットを作成するには、次のように bq mk コマンドを使用します。
bq mk babynames

出力例:

Dataset 'qwiklabs-gcp-ba3466847fe3cec0:babynames' successfully created.

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。babynames という名前の BigQuery データベースが正常に作成された場合は、評価スコアが表示されます。

新規データセット(名称: babynames)を作成する
  • 次のように bq ls を実行して、データセットがプロジェクトの一部として表示されることを確認します。
bq ls

出力例:

datasetId ------------- babynames

データセットをアップロードする

テーブルを作成するには、その前にデータセットをプロジェクトに追加しておく必要があります。ここで使用するカスタムデータ ファイルには、米国社会保障局から提供された、人気のある赤ちゃんの名前に関する約 7 MB のデータが含まれています。

  1. このコマンドを実行し、データファイルの URL を使用して、赤ちゃんの名前の zip ファイルをプロジェクトに追加します。
curl -LO http://www.ssa.gov/OACT/babynames/names.zip
  1. ファイルの一覧を表示します。
ls

プロジェクトに追加されたファイルの名前を確認できます。

  1. ファイルを展開します。
unzip names.zip
  1. 多数のテキスト ファイルが含まれています。再びファイルの一覧を表示します。
ls

bq load コマンドは、テーブルの作成または更新とデータの読み込みを 1 回のステップで実行します。

bq load コマンドを使用して、今作成した babynames データセット内の names2010 という名前の新しいテーブルにソースファイルを読み込みます。デフォルトでは、これは同期的に実行され、完了するまでに数秒かかります。

実行する bq load コマンドの引数は以下のとおりです。

datasetID: babynames tableID: names2010 source: yob2010.txt schema: name:string,gender:string,count:integer
  1. テーブルを作成します。
bq load babynames.names2010 yob2010.txt name:string,gender:string,count:integer

出力例:

Waiting on job_4f0c0878f6184119abfdae05f5194e65 ... (35s) Current status: DONE

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。データセット テーブルへのデータの読み込みが正常に完了すると、評価スコアが表示されます。

新しいテーブルにデータを読み込む
  1. 次のように bq lsbabynames を組み合わせて実行し、テーブルがデータセットに表示されることを確認します。
bq ls babynames

出力:

tableId Type ----------- ------- names2010 TABLE
  1. bq showdataset.table を組み合わせて実行し、スキーマを表示します。
bq show babynames.names2010

出力:

Last modified Schema Total Rows Total Bytes Expiration Time Partitioning Clustered Fields Labels ----------------- ------------------- ------------ ------------- ----------------- ------------------- ------------------ -------- 13 Aug 14:37:34 |- name: string 34073 654482 12 Oct 14:37:34 |- gender: string |- count: integer 注: デフォルトでは、BigQuery にデータを読み込む際には UTF-8 エンコード データを使用することが想定されています。ISO-8859-1(または Latin-1)でエンコードされたデータがあり、読み込んだデータに問題がある場合は、-E フラグを使用して、Latin-1 としてデータを処理するように BigQuery に対して明示的に指定できます。文字エンコードの詳細については、データの読み込みの概要をご覧ください。

タスク 5. クエリを実行する

ここまでで、データに対してクエリを実行し、興味深い結果を得るための準備が整いました。

  1. 次のコマンドを実行すると、人気がある女の子の名前上位 5 つが返されます。
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 | 22913 | | Sophia | 20643 | | Emma | 17345 | | Olivia | 17028 | | Ava | 15433 | +----------+-------+
  1. 次のコマンドを実行すると、男の子の名前で少数派の上位 5 つが返されます。
bq query "SELECT name,count FROM babynames.names2010 WHERE gender = 'M' ORDER BY count ASC LIMIT 5" 注: ソースデータでは出現数が 5 未満の名前が除外されているので、最小数は 5 になります。

出力:

Waiting on job_556ba2e5aad340a7b2818c3e3280b7a3 ... (1s) Current status: DONE +----------+-------+ | name | count | +----------+-------+ | Aaqib | 5 | | Aaidan | 5 | | Aadhavan | 5 | | Aarian | 5 | | Aamarion | 5 | +----------+-------+

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。カスタム データセットに対するクエリが正常に実行された場合は、評価スコアが表示されます。

データセット テーブルに対してクエリを実行する

タスク 6. 理解度を確認する

今回のラボで学習した内容の理解を深めていただくために、以下の多肢選択式問題を用意しました。正解を目指して頑張ってください。

タスク 7. クリーンアップ

  1. 次のように -r フラグ付きで bq rm コマンドを実行して babynames データセットを削除することで、同データセット内の全テーブルを削除します。
bq rm -r babynames
  1. y」と入力して、削除コマンドを確認します。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。babynames データセットの削除が正常に完了した場合は、評価スコアが表示されます。

babynames データセットを削除する

お疲れさまでした

コマンドラインを使用して一般公開テーブルに対してクエリを実行し、サンプルデータを BigQuery に読み込めるようになりました。

次のステップと詳細情報

このラボは、Google Cloud が提供する多くの機能を体験できる「Qwik Start」と呼ばれるラボシリーズの一部でもあります。ラボカタログで「Qwik Start」を検索し、興味のあるラボを探してみてください。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2024 年 1 月 26 日

ラボの最終テスト日: 2023 年 8 月 24 日

Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。