카테고리:

메타데이터 함수

GENERATE_COLUMN_DESCRIPTION

INFER_SCHEMA 함수 출력을 사용하여 반정형 데이터가 포함된 스테이징된 파일 세트에서 열 목록을 생성합니다.

이 함수의 출력은 스테이징된 파일의 열 정의를 기반으로 테이블, 외부 테이블, Apache Iceberg™ 테이블 또는 뷰(적절한 CREATE <오브젝트> 명령 사용)를 수동으로 만들 때 입력으로 사용할 수 있습니다.

아니면, USING TEMPLATE 절이 있는 CREATE TABLE 또는 CREATE ICEBERG TABLE 명령을 사용하여 동일한 INFER_SCHEMA 함수 출력에서 파생된 열 정의를 사용해 새 테이블을 만들 수도 있습니다.

구문

GENERATE_COLUMN_DESCRIPTION( <expr> , '<string>' ) 
Copy

인자

expr

배열로 형식화된 INFER_SCHEMA 함수의 출력입니다.

'string'

열 목록에서 만들 수 있는 오브젝트 유형입니다. 이 유형에 대한 적절한 형식이 출력에 적용됩니다.

가능한 값은 table, external_table 또는 view 입니다.

반환

이 함수는 스테이징된 파일 세트의 열 목록을 반환하며, 이는 두 번째 인자에서 식별된 유형의 오브젝트를 만들 때 입력으로 사용할 수 있습니다.

mystage 스테이지에서 스테이징된 Parquet 파일 세트에서 열 정의 세트를 감지하고, 형식을 지정하고, 출력합니다. 출력 열은 테이블 생성을 위해 형식이 지정됩니다.

이 예는 INFER_SCHEMA 항목의 예를 기반으로 합니다.

-- Create a file format that sets the file type as Parquet. CREATE FILE FORMAT my_parquet_format TYPE = parquet; -- Query the GENERATE_COLUMN_DESCRIPTION function. 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); 
Copy

이전 예와 동일하지만, 외부 테이블을 만들기 위해 형식이 지정된 열 세트를 생성합니다.

-- Query the GENERATE_COLUMN_DESCRIPTION function. 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) | +---------------------------------------------+ 
Copy

이전 예와 동일하지만, Iceberg 테이블을 만들기 위해 형식이 지정된 열 세트를 생성합니다.

-- Create a file format that sets the file type as Parquet. CREATE OR REPLACE FILE FORMAT my_parquet_format TYPE = PARQUET USE_VECTORIZED_SCANNER = TRUE; -- Query the GENERATE_COLUMN_DESCRIPTION function. SELECT GENERATE_COLUMN_DESCRIPTION(ARRAY_AGG(OBJECT_CONSTRUCT(*)), 'table') AS COLUMNS FROM TABLE ( INFER_SCHEMA( LOCATION=>'@my_int_stage', FILE_FORMAT=>'my_parquet_format', KIND => 'ICEBERG' ) ); +---------------------------------------------+ | COLUMN_DESCRIPTION | |---------------------------------------------| | "id" INT NOT NULL, | | "custnum" INT NOT NULL | +---------------------------------------------+ 
Copy

이전 예와 동일하지만, 뷰를 만들기 위해 형식이 지정된 열 세트를 생성합니다.

-- Query the GENERATE_COLUMN_DESCRIPTION function. SELECT GENERATE_COLUMN_DESCRIPTION(ARRAY_AGG(OBJECT_CONSTRUCT(*)), 'view') AS COLUMNS FROM TABLE ( INFER_SCHEMA( LOCATION=>'@mystage', FILE_FORMAT=>'my_parquet_format' ) ); +--------------------+ | COLUMN_DESCRIPTION | |--------------------| | "country" , | | "continent" | +--------------------+ 
Copy

참고

ARRAY_AGG(OBJECT_CONSTRUCT()) 에 대해 * 를 사용하면 반환된 결과가 128MB보다 큰 경우 오류가 발생할 수 있습니다. 더 큰 결과 세트의 경우 * 를 사용하지 않도록 하고 쿼리에 대해 필수 열 COLUMN NAME, TYPENULLABLE 만 사용하세요. WITHIN GROUP (ORDER BY order_id) 을 사용할 때 선택적 열 ORDER_ID 를 포함할 수 있습니다.