
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
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 のデータセットにもテーブルにも格納できません(少なくともネイティブでは格納できません)。たとえば画像データを処理するには、API を通じて Cloud Vision のようなサービスを直接利用します。
構造化データセットの例(単純なテーブル)を以下に示します。
ユーザー |
料金 |
発送済み |
ショーン |
$35 |
○ |
ロッキー |
$50 |
× |
Google スプレッドシートを使ったことがある方は、このようなテーブルに見覚えがあるでしょう。テーブルには「ユーザー」、「料金」、「発送済み」の列があり、各列に値が入力されている行が 2 つあります。
データベースは基本的に 1 つまたは複数のテーブルの集合です。SQL は構造化データベースの管理ツールですが、このラボのように、データベース全体ではなく 1 つのテーブルまたは結合された複数のテーブルに対してクエリを実行することも一般的です。
SQL のキーワードは文字どおりの意味を持ちますが、クエリを実行する前にデータへの質問を組み立てておくと役立ちます(ただし、楽しみのためにデータを調べてみたいだけの場合は別です)。
SQL にはあらかじめ定義されたキーワードがあります。これらのキーワードを使用して、質問を英語に似た SQL 構文に変換することで、求める答えをデータベース エンジンから受け取ることができます。
特に重要なキーワードは SELECT
と FROM
です。
SELECT
では、データセットから pull するフィールドを指定します。FROM
では、データを pull する 1 つ以上のテーブルを指定します。わかりやすいように例を使って説明します。以下の example_table
テーブルを使用するとします。このテーブルには USER(ユーザー)、PRICE(料金)、SHIPPED(発送済み)の列があります。
そして、USER 列のデータのみを pull する必要があるとします。これを行うには、SELECT
と FROM
を使った次のクエリを実行します。
上記のコマンドを実行すると、example_table
にある USER
列のすべての名前が選択されます。
SQL の SELECT
キーワードを使って複数の列を選択することもできます。USER 列と SHIPPED 列からデータを pull するとしましょう。これを行うには、以下のように、先ほどの SELECT
クエリに別の列の値を追加します(必ずカンマで区切ってください)。
このコマンドを実行すると、メモリから USER
と SHIPPED
のデータを取得できます。
これで、基本的な SQL キーワードを 2 つ学ぶことができました。では、もう少し複雑な内容に進みましょう。
WHERE
というキーワードも SQL コマンドの一つで、特定の列の値でテーブルをフィルタできます。example_table
から、商品が発送済みのユーザーの名前を pull するとしましょう。先ほどのクエリに、次のように WHERE
を追加します。
このコマンドを実行すると、商品が発送済みのすべてのユーザーがメモリから返されます。
SQL の主なキーワードを理解できたところで、BigQuery コンソールでこれらを使ってクエリを実行し、学んだことを試してみましょう。
ここまでに説明した内容についての理解を深めるために、以下の多肢選択問題を用意しました。正解を目指して頑張ってください。
BigQuery は、Google Cloud 上で稼働するペタバイト規模のフルマネージド データ ウェアハウスです。データ アナリストやデータ サイエンティストが、大規模なデータセットに対するクエリやフィルタの実行、結果の集計、複雑な操作を簡単に行うことができ、サーバーの設定および管理が必要ありません。コマンドライン ツール(Cloud Shell にインストール済み)またはウェブ コンソールを使用して、Google Cloud プロジェクトに格納されているデータを管理したり、クエリを実行したりすることができます。
このラボでは、ウェブ コンソールを使用して SQL クエリを実行します。
[Cloud コンソールの BigQuery へようこそ] メッセージ ボックスが開きます。このメッセージ ボックスには、クイックスタート ガイドとリリースノートへのリンクが表示されます。
BigQuery コンソールが開きます。
ここで、この UI の主な機能について簡単に見ておきましょう。コンソールの右側にはクエリエディタがあります。ここで、前述のような SQL コマンドを記述、実行します。その下にある [クエリ履歴] には、以前に実行したクエリの一覧が表示されます。
コンソールの左側のペインにはナビゲーション メニューがあります。クエリ履歴、保存したクエリ、ジョブ履歴のほかに、[エクスプローラ] があります。
[エクスプローラ] の最上位のリソースには Google Cloud プロジェクトが表示されています。これは、Google Cloud Skills Boost ラボでログインして使用する一時的な Google Cloud プロジェクトと同じようなものです。作業中のコンソールとこのスクリーンショットを見るとわかるように、[エクスプローラ] に表示されるのはこのラボのプロジェクトのみです。プロジェクト名の横にある矢印をクリックしても、何も表示されません。
これは、プロジェクトにデータセットもテーブルも含まれておらず、クエリの実行対象にできるものが何もないからです。データセットにはテーブルが含まれることは前に説明しました。プロジェクトにデータを追加する際は、BigQuery ではプロジェクトにデータセットが含まれ、データセットにテーブルが含まれることに注意してください。「プロジェクト > データセット > テーブル」という枠組みと、コンソールの詳細について理解できたので、クエリ可能なデータを読み込んでみましょう。
このセクションでは、BigQuery で SQL コマンドを実行できるようにするために、一般公開データをプロジェクトに pull します。
[+ 追加] をクリックします。
[名前を指定してプロジェクトにスターを付ける] を選択します。
プロジェクト名として「bigquery-public-data」と入力します。
[スターを付ける] をクリックします。
この新しいタブでも、引き続きラボのプロジェクトを操作している点に注意してください。ここでは、データセットとテーブルを含む一般公開プロジェクトを分析のために BigQuery に pull しただけであり、プロジェクトを切り替えたわけではありません。ジョブとサービスは引き続き Google Cloud Skills Boost アカウントに関連付けられています。これは、コンソール上部のプロジェクト フィールドで確認できます。
bigquery-public-data
london_bicycles
cycle_hire
cycle_stations
このラボでは、cycle_hire に含まれているデータを使用します。cycle_hire
テーブルを開き、[プレビュー] タブをクリックします。ページは次のようになります。
列、および行に入力されている値を確認します。これで、cycle_hire
テーブルに対して SQL クエリを実行できる状態になりました。
ここまでのところで、SQL クエリのキーワードと BigQuery のデータの枠組みについて理解し、操作対象のデータを用意しました。このサービスを使用して、いくつか SQL コマンドを実行しましょう。
コンソールの右下を見ると、83,434,866 行のデータがあることがわかります。これは、2015 年から 2017 年の間にロンドン市内で利用されたシェア自転車の件数を示しています(決して少ない数ではありません)。
7 列目のキー 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」からの出発が最も多いことがわかります。ただし、全体に占める割合(234,458/83,434,866)を見ると、このステーションから出発している件数は 1% に満たないことがわかります。
ここまでに説明した内容についての理解を深めるために、以下の多肢選択問題を用意しました。正解を目指して頑張ってください。
Cloud SQL は、クラウド上の PostgreSQL と MySQL のリレーショナル データベースを簡単に設定、維持、運用、管理できるようにするフルマネージド データベース サービスで、Cloud SQL が対応しているデータ形式には、ダンプファイル(.sql)と CSV ファイル(.csv)があります。ここでは、cycle_hire
テーブルのサブセットを CSV ファイルにエクスポートし、一時的な場所として Cloud Storage にアップロードする方法を説明します。
BigQuery コンソールでは、以下のコマンドを最後に実行しました。
[クエリ結果] セクションで、[結果を保存] > [CSV(ローカル ファイル)] をクリックします。これによってダウンロードが開始され、このクエリが CSV ファイルとして保存されます。ダウンロードされたファイルの場所と名前は、後で使用するためメモしておきます。
クエリエディタの表示内容をクリアしてから、次のコマンドをコピーしてクエリエディタで実行します。
このクエリは、各ステーションを到着地とする乗車件数を降順で並べたテーブルを返します。
Cloud コンソールに移動し、ストレージ バケットを作成します。作成したファイルは、ストレージ バケットにアップロードできます。
ナビゲーション メニューで [Cloud Storage] > [バケット] の順に選択し、[バケットを作成] をクリックします。
バケットの一意の名前を入力します。その他の設定はデフォルトのままにして [作成] をクリックします。
プロンプトが表示されたら、公開アクセスの防止
ダイアログで [確認] をクリックします。
下の [進行状況を確認] をクリックして、ラボの進捗状況を確認します。バケットが正常に作成されていれば、評価スコアが表示されます。
Cloud コンソールに、新しく作成された Cloud Storage バケットが表示されているはずです。
[アップロード > ファイルをアップロード] をクリックし、start_station_name
のデータが含まれる CSV ファイルを選択します。
次に [開く] をクリックします。end_station_name
のデータについても同様に操作します。
start_station_name
ファイルの名前を変更します。ファイル名の端にあるその他アイコンをクリックして、[名前を変更] をクリックします。ファイル名を「start_station_data.csv
」に変更します。
end_station_name
ファイルの名前を変更します。ファイル名の端にあるその他アイコンをクリックして、[名前を変更] をクリックします。ファイル名を「end_station_data.csv
」に変更します。
[バケットの詳細] ページの [オブジェクト] リストに start_station_name.csv
と end_station_data.csv
が表示されているはずです。
[進行状況を確認] をクリックして、実行したタスクを確認します。バケットに CSV オブジェクトが正常にアップロードされている場合は、評価スコアが表示されます。
コンソールで、ナビゲーション メニュー > [SQL] の順に選択します。
[インスタンスを作成] > [MySQL を選択] をクリックします。
インスタンス ID として「my-demo」と入力します。
[パスワード] フィールドに安全なパスワードを入力します(このパスワードを忘れないでください)。
データベース バージョンとして [MySQL 8] を選択します。
[Cloud SQL のエディションの選択] で、[Enterprise] を選択します。
[プリセット] で、[開発](vCPU 4 個、16 GB RAM、100 GB ストレージ、シングルゾーン)を選択します。
[リージョン] フィールドを
[Multi zones (Highly available)] > [Primary Zone] フィールドを
[インスタンスを作成] をクリックします。
ラボの進捗状況を確認するには、下の [進行状況を確認] をクリックします。Cloud SQL インスタンスが正常に設定されている場合は、評価スコアが表示されます。
Cloud SQL インスタンスが起動して実行中になったので、Cloud Shell コマンドラインを使用してそのインスタンス内にデータベースを作成します。
コンソールの右上にあるアイコンをクリックして Cloud Shell を開きます。
次のコマンドを実行して、プロジェクト ID を環境変数として設定します。
[Y/n] の選択を求めるプロンプトが表示されたら「Y」と入力し、Enter キーを押します。
これにより、ブラウザで開くことができるリンクが生成されます。ラボのアカウントにログイン済みのブラウザで、このリンクを開きます。ログインしたら、表示された確認コードをコピーします。コードを Cloud Shell に貼り付けます。
my-demo
以外の名前を使用した場合はその名前に置き換えてください。次のような出力が表示されます。
Cloud SQL インスタンスにはデータベースが事前に構成されていますが、ここでは独自のデータベースを作成して、ロンドン市内のシェア自転車のデータを格納します。
bike
というデータベースを作成します。次の出力が表示されます。
進捗状況をチェックするには、[進行状況を確認] をクリックして、実行したタスクを確認します。Cloud SQL インスタンスにデータベースが正常に作成された場合は、評価スコアが表示されます。
前と同じ CREATE
キーワードが使われていますが、今回は TABLE
句を使用して、データベースではなくテーブルを作成することを指定しています。USE
キーワードは、接続先のデータベースを指定しています。これで、「start_station_name」と「num」の 2 つの列を含む「london1」というテーブルが作成されます。VARCHAR(255)
は、最大 255 文字を格納できる可変長の文字列型の列を指定し、INT
は整数型の列です。
どちらのコマンドでも、以下の出力が表示されます。
「空のセット」と表示されるのは、まだデータを読み込んでいないからです。
Cloud SQL コンソールに戻ります。ここで、CSV ファイル start_station_name
と end_station_name
を、新しく作成した london1 テーブルと london2 テーブルにアップロードします。
start_station_data.csv
] をクリックしてから、[選択] をクリックします。bike
データベースを選択し、「london1
」をテーブルとして入力します。もう 1 つの CSV ファイルについても同様の操作を行います。
end_station_data.csv
]、[選択] の順にクリックします。bike
データベースを選択し、「london2
」をテーブルとして入力します。これで、両方の CSV ファイルが bike
データベース内のテーブルにアップロードされました。
出力の行数は、ステーション名ごとに 1 行ずつ、計 955 行になります。
出力の行数は、ステーション名ごとに 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
クエリの出力を結果セットに結合します。ここでは、UNION
を使用して、「london1」と「london2」の各テーブルのサブセットを結合します。
以下の連結クエリは、両方のテーブルから特定のデータを pull し、UNION
演算子で結合します。
最初の SELECT
クエリは、「london1」テーブルから 2 つの列を選択し、「start_station_name」にはエイリアス「top_stations」を作成しています。WHERE
キーワードを使用して、出発地となった回数が 10 万回を超えるステーション名のみを pull しています。
2 番目の SELECT
クエリは、「london2」テーブルから 2 つの列を選択し、WHERE
キーワードを使用して、到着地となった回数が 10 万回を超えるステーション名のみを pull しています。
間にある 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 テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 10 月 7 日
ラボの最終テスト日: 2024 年 10 月 7 日
Copyright 2025 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
One lab at a time
Confirm to end all existing labs and start this one