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'
);