0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Cloud BigQueryサンドボックスでできること、できないこと

Posted at

はじめに

本記事では、これからBigQueryの学習を始める初心者向けに、BigQueryサンドボックスでできること、できないことをお伝えします。

この記事では触れないこと

  • Googleアカウントの作り方
  • BigQueryの説明
  • BigQueryのプロジェクト作成手順(こちらを参考に作成しましょう)

BigQueryサンドボックスとは

クレジットカードなどの登録なしで、すぐに無償で利用できるBigQueryです。
無償であるが故に使えない機能も多くあります。Geminiにサンドボックスと有償版の違いを聞いてみたところ、ざっと以下の点が挙げられました。

Geminiによるサンドボックスと有償版の相違点説明
  • 費用:
    • サンドボックス: 無料で利用できます。ただし、無料枠には制限があります。
    • 有償版: ストレージ容量とクエリ処理量に応じて課金されます。
  • 無料枠:
    • サンドボックス: 毎月 10 GB のアクティブ ストレージと 1 TB のクエリ処理が無料です。
    • 有償版: 毎月 10 GB のストレージと 1 TB のクエリ処理が無料枠として提供されますが、超過分は課金されます。
  • 機能制限:
    • サンドボックス: 一部の機能(データのストリーミング、DMLステートメント、BigQuery Data Transfer Serviceなど)が利用できません。
    • 有償版: BigQueryのすべての機能を利用できます。
  • データ保持期間:
    • サンドボックス: すべてのテーブルとパーティションは60日後に自動的に削除されます。
    • 有償版: データ保持期間に制限はありません。
  • サポート:
    • サンドボックス: テクニカルサポートは提供されません。
    • 有償版: Google Cloudのテクニカルサポートを利用できます。
  • 利用開始:
    • サンドボックス: クレジットカード情報の登録は不要で、すぐに利用を開始できます。
    • 有償版: 課金アカウントの設定が必要です。

事前準備

テーブルを作成する前に、データセット(DBオブジェクトなどを格納するコンテナ)を作成します。

データセット作成

  1. BigQuery Studioでプロジェクト名の右にあるハンバーガーメニューをクリックし、「データセットを作成」をクリック
    スクリーンショット 2025-04-28 13.34.55.png
  2. データセットIDを入力する
    ※ロケーションタイプとリージョンはお好みで。2025/4/28時点では、マルチリージョンにするとロケーションはヨーロッパか南北アメリカしか選べない模様
    スクリーンショット 2025-04-28 13.39.09.png
  3. 「データセットを作成」ボタンをクリックしたら、事前準備完了

やったこと1:DDLでテーブル作成

DDLを使用して、テーブルを作成、データを投入してみます。

テーブル作成

ブラウザのGUIで、以下のSQLを実行しました。

CREATE TABLE league_one.teams (
  id    INT64  NOT NULL
 ,name  STRING NOT NULL
 ,PRIMARY KEY(id) NOT ENFORCED
)

実行すると、以下の画面になります。
image.png
DDLは正常に実行完了しました。

DDLでは主キーに対しNOT ENFORCEDオプションを指定していますが、2025/4/28時点では一意制を強制することができません。よって、DDL内で主キーを設定する場合はNOT ENFORCEDオプションが必須になります。
公式によると、一意性の担保はユーザー側でやってね、とのこと。詳細について知りたい方はこちらを読んでみましょう。

データ投入

以下のSQLを実行します。

INSERT INTO league_one.teams (
  id
 ,name
) VALUES (
  1
 ,'浦安D-Rocks'
)

実行すると、以下の画面になります。
image.png
「Billing has not been enabled for this project. (中略)DML queries are not allowed in the free tier. Set up a billing account to remove this restriction.」と怒られました。
要約すると、「サンドボックスではDMLの実行は許さない」みたいです。

検索はできるのか

「DMLは許さん」と言われましたが、SELECT文もDMLです。
それならSELECT文でデータ検索もできないのか、試してみます。

SELECT
  *
FROM
  league_one.teams

実行結果はこちら。
image.png
DMLの中でも、SELECT文だけなら許される様子。

やったこと2:空のテーブル作成

今度はGUIベースでテーブルを作成します。

テーブル作成

データセット右にあるハンバーガーメニューをクリックして、「テーブル作成」をクリックします。
image.png
まずは「ソース」に「空のテーブル」を設定(デフォルト値)。
image.png
次に「テーブル名」と「スキーマ」を設定します。
image.png
入力が完了したら、「テーブルを作成」ボタンをクリックして、作成完了です。

Oracle Databaseを使用している人にとって「スキーマ」でテーブルのフィールドを設定することに対し、違和感があると思います。
Gemini曰く、RDBのカラムとBigQueryのスキーマでは以下の違いがあるとのこと。

  • RDBのカラム: テーブル内の個々の属性(名前とデータ型)。
  • BigQueryのスキーマ: テーブルまたはビューの構造全体を定義し、カラムの名前、データ型、モード、ネストされた構造、説明などを含みます。

データ投入

「やったこと1」と同様、できません。

やったこと3:CSVアップロードでテーブル作成

GUI上でCSVファイルをアップロードすることで、テーブルを作成します。
データセット右にあるハンバーガーメニューをクリックして、「テーブル作成」をクリックし、「ソース」に「アップロード」を設定。
下記内容のCSVファイルを設定します。

league_one_teams
1,浦安D-Rocks
2,コベルコ神戸スティーラーズ
3,静岡ブルーレヴズ
4,東芝ブレイブルーパス東京
5,三菱重工相模原ダイナボアーズ
6,横浜キヤノンイーグルス
7,クボタスピアーズ船橋・東京ベイ
8,埼玉パナソニックワイルドナイツ
9,東京サントリーサンゴリアス
10,トヨタヴェルブリッツ
11,三重ホンダヒート
12,リコーブラックラムズ東京

image.png
テーブル名とスキーマの設定は「やったこと2」と同じ内容で、「テーブルを作成」をクリックします。
image.png
「teams」テーブルが作成されました。

データ検索

以下のクエリでデータを検索してみます。

SELECT
  *
FROM
  league_one.teams

実行結果は以下のとおり。
image.png
データがきちんと取れました。

データ更新・削除

INSERT文はサンドボックスで実行できませんでした。恐らく、UPDATE文、DELETE文も実行できないと考えられますが、試してみました。

UPDATE

SQLは以下の通り

UPDATE文
UPDATE league_one.teams
SET name = 'D-Rocks'
WHERE id = 1

実行結果
image.png
案の定、怒られました。

DELETE

SQLは以下の通り

DELETE文
DELETE FROM league_one.teams
WHERE id = 1

実行結果
image.png
こちらも案の定、怒られました。

関連するテーブルも追加してみる

今度は以下CSVを作成し、「members」テーブルをCSVアップロードで作成します。

canon_eagles_members.csv
南 友紀,1993-10-23,A,6
ゴールディング 光士,2003-11-16,A,6
杉本 達郎,1996-09-30,A,6
三好 優作,1998-05-14,A,6
松岡 将大,1997-07-31,A,6
岡部 崇人,1995-02-19,A,6
祝原 涼介,1996-10-06,A,6
小川 寛大,1998-11-29,A,6
川村 慎,1987-08-06,A,6
庭井 祐輔,1991-10-22,A,6
中村 駿太,1994-02-28,A,6
平石 颯,2002-02-09,A,6
トム・ジェフリーズ,1999-03-15,B,6
コルマック・ダリー,1998-05-01,B,6
リアキマタギ・モリ,1990-01-04,A,6
久保 克斗,1998-11-07,A,6
安井 龍太,1989-12-06,A,6
マシュー・フィリップ,1994-03-07,C,6
ジャンドレ・ラブスカフニ,1999-07-17,B,6
ビリー・ハーモン,1994-12-23,B,6
古川 聖人,1996-12-06,A,6
シオエリ・ヴァカラヒ,1998-05-15,A,6
嶋田 直人,1991-05-21,A,6
レキマ・ナサミラ,1998-12-27,A,6
アミニアシ・ショー,2000-03-13,A,6
シオネ・ハラシリ,1999-10-15,A,6
アマナキ・レレイ・マフィ,1990-01-11,A,6
吉田 大亮,1998-07-20,A,6
ファフ・デクラーク,1991-10-19,C,6
松木 勇斗,1999-11-26,A,6
山菅 一史,1997-12-03,A,6
天野 寿紀,1990-10-27,A,6
荒井 康植,1993-05-14,A,6
土永 旭,2003-01-09,A,6
小倉 順平,1992-07-11,A,6
田村 優,1989-01-09,A,6
武藤 ゆらぎ,2001-07-30,A,6
竹澤 正祥,1995-05-05,A,6
松井 千士,1994-11-11,A,6
高木 一成,1997-06-23,A,6
石田 吉平,2000-04-28,A,6
江藤 良,2000-01-09,A,6
ヴィリアメ ・タカヤワ,1997-02-21,A,6
梶村 祐介,1995-09-13,A,6
ジェシー・クリエル,1994-02-15,C,6
南橋 直哉,1989-08-10,A,6
田畑 凌,1996-07-05,A,6
猿田 湧,1998-06-04,A,6
普久原 琉,2000-11-03,A,6
ブレンダン・オーウェン,1996-09-23,B,6

スキーマ設定は以下の通り。
image.png

テーブルの作成が完了したら、以下のSQLを実行します。

SELECT
    tm.name  AS team_name
   ,mem.name AS member_name
FROM
    league_one.teams tm
INNER JOIN
    league_one.members mem
        ON  mem.team_id = tm.id
        AND mem.category = 'C'
WHERE
    tm.id = 6

実行結果
image.png
JOINを含むクエリも実行できました。

まとめ

以下、本記事主題のできること、できないことのまとめです。

できること

  • DDLによるテーブル作成
  • GUIからのテーブル作成
  • SELECT文実行

できないこと

  • INSERT文実行
  • UPDATE文実行
  • DELETE文実行
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?