데이터세트 만들기

이 문서에서는 BigQuery에서 데이터세트를 만드는 방법을 설명합니다.

데이터세트를 만드는 방법은 다음과 같습니다.

  • GCP Console 또는 기본 BigQuery 웹 UI 사용
  • bq mk CLI 명령어 사용
  • datasets.insert API 메소드 호출

데이터세트 제한사항

BigQuery 데이터세트에는 다음과 같은 제한사항이 적용됩니다.

  • 지리적 위치는 데이터세트를 만드는 시점에서만 설정할 수 있습니다. 데이터세트를 만든 후에는 위치가 고정되어 GCP Console, 기본 BigQuery 웹 UI, 명령줄 도구 상에서 변경하거나 patch 또는 update API 메소드를 호출하여 변경하는 것이 불가능합니다.
  • 쿼리에서 참조하는 모든 테이블은 같은 위치의 데이터세트에 저장해야 합니다.

  • 테이블을 복사할 때 원본 테이블과 대상 테이블을 포함하는 데이터세트는 같은 위치에 있어야 합니다.

  • 데이터세트 이름은 프로젝트별로 고유해야 합니다.

  • 프로젝트의 데이터세트 수가 수천 개에 근접하면 기본 UI 성능이 저하되고 데이터세트 나열 속도가 느려집니다.

데이터세트 이름 지정

BigQuery에서 데이터세트를 만들 때 데이터세트 이름은 프로젝트별로 고유해야 합니다. 데이터세트 이름은 다음과 같은 특성을 갖습니다.

  • 최대 1,024자까지 포함할 수 있습니다.
  • 문자(대문자 또는 소문자), 숫자, 밑줄을 포함할 수 있습니다.

  • 대소문자를 구분합니다. 예를 들어 mydatasetMyDataset가 동일 프로젝트 내에 함께 존재할 수 있습니다.

또한 데이터세트 이름은 다음 특성을 갖습니다.

  • 공백 또는 특수문자(예: -, &, @ 또는 %)를 포함할 수 없습니다.

필수 권한

데이터세트를 만들려면 사용자에게 프로젝트 수준의 기본 역할 또는 bigquery.datasets.create 권한을 제공하는 사전 정의된 IAM 역할이 할당되어 있어야 합니다. 사전 정의된 프로젝트 수준의 다음 IAM 역할에는 bigquery.datasets.create 권한이 포함됩니다.

BigQuery의 IAM 역할 및 권한에 대한 자세한 내용은 액세스 제어를 참조하세요.

데이터세트 만들기

데이터세트를 만들려면 다음 안내를 따르세요.

콘솔

  1. GCP Console에서 BigQuery 웹 UI를 엽니다.

    BigQuery 웹 UI로 이동

  2. 탐색 패널의 리소스 섹션에서 프로젝트를 선택합니다.

  3. 창 오른쪽의 세부정보 패널에서 데이터세트 만들기를 클릭합니다.

  4. 데이터세트 만들기 페이지에서 다음 안내를 따릅니다.

    • 데이터세트 ID에 고유한 데이터세트 이름을 입력합니다.
    • (선택사항) 데이터 위치에서 데이터세트의 지리적 위치를 선택합니다. 값을 기본값으로 유지하면 위치가 US로 설정됩니다. 데이터세트를 만든 후에는 위치를 변경할 수 없습니다.

    • 기본 테이블 만료에서 다음 옵션 중 하나를 선택합니다.

      • 사용 안 함: (기본값) 데이터세트에 생성된 테이블이 자동으로 삭제되지 않습니다. 수동으로 삭제해야 합니다.
      • 테이블 생성 후 경과 일수: 이 값은 데이터세트에서 새로 만든 테이블이 삭제되는 시기를 결정합니다. 테이블이 생성될 때 테이블 만료를 설정하지 않은 경우 이 값이 적용됩니다.
    • 데이터세트 만들기를 클릭합니다.

기본 UI

  1. 탐색창에서 프로젝트 이름 옆의 아래쪽 화살표 아이콘 아래쪽 화살표 아이콘을 클릭한 다음 새 데이터세트 만들기를 클릭합니다.

  2. 데이터세트 만들기 대화상자에서 다음을 수행합니다.

    • 데이터세트 ID에 고유한 데이터세트 이름을 입력합니다.
    • 데이터 위치에서 데이터세트의 위치를 선택합니다. 기본값은 미지정이며 데이터세트 위치가 US로 설정됩니다. 데이터세트를 만든 후에는 위치를 변경할 수 없습니다.

    • 데이터 만료에서 다음 옵션 중 하나를 선택합니다.

      • 사용 안 함: (기본값) 데이터세트에 생성된 테이블이 자동으로 삭제되지 않습니다. 수동으로 삭제해야 합니다.
      • [정수]일 후: 데이터세트에 생성된 모든 테이블이 생성 시간으로부터 [정수]일이 지난 후에 삭제됩니다. 테이블이 생성될 때 테이블 만료를 설정하지 않은 경우 이 값이 적용됩니다.

        데이터세트 만들기

        데이터 만료는 데이터세트에서 생성된 새 테이블의 기본 테이블 만료를 나타냅니다. 현재 데이터세트를 만들 때 BigQuery 웹 UI에서 기본 파티션 만료를 설정할 수 없습니다. 데이터세트를 만든 후에 명령줄 도구 또는 API를 사용하여 기본 파티션 만료를 설정할 수 있습니다.

    • 확인을 클릭합니다.

명령줄

bq mk 명령어에 --location 플래그를 사용하여 새 데이터세트를 만들 수 있습니다. 선택적 매개변수에는 --default_table_expiration, --default_partition_expiration, --description이 있습니다.

기본 프로젝트가 아닌 다른 프로젝트에서 데이터세트를 만들려면 데이터세트 이름에 프로젝트 ID를 추가합니다(형식: [PROJECT_ID]:[DATASET]).

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

각 항목의 의미는 다음과 같습니다.

  • [LOCATION]은 데이터세트의 위치입니다. 데이터세트가 생성된 후에는 위치를 변경할 수 없습니다. .bigqueryrc 파일을 사용하여 위치 기본값을 설정할 수 있습니다.

  • [INTEGER]는 새로 생성된 테이블의 기본 수명(초)입니다. 최솟값은 3600초(1시간)입니다. 만료 시간은 현재 시간과 정수 값을 더한 값으로 계산됩니다. 데이터세트에 생성된 모든 테이블이 생성 시간으로부터 [INTEGER]초가 지난 후에 삭제됩니다. 테이블이 생성될 때 테이블 만료를 설정하지 않은 경우 이 값이 적용됩니다.

  • [INTEGER2]는 새로 생성된 파티션을 나눈 테이블의 파티션 기본 수명(초)입니다. 기본 파티션 만료에는 최솟값이 없습니다. 만료 시간은 파티션의 날짜와 정수 값을 더한 값입니다. 데이터세트의 파티션을 나눈 테이블에서 생성된 모든 파티션이 파티션 날짜로부터 [INTEGER2]초가 지난 후에 삭제됩니다. 파티션을 나눈 테이블을 생성하거나 업데이트할 때 --time_partitioning_expiration 플래그를 제공하면 테이블 수준 파티션 만료가 데이터세트 수준 기본 파티션 만료보다 우선 적용됩니다.

  • [DESCRIPTION]은 따옴표로 묶인 데이터세트 설명입니다.

  • [PROJECT_ID]는 프로젝트 ID입니다.

  • [DATASET]는 사용자가 만들려는 데이터세트 이름입니다.

예를 들어 다음 명령어는 US로 설정된 데이터 위치, 기본 테이블 만료 시간 3600초(1시간), This is my dataset라는 설명을 사용하여 이름이 mydataset인 데이터세트를 만듭니다. --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
}

자바

이 샘플을 시도해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 자바 설정 안내를 따르세요. 자세한 내용은 BigQuery 자바 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

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.