SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT

SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT (시스템 객체 기본 열 재정의)

지정된 Snowflake 뷰(예: 특정 ACCOUNT_USAGE, ORGANIZATION_USAGE, READER_ACCOUNT_USAGE 또는 INFORMATION_SCHEMA 뷰) 또는 이들 스키마 중 하나의 기본 제공 테이블 함수 출력에서 모든 열을 선택(SELECT *)할 때 반환되어야 하는 열을 제어해요.

출처: Snowflake SQL Reference - SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT

본문

참고: 이 함수는 뷰 또는 테이블 함수 출력에서 특정 열을 선택하는 쿼리에는 영향을 주지 않아요.

Snowflake 뷰나 테이블 함수에 새 열이 도입되어, 모든 열을 선택하고 결과의 고정된 열 수나 순서에 의존하는 스크립트 또는 코드에 문제가 생기면 이 함수를 호출할 수 있어요. SHOW 명령 출력, Snowflake 뷰 및 테이블 함수의 새 열 처리(Handling new columns in SHOW command output, Snowflake views, and table functions)를 참고하세요.

참고: SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT, SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT, SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES

구문

SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
 '<object_type>',
 '<database_name>',
 '<schema_name>',
 '<object_name>',
 '<list_of_columns>'
)

인자

'object_type'

객체의 타입이에요. Snowflake 뷰에는 'VIEW'를, 기본 제공 테이블 함수에는 'FUNCTION'을 지정하세요.

'database_name'

객체를 포함하는 데이터베이스의 이름이에요. 뷰의 경우 'SNOWFLAKE'를, INFORMATION_SCHEMA 뷰의 경우 빈 문자열을 지정하세요. 테이블 함수의 경우 INFORMATION_SCHEMA 테이블 함수에는 빈 문자열을, ACCOUNT_USAGE, ORGANIZATION_USAGE 또는 READER_ACCOUNT_USAGE 테이블 함수에는 'SNOWFLAKE'를 지정하세요.

'schema_name'

객체를 포함하는 스키마의 이름이에요. 뷰의 경우 SNOWFLAKE 데이터베이스의 스키마 이름 또는 'INFORMATION_SCHEMA'를 지정하세요. 테이블 함수의 경우 'INFORMATION_SCHEMA', 'ACCOUNT_USAGE', 'ORGANIZATION_USAGE', 'READER_ACCOUNT_USAGE'처럼 함수를 포함하는 스키마의 이름을 지정하세요.

'object_name'

객체의 이름이에요.

'list_of_columns'

이 뷰 또는 이 테이블 함수의 출력에서 모든 열을 선택할 때 반환되어야 하는 열의 쉼표로 구분된 목록이에요.

열 이름은 대문자, 소문자 또는 대소문자 혼합으로 지정할 수 있어요. 열은 나열한 순서와 관계없이 기본 순서로 반환돼요.

모든 열을 반환하려면 빈 문자열을 지정하거나 SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT를 호출하세요.

반환 값

연산이 성공하면 TRUE를 반환해요.

접근 제어 요구 사항

계정 관리자(ACCOUNTADMIN 역할을 부여받은 사용자)만 이 함수를 호출할 수 있어요.

사용 시 참고 사항

  • 이 함수를 호출하려면 사용 중인 데이터베이스가 있어야 해요(예: USE DATABASE 실행). 사용 중인 데이터베이스가 없으면 함수 호출이 실패해요.

예시

다음 예시는 ACCOUNT_USAGE 스키마의 TABLES 뷰에서 모든 열을 선택하는 쿼리가 table_name, table_schema, table_type 열만 반환하도록 구성해요.

SELECT SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
 'VIEW',
 'SNOWFLAKE',
 'ACCOUNT_USAGE',
 'TABLES',
 'table_name, table_schema, table_type'
);

그 뷰에서 모든 열을 선택하면 지정된 열만 반환돼요.

SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TABLES;
+------------+---------------------+------------+
| TABLE_NAME | TABLE_SCHEMA        | TABLE_TYPE |
|------------+---------------------+------------|
| MY_TABLE   | MY_SCHEMA           | BASE TABLE |
+------------+---------------------+------------+

다음 예시는 INFORMATION_SCHEMA 스키마의 TABLES 뷰에서 모든 열을 선택하는 쿼리가 table_name, table_schema, table_type 열만 반환하도록 구성해요.

SELECT SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
 'VIEW',
 '',
 'INFORMATION_SCHEMA',
 'TABLES',
 'table_name, table_schema, table_type'
);

그 뷰에서 모든 열을 선택하면 지정된 열만 반환돼요.

SELECT * FROM INFORMATION_SCHEMA.TABLES;
+--------------+------------+------------+
| TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE |
|--------------+------------+------------|
| MY_SCHEMA    | MY_TABLE   | BASE TABLE |
+--------------+------------+------------+

INFORMATION_SCHEMA 스키마의 기본 제공 테이블 함수가 반환하는 열을 구성하려면 객체 타입으로 'FUNCTION'을, 데이터베이스 이름으로 빈 문자열을, 스키마 이름으로 'INFORMATION_SCHEMA'를 지정하세요. 다음 예시는 TASK_HISTORY 테이블 함수가 name, state, scheduled_time 열만 반환하도록 구성해요.

SELECT SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
 'FUNCTION',
 '',
 'INFORMATION_SCHEMA',
 'TASK_HISTORY',
 'name, state, scheduled_time'
);

더 알아보기