GENERATE_COLUMN_DESCRIPTION

GENERATE_COLUMN_DESCRIPTION

INFER_SCHEMA 함수 출력을 사용해 준구조화 데이터가 든 스테이징 파일 집합에서 컬럼 목록을 생성하는 메타데이터 함수예요. 스테이징 파일의 컬럼 정의에 따라 테이블·외부 테이블·Iceberg™ 테이블·뷰를 만들 때 입력으로 쓸 수 있습니다.

출처: Snowflake SQL Reference

본문

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를 포함할 수 있어요.

더 알아보기 (Learn more)