뷰 정보 가져오기

이 문서에서는 BigQuery의 뷰에 대한 메타데이터를 나열 및 확인하고 메타데이터 정보를 가져오는 방법을 설명합니다.

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

  • Google Cloud 콘솔 사용
  • bq 명령줄 도구에서 bq ls 명령어 사용
  • tables.list API 메서드 호출
  • 클라이언트 라이브러리 사용

시작하기 전에

사용자에게 이 문서의 각 작업을 수행하는 데 필요한 권한을 부여하는 Identity and Access Management(IAM) 역할을 부여합니다.

뷰 나열

뷰 나열은 테이블 나열 프로세스와 동일합니다.

필수 권한

데이터 세트의 뷰를 나열하려면 bigquery.tables.list IAM 권한이 필요합니다.

사전 정의된 다음 IAM 역할마다 데이터 세트의 뷰를 나열하는 데 필요한 권한이 포함되어 있습니다.

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

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

데이터 세트의 뷰 나열

데이터 세트에서 뷰를 나열하려면 다음 안내를 따르세요.

콘솔

  1. 탐색기 패널에서 프로젝트를 확장하고 데이터 세트를 선택합니다.

  2. 목록을 스크롤하여 데이터 세트의 테이블을 확인합니다. 테이블과 뷰는 각기 다른 아이콘으로 구분할 수 있습니다.

    테이블 아이콘과 뷰 아이콘

SQL

INFORMATION_SCHEMA.VIEWS를 사용합니다.

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 문을 입력합니다.

    SELECT table_name
    FROM DATASET_ID.INFORMATION_SCHEMA.VIEWS;

    DATASET_ID를 데이터 세트의 이름으로 바꿉니다.

  3. 실행을 클릭합니다.

쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.

bq

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

bq ls --format=pretty project_id:dataset

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

  • project_id는 프로젝트 ID입니다.
  • dataset는 데이터 세트 이름입니다.

명령어를 실행하면 Type 필드에 TABLE 또는 VIEW가 표시됩니다. 예를 들면 다음과 같습니다.

+-------------------------+-------+----------------------+-------------------+
|         tableId         | Type  |        Labels        | Time Partitioning |
+-------------------------+-------+----------------------+-------------------+
| mytable                 | TABLE | department:shipping  |                   |
| myview                  | VIEW  |                      |                   |
+-------------------------+-------+----------------------+-------------------+

예시:

기본 프로젝트의 mydataset 데이터 세트에 있는 뷰를 나열하려면 다음 명령어를 입력합니다.

bq ls --format=pretty mydataset

myotherprojectmydataset 데이터 세트에 있는 뷰를 나열하려면 다음 명령어를 입력합니다.

bq ls --format=pretty myotherproject:mydataset

API

API를 사용하여 뷰를 나열하려면 tables.list 메서드를 호출합니다.

Go

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

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import (
	"context"
	"fmt"
	"io"

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

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

	ts := client.Dataset(datasetID).Tables(ctx)
	for {
		t, err := ts.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return err
		}
		fmt.Fprintf(w, "Table: %q\n", t.TableID)
	}
	return nil
}

Python

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

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.


from google.cloud import bigquery

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

# TODO(developer): Set dataset_id to the ID of the dataset that contains
#                  the tables you are listing.
# dataset_id = 'your-project.your_dataset'

tables = client.list_tables(dataset_id)  # Make an API request.

print("Tables contained in '{}':".format(dataset_id))
for table in tables:
    print("{}.{}.{}".format(table.project, table.dataset_id, table.table_id))

다음과 같은 방법으로 뷰 메타데이터를 가져올 수 있습니다.

  • Google Cloud 콘솔 사용
  • bq 명령줄 도구의 bq show 명령어 사용
  • tables.get API 메서드 호출
  • 클라이언트 라이브러리 사용
  • INFORMATION_SCHEMA 뷰 쿼리

뷰 정보 가져오기

뷰 정보 가져오기는 테이블 정보 가져오기 프로세스와 동일합니다.

필수 권한

뷰에 대한 정보를 가져오려면 bigquery.tables.get IAM 권한이 필요합니다.

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

  • roles/bigquery.metadataViewer
  • roles/bigquery.dataViewer
  • roles/bigquery.dataOwner
  • roles/bigquery.dataEditor
  • roles/bigquery.admin

또한 bigquery.datasets.create 권한이 있으면 자신이 만든 데이터 세트의 뷰 정보를 가져올 수 있습니다.

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

뷰 정보를 가져오려면 다음 안내를 따르세요.

콘솔

  1. 데이터 세트를 확장합니다.

  2. 뷰 이름을 클릭합니다.

  3. 세부정보를 클릭하면 세부정보 탭에 뷰 설명, 뷰 정보, 뷰를 정의하는 SQL 쿼리가 표시됩니다.

    세부정보 보기

SQL

INFORMATION_SCHEMA.VIEWS를 쿼리합니다. 다음 예시에서는 나중에 사용하기 위해 예약된 check_option을 제외한 모든 열을 검색합니다. 반환되는 메타데이터는 기본 프로젝트의 DATASET_ID에 있는 모든 뷰에 대한 메타데이터입니다.

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 문을 입력합니다.

      SELECT
        * EXCEPT (check_option)
      FROM
        DATASET_ID.INFORMATION_SCHEMA.VIEWS;
      

    DATASET_ID를 데이터 세트의 이름으로 바꿉니다.

  3. 실행을 클릭합니다.

쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.

bq

bq show 명령어를 실행합니다. --format 플래그를 사용하면 출력을 제어할 수 있습니다. 기본 프로젝트가 아닌 다른 프로젝트의 뷰 정보를 가져오려면 프로젝트 ID를 [PROJECT_ID]:[DATASET] 형식으로 데이터 세트에 추가합니다.

bq show \
--format=prettyjson \
project_id:dataset.view

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

  • project_id는 프로젝트 ID입니다.
  • dataset는 데이터 세트 이름입니다.
  • view는 뷰 이름입니다.

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

다음 명령어를 입력하면 기본 프로젝트의 데이터 세트 mydataset에 있는 myview에 대한 정보가 표시됩니다.

bq show --format=prettyjson mydataset.myview

다음 명령어를 입력하면 myotherproject의 데이터 세트 mydataset에 있는 myview에 대한 정보가 표시됩니다.

bq show --format=prettyjson myotherproject:mydataset.myview

API

tables.get 메서드를 호출하고 관련 매개변수를 모두 제공합니다.

Go

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

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
)

// getView demonstrates fetching the metadata from a BigQuery logical view and printing it to an io.Writer.
func getView(w io.Writer, projectID, datasetID, viewID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// viewID := "myview"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	view := client.Dataset(datasetID).Table(viewID)
	meta, err := view.Metadata(ctx)
	if err != nil {
		return err
	}
	fmt.Fprintf(w, "View %s, query: %s\n", view.FullyQualifiedName(), meta.ViewQuery)
	return nil
}

자바

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

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Table;
import com.google.cloud.bigquery.TableId;

// Sample to get a view
public class GetView {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String viewName = "MY_VIEW_NAME";
    getView(datasetName, viewName);
  }

  public static void getView(String datasetName, String viewName) {
    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();

      TableId tableId = TableId.of(datasetName, viewName);
      Table view = bigquery.getTable(tableId);
      System.out.println("View retrieved successfully" + view.getDescription());
    } catch (BigQueryException e) {
      System.out.println("View not retrieved. \n" + e.toString());
    }
  }
}

Node.js

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

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

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

async function getView() {
  // Retrieves view properties.

  /**
   * TODO(developer): Uncomment the following lines before running the sample
   */
  // const datasetId = "my_dataset";
  // const tableId = "my_view";

  // Retrieve view
  const dataset = bigquery.dataset(datasetId);
  const [view] = await dataset.table(tableId).get();

  const fullTableId = view.metadata.id;
  const viewQuery = view.metadata.view.query;

  // Display view properties
  console.log(`View at ${fullTableId}`);
  console.log(`View query: ${viewQuery}`);
}
getView();

Python

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

BigQuery에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 클라이언트 라이브러리의 인증 설정을 참조하세요.

from google.cloud import bigquery

client = bigquery.Client()

view_id = "my-project.my_dataset.my_view"
# Make an API request to get the table resource.
view = client.get_table(view_id)

# Display view properties
print(f"Retrieved {view.table_type}: {str(view.reference)}")
print(f"View Query:\n{view.view_query}")

뷰 보안

BigQuery에서 뷰에 대한 액세스를 제어하려면 승인된 뷰를 참조하세요.

다음 단계