データセットの作成

このドキュメントでは、BigQuery でデータセットを作成する方法について説明します。

データセットを作成するには:

  • GCP Console または従来の BigQuery ウェブ UI を使用する
  • bq mk CLI コマンドを使用する
  • datasets.insert API メソッドを呼び出す

データセットの制限事項

BigQuery データセットには次の制限があります。

  • 地理的なロケーションは作成時にのみ設定できます。データセットが作成されると、そのロケーションは不変になり、GCP Console、従来の BigQuery ウェブ UI、コマンドライン ツールを使用したり、API の patch メソッドや update メソッドを呼び出したりして変更することはできません。
  • 1 つのクエリで参照されるすべてのテーブルは、同じロケーションにあるデータセット内に保存されている必要があります。

  • テーブルをコピーする場合、コピー元とコピー先のテーブルが同じロケーションに存在する必要があります。

  • データセット名はプロジェクトごとに一意である必要があります。

  • プロジェクトで何千ものデータセットにアクセスすると、従来の UI のパフォーマンスが低下し、データセットのリスティングが遅くなります。

データセットの命名

BigQuery でデータセットを作成するとき、データセット名はプロジェクトごとに一意にする必要があります。データセット名の規則は以下のとおりです。

  • 1,024 文字以内
  • 使用できる文字は英字(大文字または小文字)、数字、アンダースコアのみ

  • 英字の大文字と小文字が区別される(mydatasetMyDataset は同じプロジェクト内に共存できます)

次のようなデータセット名は使用できません。

  • スペースまたは特殊文字(-、&、@、% など)が含まれる

必要な権限

データセットを作成するには、プロジェクト レベルの基本の役割か、bigquery.datasets.create 権限を含む事前定義された IAM 役割が割り当てられている必要があります。事前定義されたプロジェクト レベルの IAM 役割のうち、bigquery.datasets.create 権限を含むものは以下のとおりです。

BigQuery での IAM 役割と権限の詳細については、アクセス制御をご覧ください。

データセットの作成

データセットを作成するには:

Console

  1. GCP Console で BigQuery ウェブ UI を開きます。

    BigQuery ウェブ UI に移動

  2. ナビゲーション パネルの [リソース] セクションで、プロジェクトを選択します。

  3. ウィンドウの右側の詳細パネルで、[データセットを作成] をクリックします。

  4. [データセットを作成] ページで次の操作を行います。

    • [データセット ID] に、一意のデータセットの名前を入力します。
    • (省略可)[データのロケーション] で、データセットの地理的なロケーションを選択します。値を [デフォルト] に設定したままにすると、ロケーションは US に設定されます。データセットの作成後はロケーションを変更できません。

    • [デフォルトのテーブルの有効期限] で、以下のいずれかのオプションを選択します。

      • 無期限: (デフォルト)データセット内に作成されたテーブルが自動的に削除されることはありません。テーブルを削除する場合は、手動で削除する必要があります。
      • テーブル作成後の日数: この値は、データセット内に新しく作成されたテーブルがいつ削除されるかを決定します。この値が適用されるのは、テーブルの作成時にテーブルの有効期限を設定しなかった場合です。
    • [データセットを作成] をクリックします。

従来の UI

  1. ナビゲーション内のプロジェクト名の横にある下矢印アイコン 下矢印アイコン をクリックし、[Create new dataset] をクリックします。

  2. [Create Dataset] ダイアログで、次の操作を行います。

    • [Dataset ID] に、一意のデータセット名を入力します。
    • [Data location] で、データセットのロケーションを選択します。デフォルト値は [Unspecified] です。この場合、データセットのロケーションは US に設定されます。データセットの作成後はロケーションを変更できません。

    • [Data expiration] で、以下のいずれかのオプションを選択します。

      • Never: (デフォルト)データセット内に作成されたテーブルが自動的に削除されることはありません。テーブルを削除する場合は、手動で削除する必要があります。
      • In [INTEGER] days: データセット内に作成されたテーブルは、作成時点から [INTEGER] 日後に削除されます。この値が適用されるのは、テーブルの作成時にテーブル有効期限を設定しなかった場合です。

        データセットを作成

        [Data expiration] は、データセットで作成される新しいテーブルのデフォルトのテーブル有効期限を指します。BigQuery のウェブ UI では、現在のところデータセットの作成時にデフォルトのパーティション有効期限を設定できません。デフォルトのパーティション有効期限は、データセットの作成後にコマンドライン ツールまたは API を使用して設定できます。

    • [OK] をクリックします。

コマンドライン

新しいデータセットを作成するには、bq mk コマンドを使用して --location フラグを指定します。また、--default_table_expiration--default_partition_expiration--description の各パラメータを任意で指定することもできます。

デフォルト プロジェクト以外のプロジェクトにデータセットを作成するには、[PROJECT_ID]:[DATASET] の形式でプロジェクト ID をデータセット名に追加します。

bq --location=[LOCATION] mk --dataset --default_table_expiration [INTEGER] --default_partition_expiration [INTEGER2] --description [DESCRIPTION] [PROJECT_ID]:[DATASET]

各要素の意味は次のとおりです。

  • [LOCATION] は、データセットのロケーションです。データセットを作成した後にロケーションを変更することはできません。ロケーションのデフォルト値は、.bigqueryrc ファイルを使用して設定できます。

  • [INTEGER] は、新しく作成されるテーブルのデフォルトの存続期間(秒数)です。最小値は 3,600 秒(1 時間)です。現在時刻にこの整数値を足した値が有効期限になります。データセット内に作成されたテーブルは、作成時点から [INTEGER] 秒後に削除されます。この値が適用されるのは、テーブルの作成時にテーブル有効期限を設定しなかった場合です。

  • [INTEGER2] は、新しく作成される分割テーブルのパーティションのデフォルトの存続期間(秒数)です。デフォルトのパーティション有効期限には最小値はありません。パーティションの日付にこの整数値を足した値が有効期限になります。データセット内に作成された分割テーブルのパーティションは、作成時点から [INTEGER2] 秒後に削除されます。分割テーブルの作成時または更新時に --time_partitioning_expiration フラグを指定した場合、データセット レベルのデフォルトのパーティション有効期限よりもテーブルレベルのパーティション有効期限が優先されます。

  • [DESCRIPTION] は、引用符で囲んだ説明です。

  • [PROJECT_ID] はプロジェクト ID です。

  • [DATASET] は、作成するデータセットの名前です。

たとえば、次のコマンドを実行すると mydataset という名前のデータセットが作成され、データのロケーションは US、デフォルトのテーブル存続期間は 3,600 秒(1 時間)、説明は「This is my dataset」に設定されます。このコマンドでは、--dataset フラグの代わりに -d ショートカットを使用しています。-d--dataset を省略した場合、このコマンドはデフォルトでデータセットを作成します。

bq --location=US mk -d --default_table_expiration 3600 --description "This is my dataset." mydataset

bq ls コマンドを使用して、データセットが作成されたことを確認できます。また、新しいデータセットを作成するときに、bq mk -t [DATASET].[TABLE] の形式を使用してテーブルを作成することもできます。テーブルの作成について詳しくは、テーブルの作成をご覧ください。

API

定義済みのデータセット リソースを使用して datasets.insert メソッドを呼び出します。

C#

このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある C# 向けの手順に従って設定を行ってください。詳細については、BigQuery C# API のリファレンス ドキュメントをご覧ください。

using Google.Cloud.BigQuery.V2;
using System;

public class BigQueryCreateDataset
{
    public BigQueryDataset CreateDataset(
        string projectId = "your-project-id",
        string location = "US"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        var createDatasetOptions = new CreateDatasetOptions()
        {
            // Specify the geographic location where the dataset should reside.
            Location = location
        };
        // Create the dataset
        return client.CreateDataset(
            datasetId: "your_new_dataset_id", options: createDatasetOptions);
    }
}

Go

このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Go の設定手順に従ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
meta := &bigquery.DatasetMetadata{
	Location: "US", // Create the dataset in the US.
}
if err := client.Dataset(datasetID).Create(ctx, meta); err != nil {
	return err
}

Java

このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある Java 向けの手順に従って設定を行ってください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。

Dataset dataset = null;
DatasetInfo datasetInfo = DatasetInfo.newBuilder(datasetName).build();
try {
  // the dataset was created
  dataset = bigquery.create(datasetInfo);
} catch (BigQueryException e) {
  // the dataset was not created
}

Node.js

このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Node.js の設定手順に従ってください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');

async function createDataset() {
  // Creates a new dataset named "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = "my_new_dataset";

  // Create a client
  const bigqueryClient = new BigQuery();

  // Specify the geographic location where the dataset should reside
  const options = {
    location: 'US',
  };

  // Create a new dataset
  const [dataset] = await bigqueryClient.createDataset(datasetId, options);
  console.log(`Dataset ${dataset.id} created.`);
}

createDataset();

PHP

このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある PHP 向けの手順に従って設定を行ってください。詳細については、BigQuery PHP API のリファレンス ドキュメントをご覧ください。

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->createDataset($datasetId);
printf('Created dataset %s' . PHP_EOL, $datasetId);

Python

このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある Python 向けの手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。

from google.cloud import bigquery

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset to create.
# dataset_id = "{}.your_dataset".format(client.project)

# Construct a full Dataset object to send to the API.
dataset = bigquery.Dataset(dataset_id)

# TODO(developer): Specify the geographic location where the dataset should reside.
dataset.location = "US"

# Send the dataset to the API for creation.
# Raises google.api_core.exceptions.Conflict if the Dataset already
# exists within the project.
dataset = client.create_dataset(dataset)  # API request
print("Created dataset {}.{}".format(client.project, dataset.dataset_id))

Ruby

このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある Ruby 向けの手順に従って設定を行ってください。詳細については、BigQuery Ruby API のリファレンス ドキュメントをご覧ください。

require "google/cloud/bigquery"

def create_dataset dataset_id = "my_dataset", location = "US"
  bigquery = Google::Cloud::Bigquery.new

  # Create the dataset in a specified geographic location
  bigquery.create_dataset dataset_id, location: location

  puts "Created dataset: #{dataset_id}"
end

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。