始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create a Cloud Storage bucket
/ 25
Upload CSV files to Cloud Storage
/ 25
Create a Cloud SQL instance
/ 25
Create a database
/ 25
SQL(構造化クエリ言語)とはデータ操作のための標準言語であり、構造化データセットを照会して分析情報を得られるようにするものです。一般にデータベース管理に使用され、リレーショナル データベースへのトランザクション レコードの入力やペタバイト規模のデータ分析といった作業を行うことができます。
二部構成の前半では SQL クエリの基本的なキーワードについて学び、ロンドン市内のシェア自転車に関する一般公開データセットに対して BigQuery でクエリを実行します。
後半では、ロンドン市内のシェア自転車に関するデータセットの一部を CSV ファイルにエクスポートしてから、Cloud SQL にアップロードします。その後、Cloud SQL を使用してデータセットとテーブルを作成および管理する方法を学びます。最後に、データの操作および編集に使用する他の SQL キーワードを実際に試してみます。
このラボでは、次の方法について学びます。
最重要: ラボを開始する前に、個人または会社の Gmail アカウントからログアウトしてください。
これは入門レベルのラボで、これまでに SQL を使用した経験がほとんど、またはまったくない方を対象としています。Cloud Storage や Cloud Shell の知識があれば役立ちますが、必須ではありません。このラボでは、SQL でのクエリの読み書きの基礎について学び、その知識を BigQuery と Cloud SQL で実際に試してみます。
ラボを始める前に、ご自身の SQL の習熟度を考慮してください。以下のラボはこのラボよりも難易度が高く、お持ちの知識をより高度なユースケースに応用していただけます。
準備ができたら下にスクロールし、以下に示す手順に沿ってラボ環境を設定します。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
前述のように、SQL では「構造化データセット」から情報を取り出すことができます。構造化データセットには明確なルールと書式があり、通常はテーブル形式(行と列のデータ)になっています。
非構造化データには、たとえば画像ファイルがあります。非構造化データは SQL で処理できず、BigQuery のデータセットにもテーブルにも格納できません(少なくともネイティブでは格納できません)。たとえば画像データを扱う場合、Cloud Vision のようなサービスを API 経由で直接呼び出して利用します。
構造化データセットの例(単純なテーブル)を以下に示します。
|
ユーザー |
料金 |
発送済み |
|
ショーン |
$35 |
○ |
|
ロッキー |
$50 |
× |
Google スプレッドシートを使ったことがある方は、このようなテーブルに見覚えがあるでしょう。テーブルには「ユーザー」、「料金」、「発送済み」の列があり、各列に値が入力されている行が 2 つあります。
データベースは基本的に 1 つまたは複数のテーブルの集合です。SQL は構造化データベース管理ツールですが、このラボのように、データベース全体に対してではなく 1 つのテーブルまたは複数のテーブルを結合したものに対してクエリを実行することが一般的です。
SQL のキーワードは文字どおりの意味を持ちますが、クエリを実行する前にデータへの質問を組み立てておくと役立ちます(ただし、楽しみのためにデータを調べてみたいだけの場合は別です)。
SQL にはあらかじめ定義されたキーワードがあります。これらのキーワードを使用して、質問を英語に似た SQL 構文に変換することで、求める答えをデータベース エンジンから受け取ることができます。
特に重要なキーワードは SELECT と FROM です。
SELECT では、データセットから取得するフィールドを指定します。FROM では、データを取得する 1 つ以上のテーブルを指定します。わかりやすいように例を使って説明します。以下の example_table テーブルを使用するとします。このテーブルには USER(ユーザー)、PRICE(料金)、SHIPPED(発送済み)の列があります。
そして、USER 列のデータのみを取得する必要があるとします。これを行うには、SELECT と FROM を使った次のクエリを実行します。
上記のコマンドを実行すると、example_table の USER 列にあるすべての名前が選択されます。
SQL の SELECT キーワードを使って複数の列を選択することもできます。USER 列と SHIPPED 列からデータを取得するとします。これを行うには、以下のように、先ほどの SELECT クエリに別の列の値を追加します(必ずカンマで区切ってください)。
このコマンドを実行すると、メモリから USER と SHIPPED のデータを取得できます。
これで、基本的な SQL キーワードを 2 つ学ぶことができました。では、もう少し複雑な内容に進みましょう。
WHERE というキーワードも SQL コマンドの一つで、特定の列の値でテーブルをフィルタできます。example_table から、商品が発送済みのユーザーの名前を取得するとします。先ほどのクエリに、次のような WHERE を追加します。
このコマンドを実行すると、商品が発送済みのすべてのユーザーがメモリから返されます。
SQL の主なキーワードについて基本を理解したので、BigQuery コンソールでこれらのクエリを実行し、学んだことを試してみましょう。
ここまでに説明した内容についての理解を深めるために、以下の多肢選択問題を用意しました。正解を目指して頑張ってください。
BigQuery は、Google Cloud 上で稼働するペタバイト規模のフルマネージド データ ウェアハウスです。データ アナリストやデータ サイエンティストが、大規模なデータセットに対するクエリやフィルタの実行、結果の集計、複雑な操作を簡単に行うことができ、サーバーの設定および管理が必要ありません。コマンドライン ツール(Cloud Shell にインストール済み)またはウェブ コンソールを使用して、Google Cloud プロジェクトに格納されているデータを管理したり、クエリを実行したりすることができます。
このラボでは、ウェブ コンソールを使用して SQL クエリを実行します。
[Cloud コンソールの BigQuery へようこそ] メッセージ ボックスが開きます。このメッセージ ボックスには、クイックスタート ガイドとリリースノートへのリンクが表示されます。
BigQuery コンソールが開きます。
ここで、この UI の主な機能について簡単に見ておきましょう。コンソールの右側にはクエリエディタがあります。ここで、前述のような SQL コマンドを記述、実行します。その下にある [クエリ履歴] には、以前に実行したクエリの一覧が表示されます。
コンソールの左側のペインにはナビゲーション メニューがあります。クエリ履歴、保存したクエリ、ジョブ履歴のほかに、[エクスプローラ] があります。
[エクスプローラ] タブの最上位のリソースには Google Cloud プロジェクトが表示されています。これは、Google Skills ラボでログインして使用する一時的な Google Cloud プロジェクトと同じようなものです。作業中のコンソールとこのスクリーンショットを見るとわかるように、[エクスプローラ] に表示されるのはこのラボのプロジェクトのみです。プロジェクト名の横にある矢印をクリックしても、何も表示されません。
これは、プロジェクトにデータセットもテーブルも含まれておらず、クエリの実行対象にできるものが何もないからです。データセットにはテーブルが含まれることは前に説明しました。プロジェクトにデータを追加する際は、BigQuery ではプロジェクトにデータセットが含まれ、データセットにテーブルが含まれることに注意してください。「プロジェクト > データセット > テーブル」という枠組みと、コンソールの詳細について理解できたので、クエリ可能なデータを読み込んでみましょう。
このセクションでは、BigQuery で SQL コマンドを実行できるようにするために、一般公開データをプロジェクトに取り込みます。
[名前を指定してプロジェクトにスターを付ける] をクリックします。
プロジェクト名「bigquery-public-data」を入力します。
[スターを付ける] をクリックします。
[データを追加] の横にある戻る矢印をクリックして、[エクスプローラ] ペインに戻ります。
この新しいタブでも、引き続きラボのプロジェクトを操作している点に注意してください。ここでは、データセットとテーブルを含む一般公開プロジェクトを分析のために BigQuery に pull しただけであり、プロジェクトを切り替えたわけではありません。ジョブもサービスもすべて、引き続きご使用の Google Skills アカウントに関連付けられています。
[エクスプローラ] ペインで、[bigquery-public-data] プロジェクト名をクリックします。
[データセット] をクリックします。
london_bicycles を含む bigquery-public-data プロジェクトの多くのデータセットにアクセスできます。
london_bicycles データセットには 2 つのテーブルがあります。
ページは次のようになります。
列、および行に入力されている値を確認します。これで、cycle_hire テーブルに対して SQL クエリを実行できる状態になりました。
これで、SQL クエリのキーワードと BigQuery のデータの枠組みの基本について理解し、使用するデータを用意することができました。このサービスを使用して、いくつか SQL コマンドを実行しましょう。
コンソールの右下を見ると、83,434,866 行のデータがあることがわかります。これは、2015 年から 2017 年の間にロンドン市内で利用されたシェア自転車の件数を示しています(決して少ない数ではありません)。
9 列目のキー end_station_name に注目してください。これは、シェア自転車の最終目的地を示しています。詳細に進む前に、end_station_name 列を分離する簡単なクエリを実行します。
20 秒ほど経過すると、クエリで指定した列 end_station_name を含む 83,434,866 行が返されます。
それでは、乗車時間が 20 分以上だった件数を確認してみましょう。
WHERE キーワードを使用した次のクエリを実行します。このクエリの実行には 1 分程度かかる場合があります。
SELECT * により、テーブルからすべての列の値が返されます。duration は秒単位であるため、1200(60 x 20)という値を使用しています。
右下を見ると、26,441,016 行が返されたことがわかります。全体に占める割合(26,441,016/83,434,866)で見ると、ロンドン市内のシェア自転車利用件数のうち約 30% が 20 分以上だった(長時間の利用が多い)ことがわかります。
ここまでに説明した内容についての理解を深めるために、以下の多肢選択問題を用意しました。正解を目指して頑張ってください。
GROUP BY キーワードを使用すると、共通の基準(列値など)を持つ結果セットの行をグループ化して、その基準で見つかった一意のエントリをすべて返すことができます。
これは、テーブル内のカテゴリ情報を把握するのに役立つキーワードです。
結果として、一意の(重複しない)列値の一覧が表示されます。
GROUP BY を使用しなければ、83,434,866 行がすべて返されることになります。GROUP BY により、テーブルで見つかった一意の列値が出力されます。これは、右下を見ると確認できます。行数は 954 になっています。これは、ロンドン市内のシェア自転車に 954 か所の異なる出発地があることを示しています。
COUNT() 関数は、同じ基準(列値など)を満たす行の数を返します。これは、GROUP BY と一緒に使用すると便利です。
前のクエリに COUNT 関数を追加して、出発地ごとの乗車件数を求めます。
出発地ごとの乗車件数が出力されます。
SQL には AS キーワードもあります。これは、テーブルまたは列のエイリアスを作成します。エイリアスはクエリで返される列またはテーブルに対して与えられる新しい名前です。その名前を AS で指定します。
AS キーワードを追加して、実際の処理を見てみましょう。クエリエディタの表示内容をクリアしてから、次のコマンドをコピーして貼り付けます。結果では、右側の列名が COUNT(*) ではなく num_starts になっています。
ご覧のように、返されたテーブルの COUNT(*) 列に num_starts というエイリアス名が設定されています。このキーワードは、大規模なデータセットを操作する場合に特に便利です。あいまいなテーブル名や列名が何を指しているのかわからなくなることは、想像以上によくあります。
ORDER BY キーワードは、指定の基準または列値に応じて、クエリから返されるデータを昇順または降順で並べ替えます。前のクエリにこのキーワードを追加して、以下の処理を行います。
以下のコマンドは、それぞれが 1 つのクエリです。コマンドごとに、次の操作を行います。
最後のクエリの結果には、各ステーションがその出発件数順に一覧表示されます。
「Hyde Park Corner, Hyde Park」からの出発が最も多いことがわかります。ただし、全体に占める割合(671,688/83,434,866)を見ると、このステーションから出発している件数は 1% に満たないことがわかります。
ここまでに説明した内容についての理解を深めるために、以下の多肢選択問題を用意しました。正解を目指して頑張ってください。
Cloud SQL は、クラウド上の PostgreSQL と MySQL のリレーショナル データベースを簡単に設定、維持、運用、管理できるようにするフルマネージド データベース サービスで、Cloud SQL が対応しているデータ形式には、ダンプファイル(.sql)と CSV ファイル(.csv)があります。ここでは、cycle_hire テーブルのサブセットを CSV ファイルにエクスポートし、一時的な場所として Cloud Storage にアップロードする方法を説明します。
BigQuery コンソールでは、以下のコマンドを最後に実行しました。
start_station_name.csv という名前で保存します。これによってダウンロードが開始され、このクエリが CSV ファイルとして保存されます。ダウンロードされたファイルの場所と名前は、後で使用するためメモしておきます。
このクエリは、各ステーションを到着地とする乗車件数を降順で並べたテーブルを返します。
end_station_name.csv という名前で保存します。これによってダウンロードが開始され、このクエリが CSV ファイルとして保存されます。ダウンロードされたファイルの場所と名前は、この後のセクションで使用するためメモしておきます。
Cloud コンソールに移動し、ストレージ バケットを作成します。作成したファイルは、ストレージ バケットにアップロードできます。
ナビゲーション メニューで [Cloud Storage] > [バケット] の順に選択し、[バケットを作成] をクリックします。
バケットの一意の名前(プロジェクト ID
[公開アクセスの防止] ダイアログが表示された場合は、[確認] をクリックします。
下の [進行状況を確認] をクリックして、ラボの進捗状況を確認します。バケットが正常に作成されていれば、評価スコアが表示されます。
Cloud コンソールに、新しく作成された Cloud Storage バケットが表示されているはずです。
[アップロード > ファイルをアップロード] をクリックし、start_station_name のデータが含まれる CSV ファイルを選択します。
次に [開く] をクリックします。
end_station_name のデータについても同様に操作します。
[バケットの詳細] ページの [オブジェクト] リストに start_station_name.csv と end_station_data.csv が表示されているはずです。
アップロードされたファイルを表示するには、ページの更新が必要になる場合があります。
[進行状況を確認] をクリックして、実行したタスクを確認します。バケットに CSV オブジェクトが正常にアップロードされている場合は、評価スコアが表示されます。
ナビゲーション メニュー()で、[Cloud SQL] をクリックします。
[インスタンス] ページの [MySQL] タブにある [開始する] で、[開発インスタンスを作成] をクリックします。
[Cloud SQL のエディションの選択] で、[Enterprise] を選択します。
[エディションのプリセット] で、[開発](vCPU 4 個、16 GB RAM、100 GB ストレージ、シングルゾーン)を選択します。
[データベースのバージョン] で [MySQL 8] を選択します。[マイナー バージョン] はデフォルト値のままにします。
[インスタンス ID] に「my-demo」と入力します。
[パスワード] に「ChangeMe1!」と入力します。
[ゾーンの可用性] で、[複数のゾーン(高可用性)] を選択します。
[ゾーンを指定] のプルダウン メニューを開き、
[インスタンスを作成] をクリックします。
ラボの進捗状況を確認するには、下の [進行状況を確認] をクリックします。Cloud SQL インスタンスが正常に設定されている場合は、評価スコアが表示されます。
Cloud SQL インスタンスが起動して実行中になったので、Cloud Shell コマンドラインを使用してそのインスタンス内にデータベースを作成します。
my-demo という名前のインスタンスの [Cloud SQL] ページで、[このインスタンスに接続] というセクションまでスクロールし、[Cloud Shell を開く] をクリックします。
プロンプトが表示されたら、[続行]、[承認] の順にクリックします。
事前入力されたコマンドを実行して SQL インスタンスに接続します。インスタンスに my-demo 以外の名前を使用した場合はその名前に置き換えてください。
注: カーソルの位置は変わりません。
次のような出力が表示されます。
Cloud SQL インスタンスにはデータベースが事前に構成されていますが、ここでは独自のデータベースを作成して、ロンドン市内のシェア自転車のデータを格納します。
bike というデータベースを作成します。次の出力が表示されます。
進捗状況をチェックするには、[進行状況を確認] をクリックして、実行したタスクを確認します。Cloud SQL インスタンスにデータベースが正常に作成された場合は、評価スコアが表示されます。
前と同じ CREATE キーワードが使われていますが、今回は TABLE 句を使用して、データベースではなくテーブルを作成することを指定しています。USE キーワードは、接続先のデータベースを指定しています。これで、「start_station_name」と「num」の 2 つの列を含む「london1」というテーブルが作成されます。VARCHAR(255) は、最大 255 文字を格納できる可変長の文字列型の列を指定し、INT は整数型の列です。
どちらのコマンドでも、以下の出力が表示されます。
「空のセット」と表示されるのは、まだデータを読み込んでいないからです。
Cloud Shell を開いたまま、次のタスクに進みます。
Cloud SQL コンソールに戻ります。ここで、CSV ファイル start_station_name と end_station_name を、新しく作成した london1 テーブルと london2 テーブルにアップロードします。
Cloud SQL のインスタンス ページで、[インポート] をクリックします。
ファイル形式は [CSV] を選択します。
Cloud Storage ファイルのフィールドで [参照] をクリックし、バケット名の横にある矢印をクリックします。[start_station_data.csv] をクリックしてから、[選択] をクリックします。
bike データベースを選択し、「london1」をテーブルとして入力します。
[インポート] をクリックします。
ステップ 1 ~ 5 を繰り返して、もう一つの CSV ファイル「end_station_data.csv」を bike データベースの london2 のテーブルにインポートします。
これで、両方の CSV ファイルが bike データベース内のテーブルにアップロードされました。
london1 の内容を確認します。出力の行数は、ステーション名ごとに 1 行ずつ、計 955 行になります。
london2 にもデータが取り込まれていることを確認します。出力の行数は、ステーション名ごとに 1 行ずつ、計 959 行になります。
データ マネジメントに役立つ SQL キーワードをさらにいくつか紹介しましょう。最初は DELETE キーワードです。
どちらのコマンドを実行しても、以下の出力が表示されます。
削除された行は CSV ファイルの列ヘッダーでした。この DELETE キーワードは、必ずファイルの 1 行目を削除するというものではなく、列名(この例では「num」)に特定の値(この例では「0」)が含まれるすべての行をテーブルから削除します。SELECT * FROM london1; と SELECT * FROM london2; の各クエリを実行してテーブルの先頭までスクロールしてみると、行がすでにないことがわかります。
INSERT INTO キーワードを使用して、テーブルに値を挿入することもできます。
start_station_name は「test destination」に、num は「1」に設定されます。INSERT INTO キーワードではテーブル(「london1」)を指定する必要があります。これにより、最初のかっこ内の用語で指定した列(この例では「start_station_name」と「num」)を持つ新しい行が作成されます。「VALUES」句の後に指定した内容が、新しい行の値として挿入されます。
次の出力が表示されます。
SELECT * FROM london1; のクエリを実行すると、「london1」テーブルの最後に新しい行が追加されていることがわかります。
ここで紹介する最後の SQL キーワードは UNION です。このキーワードは、複数の SELECT クエリの出力を結合して 1 つの結果セットを生成します。ここでは、UNION を使用して、「london1」と「london2」の各テーブルのサブセットを結合します。
以下の連結クエリは、両方のテーブルから特定のデータを取得し、UNION 演算子で結合します。
最初の SELECT クエリは、「london1」テーブルから 2 つの列を選択し、「start_station_name」にはエイリアス「top_stations」を作成しています。WHERE キーワードを使用して、出発地となった回数が 10 万回を超えるステーション名のみを取得しています。
2 番目の SELECT クエリは、「london2」テーブルから 2 つの列を選択し、WHERE キーワードを使用して、到着地となった回数が 10 万回を超えるステーション名のみを取得しています。
間にある UNION キーワードは、「london2」のデータを「london1」に加えることで、これらのクエリの出力を結合しています。「london1」に対して「london2」を結合しているので、「top_stations」と「num」の列値が優先されます。
ORDER BY は、最終的に結合されたテーブルを、「top_stations」列の値を使ってアルファベット降順に並べ替えます。
出力例(実際の結果はこれとは異なる場合があります):
14 のうち 13 のステーションが、出発地としても到着地としても上位に入っていることがわかります。基本的な SQL キーワードを使って大規模なデータセットに対してクエリを実行し、データポイントと、具体的な質問への答えを受け取ることができました。
このラボでは、SQL の基礎に加え、キーワードを使って BigQuery と Cloud SQL でクエリを実行する方法を学びました。また、プロジェクト、データベース、テーブルの基本概念とデータを操作および編集するキーワードについて確認しました。BigQuery にデータを読み込む方法を学習し、テーブルに対してクエリを実行する練習を行いました。実際に Cloud SQL でインスタンスを作成して、データのサブセットをデータベース内のテーブルに送信しました。Cloud SQL でクエリを連結して実行した結果、ロンドン市内のシェア自転車の出発地と到着地について興味深い結論を得ることができました。
以下の Google Cloud Skill Boost ラボで、Cloud SQL と BigQuery についての学習と演習を続けてください。
『Data Science on the Google Cloud Platform, 2nd Edition』(O'Reilly Media, Inc.)で、データ サイエンスの詳細を学んでください。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2026 年 3 月 19 日
ラボの最終テスト日: 2026 年 3 月 19 日
Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください