DESCRIBE TABLE

DESCRIBE TABLE

테이블의 컬럼 정보를 확인하거나, 테이블의 스테이지 속성(현재 값과 기본 값) 집합을 확인하는 명령어입니다. DESCRIBEDESC로 줄여서 쓸 수 있어요.

출처: 문서

본문

DESCRIBE TABLE은 지정한 테이블의 컬럼 정보를 보여주거나, 테이블에 설정된 스테이지 속성(current values와 default values)을 보여줍니다. DESCRIBEDESC로 줄여서 사용할 수 있어요.

관련 명령어로 DROP TABLE, ALTER TABLE, CREATE TABLE, SHOW TABLES 그리고 DESCRIBE VIEW가 있습니다.

구문 (Syntax)

{ DESCRIBE | DESC } TABLE <name> [ TYPE =  { COLUMNS | STAGE } ]

파라미터 (Parameters)

  • name — 확인할 테이블의 식별자를 지정합니다. 식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 감싸야 해요. 큰따옴표로 감싼 식별자는 대소문자를 구분합니다.
  • TYPE = COLUMNS | STAGE — 테이블의 컬럼을 표시할지, 테이블의 스테이지 속성(current values와 default values) 집합을 표시할지를 지정합니다. 기본값은 TYPE = COLUMNS입니다.

사용 참고 사항 (Usage notes)

  • 이 명령어는 테이블의 객체 파라미터는 보여주지 않아요. 객체 파라미터를 확인하려면 SHOW PARAMETERS IN TABLE를 사용하세요.
  • DESCRIBE TABLEDESCRIBE VIEW는 서로 바꿔 쓸 수 있습니다. 두 명령어 모두 지정한 테이블이나 뷰의 세부 정보를 반환하지만, 뷰는 스테이지 속성이 없으므로 TYPE = STAGE는 뷰에는 적용되지 않아요.
  • 테이블에 스키마 진화(schema evolution)가 활성화되어 있으면 출력에 schema_evolution_record 컬럼이 포함됩니다. 이 컬럼은 2023_08 번들(Generally Enabled)에서 도입되었어요.
  • 출력에는 컬럼에 직접 설정된 마스킹 정책을 나타내는 policy name 컬럼이 포함됩니다. 태그 기반 마스킹 정책으로 보호되는 컬럼의 경우 Snowflake는 NULL을 반환해요.
  • 컬럼에 직접 설정된 마스킹 정책이 없거나, 계정이 Enterprise Edition 이상이 아닌 경우 Snowflake는 NULL을 반환합니다.
  • 출력에는 컬럼에 설정된 프라이버시 도메인을 나타내는 privacy domain 컬럼이 포함됩니다. 설정된 프라이버시 도메인이 없거나 계정이 Enterprise Edition 이상이 아닌 경우 NULL을 반환해요.
  • 이 명령어의 출력을 후처리하려면 파이프 연산자(->>)나 RESULT_SCAN 함수를 사용할 수 있어요. 두 방식 모두 출력을 조회 가능한 결과 집합으로 취급합니다. 예를 들어 SHOW 명령어 출력에서 원하는 컬럼만 선택하거나 행을 필터링할 수 있어요.
  • 출력 컬럼을 참조할 때는 컬럼 이름을 큰따옴표 식별자로 사용하세요. 예를 들어 출력 컬럼 type을 선택하려면 SELECT "type"처럼 지정합니다. SHOW 명령어의 출력 컬럼 이름은 소문자이므로 큰따옴표 식별자를 반드시 사용해야 해요.

출력 (Output)

TYPE = COLUMNS일 때 명령어 출력은 다음 속성과 메타데이터를 제공합니다.

컬럼 설명
name 테이블의 컬럼 이름입니다.
type 테이블 컬럼의 데이터 타입입니다. 컬럼에 데이터 정렬(collation)이 지정된 경우 그 명세가 포함됩니다.
kind 컬럼의 종류입니다. 일반 컬럼은 COLUMN, 표현식으로 정의된 가상 컬럼은 VIRTUAL입니다.
null? 컬럼이 NULL 값을 허용하는지 여부입니다(Y 또는 N).
default 컬럼의 기본 값입니다(없으면 NULL).
primary key 컬럼이 기본 키(또는 다중 컬럼 기본 키의 일부)인지 여부입니다(Y 또는 N).
unique key 컬럼에 UNIQUE 제약 조건이 있는지 여부입니다(Y 또는 N).
check 향후 사용을 위해 예약되어 있습니다.
expression 가상 컬럼을 정의하는 SQL 표현식입니다. 비가상 컬럼은 NULL입니다.
comment 컬럼에 설정된 주석입니다(없으면 NULL).
policy name 컬럼에 설정된 마스킹 정책입니다(없으면 NULL).
privacy domain 컬럼에 설정된 프라이버시 도메인입니다(없으면 NULL).
schema_evolution_record 주어진 테이블 컬럼에 대해 가장 최근에 트리거된 스키마 진화에 대한 정보를 기록합니다. 이 컬럼에는 다음 하위 필드가 포함됩니다: EvolutionType(ADD_COLUMN 또는 DROP_NOT_NULL), EvolutionMode(COPY, SNOWPIPE 또는 SNOWPIPE_STREAMING), FileName(SNOWPIPE_STREAMING은 NULL), TriggeringTime, QueryId 또는 PipeId, Pipe name, Channel name, offsetTokenUpperBound.

TYPE = STAGE일 때 명령어 출력은 테이블의 스테이지 속성에 대한 현재 값과 기본 값을 제공합니다.

예제 (Examples)

제약 조건과 기타 컬럼 속성을 가진 테이블 설명하기 — 5개 컬럼(그 중 2개에 제약 조건)이 있는 테이블을 만들고, 한 컬럼에 DEFAULT 값과 주석을 지정합니다.

CREATE OR REPLACE TABLE desc_example(
  c1 INT PRIMARY KEY,
  c2 INT,
  c3 INT UNIQUE,
  c4 VARCHAR(30) DEFAULT 'Not applicable' COMMENT 'This column is rarely populated',
  c5 VARCHAR(100));

테이블의 컬럼을 설명합니다.

DESCRIBE TABLE desc_example;
+------+--------------+--------+-------+------------------+-------------+------------+-------+------------+---------------------------------+-------------+----------------+-------------------------+
| name | type         | kind   | null? | default          | primary key | unique key | check | expression | comment                         | policy name | privacy domain | schema evolution record |
|------+--------------+--------+-------+------------------+-------------+------------+-------+------------+---------------------------------+-------------+----------------+-------------------------|
| C1   | NUMBER(38,0) | COLUMN | N     | NULL             | Y           | N          | NULL  | NULL       | NULL                            | NULL        | NULL           | NULL                    |
| C2   | NUMBER(38,0) | COLUMN | Y     | NULL             | N           | N          | NULL  | NULL       | NULL                            | NULL        | NULL           | NULL                    |
| C3   | NUMBER(38,0) | COLUMN | Y     | NULL             | N           | Y          | NULL  | NULL       | NULL                            | NULL        | NULL           | NULL                    |
| C4   | VARCHAR(30)  | COLUMN | Y     | 'Not applicable' | N           | N          | NULL  | NULL       | This column is rarely populated | NULL        | NULL           | NULL                    |
| C5   | VARCHAR(100) | COLUMN | Y     | NULL             | N           | N          | NULL  | NULL       | NULL                            | NULL        | NULL           | NULL                    |
+------+--------------+--------+-------+------------------+-------------+------------+-------+------------+---------------------------------+-------------+----------------+-------------------------+

컬럼에 마스킹 정책이 있는 테이블 설명하기 — 일반 마스킹 정책을 만든 뒤, 한 컬럼에 마스킹 정책을 설정한 desc_example 테이블을 다시 생성합니다. (이 예제를 실행하려면 먼저 email_mask 마스킹 정책을 생성하세요.)

CREATE OR REPLACE TABLE desc_example(
  c1 INT PRIMARY KEY,
  c2 INT,
  c3 INT UNIQUE,
  c4 VARCHAR(30) DEFAULT 'Not applicable' COMMENT 'This column is rarely populated',
  c5 VARCHAR(100) WITH MASKING POLICY email_mask);
+------+--------------+--------+-------+------------------+-------------+------------+-------+------------+---------------------------------+---------------------------------+----------------+-------------------------+
| name | type         | kind   | null? | default          | primary key | unique key | check | expression | comment                         | policy name                     | privacy domain | schema evolution record |
|------+--------------+--------+-------+------------------+-------------+------------+-------+------------+---------------------------------+---------------------------------+----------------|-------------------------|
| C1   | NUMBER(38,0) | COLUMN | N     | NULL             | Y           | N          | NULL  | NULL       | NULL                            | NULL                            | NULL           | NULL                    |
| C2   | NUMBER(38,0) | COLUMN | Y     | NULL             | N           | N          | NULL  | NULL       | NULL                            | NULL                            | NULL           | NULL                    |
| C3   | NUMBER(38,0) | COLUMN | Y     | NULL             | N           | Y          | NULL  | NULL       | NULL                            | NULL                            | NULL           | NULL                    |
| C4   | VARCHAR(30)  | COLUMN | Y     | 'Not applicable' | N           | N          | NULL  | NULL       | This column is rarely populated | NULL                            | NULL           | NULL                    |
| C5   | VARCHAR(100) | COLUMN | Y     | NULL             | N           | N          | NULL  | NULL       | NULL                            | HT_SENSORS.HT_SCHEMA.EMAIL_MASK | NULL           | NULL                    |
+------+--------------+--------+-------+------------------+-------------+------------+-------+------------+---------------------------------+---------------------------------+----------------+-------------------------+

스테이지 속성 설명하기 — 같은 테이블의 현재 스테이지 속성을 설명합니다(여기서는 처음 다섯 행만 표시).

DESCRIBE TABLE desc_example TYPE = STAGE;
+--------------------+--------------------------------+---------------+-----------------+------------------+
| parent_property    | property                       | property_type | property_value  | property_default |
|--------------------+--------------------------------+---------------+-----------------+------------------|
| STAGE_FILE_FORMAT  | TYPE                           | String        | CSV             | CSV              |
| STAGE_FILE_FORMAT  | RECORD_DELIMITER               | String        | \n              | \n               |
| STAGE_FILE_FORMAT  | FIELD_DELIMITER                | String        | ,               | ,                |
| STAGE_FILE_FORMAT  | FILE_EXTENSION                 | String        |                 |                  |
| STAGE_FILE_FORMAT  | SKIP_HEADER                    | Integer       | 0               | 0                |
...

더 알아보기 (Learn more)