GENERATE_COLUMN_DESCRIPTION
GENERATE_COLUMN_DESCRIPTION
INFER_SCHEMA 함수 출력을 사용해 준구조화 데이터가 든 스테이징 파일 집합에서 컬럼 목록을 생성하는 메타데이터 함수예요. 스테이징 파일의 컬럼 정의에 따라 테이블·외부 테이블·Iceberg™ 테이블·뷰를 만들 때 입력으로 쓸 수 있습니다.
본문
GENERATE_COLUMN_DESCRIPTION( <expr> , '<string>' )
<expr> — 배열로 포맷된 INFER_SCHEMA 함수 출력.
'<string>' — 컬럼 목록으로 만들 수 있는 객체 유형. 이 유형에 맞는 포맷이 출력에 적용돼요. 가능한 값은 table, external_table, view예요.
스테이징 파일 집합의 컬럼 목록을 반환하며, 두 번째 인자로 식별된 유형의 객체를 만들 때 입력으로 사용할 수 있어요.
예시 — mystage 스테이지의 Parquet 파일 집합에서 컬럼 정의를 감지·포맷·출력해요. 출력 컬럼은 테이블 만들기용으로 포맷돼요.
CREATE FILE FORMAT my_parquet_format
TYPE = parquet;
SELECT GENERATE_COLUMN_DESCRIPTION(ARRAY_AGG(OBJECT_CONSTRUCT(*)), 'table') AS COLUMNS
FROM TABLE (
INFER_SCHEMA(
LOCATION=>'@mystage',
FILE_FORMAT=>'my_parquet_format'
)
);
+--------------------+
| COLUMN_DESCRIPTION |
|--------------------|
| "country" VARIANT, |
| "continent" TEXT |
+--------------------+
-- The function output can be used to define the columns in a table.
CREATE TABLE mytable ("country" VARIANT, "continent" TEXT);
external_table 유형으로 포맷하면 데이터 타입 캐스팅 표현이 함께 나와요.
SELECT GENERATE_COLUMN_DESCRIPTION(ARRAY_AGG(OBJECT_CONSTRUCT(*)), 'external_table') AS COLUMNS
FROM TABLE (
INFER_SCHEMA(
LOCATION=>'@mystage',
FILE_FORMAT=>'my_parquet_format'
)
);
+---------------------------------------------+
| COLUMN_DESCRIPTION |
|---------------------------------------------|
| "country" VARIANT AS ($1:country::VARIANT), |
| "continent" TEXT AS ($1:continent::TEXT) |
+---------------------------------------------+
참고:
ARRAY_AGG(OBJECT_CONSTRUCT())에*를 쓰면 반환 결과가 128MB보다 커질 때 오류가 날 수 있어요. 큰 결과 집합에는*대신 필요한 컬럼(COLUMN NAME,TYPE,NULLABLE)만 사용하세요.WITHIN GROUP (ORDER BY order_id)를 쓸 때는 선택 컬럼ORDER_ID를 포함할 수 있어요.