데이터 세트 나열

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

다음 방법으로 데이터 세트를 나열할 수 있습니다.

  • Cloud Console 사용
  • INFORMATION_SCHEMA SQL 쿼리 사용
  • bq 명령줄 도구에서 bq ls 명령어 사용
  • datasets.list API 메서드 호출
  • 클라이언트 라이브러리 사용

시작하기 전에

사용자에게 이 문서의 각 작업을 수행하는 데 필요한 권한을 부여하는 ID 및 액세스 관리(IAM) 역할을 부여합니다.

필수 권한

데이터 세트를 나열하려면 bigquery.datasets.get IAM 권한이 필요합니다.

다음과 같은 사전 정의된 각 IAM 역할에는 뷰를 만드는 데 필요한 권한이 포함되어 있습니다.

  • roles/bigquery.user
  • roles/bigquery.dataOwner
  • roles/bigquery.dataEditor
  • roles/bigquery.admin

또한 roles/bigquery.metadataViewerroles/bigquery.dataViewer는 프로젝트 또는 조직 수준에서 적용될 때 프로젝트의 모든 데이터 세트를 나열할 수 있습니다.

BigQuery의 IAM 역할과 권한에 대한 자세한 내용은 사전 정의된 역할 및 권한을 참조하세요.

프로젝트의 데이터 세트 나열

프로젝트의 데이터 세트를 나열하려면 다음 안내를 따르세요.

Console

  1. 탐색 메뉴에서 SQL 작업공간을 클릭합니다.

  2. 탐색기 패널에서 프로젝트 이름을 펼쳐 해당 프로젝트의 데이터 세트를 보거나 검색창을 사용하여 데이터 세트 이름으로 검색합니다.

SQL

INFORMATION_SCHEMA 쿼리의 프로젝트 한정자를 사용하여 프로젝트의 모든 데이터 세트를 나열합니다.

다음 예시에서는 지정된 프로젝트에서 사용할 수 있는 모든 데이터 세트를 나열합니다.

SELECT
 schema_name
FROM
'PROJECT_ID'.INFORMATION_SCHEMA.SCHEMATA

PROJECT_ID를 사용 가능한 데이터 세트를 나열할 프로젝트의 ID로 바꿉니다.

INFORMATION_SCHEMA에 대한 자세한 내용은 BigQuery INFORMATION_SCHEMA 소개를 참조하세요.

bq

bq ls 명령어를 실행하여 데이터 세트 ID별로 데이터 세트를 나열합니다. --format 플래그를 사용하면 출력을 제어할 수 있습니다. 기본 프로젝트가 아닌 다른 프로젝트의 데이터 세트를 나열하려면 명령어에 --project_id 플래그를 추가합니다.

익명 데이터 세트를 포함하여 프로젝트의 모든 데이터 세트를 나열하려면 --all 플래그나 -a 단축키를 사용합니다.

익명 데이터 세트를 제외하고 프로젝트의 모든 데이터 세트를 나열하려면 --datasets 플래그나 -d 단축키를 사용합니다. 이 플래그는 선택사항입니다. 기본적으로 익명 데이터 세트는 나열되지 않습니다.

추가 플래그에는 다음이 포함됩니다.

  • --filter: 필터 표현식과 일치하는 데이터 세트를 나열합니다. 공백으로 구분된 라벨 키 및 값의 목록을 labels.key:value 형식으로 사용합니다. 라벨을 사용하여 데이터 세트를 필터링하는 방법에 대한 자세한 내용은 라벨 추가 및 사용을 참조하세요.
  • --max_results 또는 -n: 결과의 최대 수를 나타내는 정수입니다. 기본값은 50입니다.
bq ls --filter labels.key:value \
--max_results integer \
--format=prettyjson \
--project_id project_id

다음을 바꿉니다.

  • key:value는 라벨 키와 값입니다.
  • integer는 나열할 데이터 세트 수를 나타내는 정수입니다.
  • project_id는 프로젝트 이름입니다.

예를 들면 다음과 같습니다.

다음 명령어를 입력하면 기본 프로젝트의 데이터 세트를 나열할 수 있습니다. -- format을 pretty로 설정하면 기본 형식의 테이블이 반환됩니다.

bq ls --format=pretty

다음 명령어를 입력하면 myotherproject의 데이터 세트를 나열할 수 있습니다. --formatprettyjson으로 설정하면 상세 결과가 JSON 형식으로 반환됩니다.

bq ls --format=prettyjson --project_id myotherproject

다음 명령어를 입력하면 기본 프로젝트의 익명 데이터 세트가 포함된 모든 데이터 세트가 나열됩니다. 출력에서 익명 데이터 세트는 밑줄로 시작합니다.

bq ls -a

다음 명령어를 입력하면 기본 프로젝트에서 기본 출력 데이터 세트가 50개를 초과하여 반환됩니다.

bq ls --max_results 60

다음 명령어를 입력하면 기본 프로젝트에서 org:dev 라벨이 지정된 데이터 세트가 나열됩니다.

bq ls --filter labels.org:dev

API

API를 사용하여 데이터 세트를 나열하려면 datasets.list API 메서드를 호출합니다.

C#

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 C# 설정 안내를 따르세요. 자세한 내용은 BigQuery C# API 참조 문서를 확인하세요.


using Google.Cloud.BigQuery.V2;
using System;
using System.Collections.Generic;
using System.Linq;

public class BigQueryListDatasets
{
    public void ListDatasets(
        string projectId = "your-project-id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        // Retrieve list of datasets in project
        List<BigQueryDataset> datasets = client.ListDatasets().ToList();
        // Display the results
        if (datasets.Count > 0)
        {
            Console.WriteLine($"Datasets in project {projectId}:");
            foreach (var dataset in datasets)
            {
                Console.WriteLine($"\t{dataset.Reference.DatasetId}");
            }
        }
        else
        {
            Console.WriteLine($"{projectId} does not contain any datasets.");
        }
    }
}

Go

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 BigQuery Go API 참조 문서를 확인하세요.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
	"google.golang.org/api/iterator"
)

// listDatasets demonstrates iterating through the collection of datasets in a project.
func listDatasets(projectID string, w io.Writer) error {
	// projectID := "my-project-id"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	it := client.Datasets(ctx)
	for {
		dataset, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return err
		}
		fmt.Fprintln(w, dataset.DatasetID)
	}
	return nil
}

자바

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 자바 설정 안내를 따르세요. 자세한 내용은 BigQuery 자바 API 참조 문서를 확인하세요.

import com.google.api.gax.paging.Page;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQuery.DatasetListOption;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Dataset;

public class ListDatasets {

  public static void runListDatasets() {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    listDatasets(projectId);
  }

  public static void listDatasets(String projectId) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      Page<Dataset> datasets = bigquery.listDatasets(projectId, DatasetListOption.pageSize(100));
      if (datasets == null) {
        System.out.println("Dataset does not contain any models");
        return;
      }
      datasets
          .iterateAll()
          .forEach(
              dataset -> System.out.printf("Success! Dataset ID: %s ", dataset.getDatasetId()));
    } catch (BigQueryException e) {
      System.out.println("Project does not contain any datasets \n" + e.toString());
    }
  }
}

Node.js

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 BigQuery Node.js API 참조 문서를 확인하세요.

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

async function listDatasets() {
  // Lists all datasets in current GCP project.

  // Lists all datasets in the specified project
  const [datasets] = await bigquery.getDatasets();
  console.log('Datasets:');
  datasets.forEach(dataset => console.log(dataset.id));
}

PHP

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 PHP 설정 안내를 따르세요. 자세한 내용은 BigQuery PHP API 참조 문서를 참조하세요.

use Google\Cloud\BigQuery\BigQueryClient;

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

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$datasets = $bigQuery->datasets();
foreach ($datasets as $dataset) {
    print($dataset->id() . PHP_EOL);
}

Python

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 BigQuery Python API 참조 문서를 확인하세요.


from google.cloud import bigquery

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

datasets = list(client.list_datasets())  # Make an API request.
project = client.project

if datasets:
    print("Datasets in project {}:".format(project))
    for dataset in datasets:
        print("\t{}".format(dataset.dataset_id))
else:
    print("{} project does not contain any datasets.".format(project))

Ruby

이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 Ruby 설정 안내를 따르세요. 자세한 내용은 BigQuery Ruby API 참조 문서를 확인하세요.

require "google/cloud/bigquery"

def list_datasets project_id = "your-project-id"
  bigquery = Google::Cloud::Bigquery.new project: project_id

  puts "Datasets in project #{project_id}:"
  bigquery.datasets.each do |dataset|
    puts "\t#{dataset.dataset_id}"
  end
end

데이터 세트 보안

BigQuery에서 데이터 세트에 대한 액세스를 제어하려면 데이터 세트에 대한 액세스 제어를 참조하세요. 데이터 암호화에 대한 자세한 내용은 저장 데이터 암호화를 참조하세요.

다음 단계