DESCRIBE TABLE
DESCRIBE TABLE
테이블의 컬럼 정보를 확인하거나, 테이블의 스테이지 속성(현재 값과 기본 값) 집합을 확인하는 명령어입니다. DESCRIBE는 DESC로 줄여서 쓸 수 있어요.
출처: 문서
본문
DESCRIBE TABLE은 지정한 테이블의 컬럼 정보를 보여주거나, 테이블에 설정된 스테이지 속성(current values와 default values)을 보여줍니다. DESCRIBE는 DESC로 줄여서 사용할 수 있어요.
관련 명령어로 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 TABLE과 DESCRIBE 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 |
...