DB/Bigquery

[Bigquery] 라벨이란

불곰1 2024. 2. 21. 00:14

빅쿼리의 라벨을 사용하면 데이터셋, 테이블, 뷰에 라벨을 추가하여 리소스를 체계화 할 수 있습니다. 라벨은 key-value 쌍으로 구성합니다. 라벨을 지정하면 검색에 용이하며 용도, 환경, 부서 등을 기준으로 그룹화할 수 있습니다.

라벨 요구 사항

다음은 라벨을 구성하는데 필요한 사항입니다.

  • 각 리소스에 라벨을 최대 64개까지 사용 가능
  • 라벨은 키-값 쌍으로 이뤄짐
  • 키는 필수값이며 1~63자까지 입력 가능
  • 값은 선택 값이며 0~63자까지 입력 가능
  • 키와 값은 한글, 소문자, 숫자, 밑줄, 대시만 사용 가능
  • 키는 단일 리소스에서 고유해야함
    • 여러 리소스에 같은 키를 사용할 수 있음

값이 없는 라벨

키의 값이 비어 있는 라벨을 태그라고도 부릅니다. 정책 태그와 형태가 유사해 보이지만 태그와는 기능이 완전히 다릅니다. 값이 없는 새 라벨을 만들거나 기존 라벨 키에서 값을 삭제할 수 있습니다. 값이 없는 라벨은 키-값 형식이 필요하지 않은 경우에 유용할 수 있습니다.

라벨 사용 예시

  • 팀 또는 비용 센터 라벨: team:marketing, team:analytics, team:de
  • 구성요소 라벨: component:redis, component:ingest, component:dashboard
  • 환경 또는 단계 라벨: environment:production, environment:test
  • 삭제 예정 라벨: deprecated:

라벨을 생성할 때는 최대한 그룹화하여 사용하는 것이 좋습니다. 너무 세부적으로 나누거나 값이 자주 변경되는 경우, 효과적으로 필터링 할 수 없습니다.

라벨 추가

라벨은 빅쿼리 콘솔, sql, 터미널 bq 명령어로 생성할 수 있습니다.

빅쿼리 콘솔

테이블 세부정보 수정을 눌러 다음과 같이 추가할 수 있습니다.

빅쿼리 콘솔 - 테이블 세부정보 수정
테이블 세부정보

sql

create or replace table `프로젝트.데이터셋.테이블명`
OPTIONS (
    labels = [('키_테스트', '값_테스트')]
)
as
SELECT * FROM `복사하고자 하는 테이블`

라벨 보기

라벨은 다음과 같은 옵션에서 확인할 수 있습니다.

이 중, sql만 확인해본다면 데이터셋의 경우, INFORMATION_SCHEMA.SCHEMATA_OPTIONS 에서 확인할 수 있고 INFORMATION_SCHEMA.TABLE_OPTIONS 에서 테이블의 라벨을 확인할 수 있습니다.

아래는 INFORMATION_SCHEMA.TABLE_OPTIONS 를 사용해 위에서 등록한 테이블의 라벨을 조회하는 쿼리 예시입니다.

SELECT
  table_schema, table_name, option_name, option_type, option_value
FROM
  `프로젝트.데이터셋.INFORMATION_SCHEMA.TABLE_OPTIONS`
WHERE option_name = 'labels'

라벨로 필터링하여 조회

조회 또한 빅쿼리 콘솔 및 아래 옵션으로 필터링하여 조회할 수 있습니다.

콘솔에서 필터링을 하고자 한다면 빅쿼리 콘솔 검색창에서 key 또는 key:value 으로 검색을 진행하면 됩니다.

다음 예시는 빅쿼리 콘솔에서 라벨로 필터링 하는 예시입니다.

라벨과 태그의 차이

라벨은 리소스를 체계화하고 필터링하는 부분에 초점이 맞춰져 있어서 정책을 세밀하게 제어를 할 수 없습니다. 이러한 기능은 태그(정책 태그)로 가능한데 태그를 사용하면 리소스에 정책을 제어하여 태그 여부에 따라 정책을 조건부로 허용 또는 거부할 수 있습니다.

요약

  • 라벨을 사용하면 리소스를 체계화할 수 있고 필터링에 용이함
  • 값이 없는 라벨을 태그라고도 부르는데 이는 정책태그가 아니므로 값이 없는 라벨 이라고 부르는 것이 혼동을 방지
  • 현재(2024.02.21) key:value 쌍으로 라벨을 검색하려 할 때, 키나 값에 한글이 들어간다면 검색이 정상 동작하지 않음

레퍼런스

https://cloud.google.com/bigquery/docs/labels-intro?hl=ko

https://cloud.google.com/bigquery/docs/adding-labels?hl=ko

https://cloud.google.com/bigquery/docs/viewing-labels?hl=ko#console

https://cloud.google.com/bigquery/docs/filtering-labels?hl=ko