SHOW VIEWS
SHOW VIEWS
액세스 권한이 있는 뷰(보안 뷰 포함)를 나열하는 명령이에요. 현재/지정한 데이터베이스·스키마 또는 전체 계정의 뷰를 나열하는 데 사용할 수 있어요. 출력은 뷰 메타데이터와 속성을 데이터베이스, 스키마, 뷰 이름 기준 사전순으로 반환해요. 제공된 필터로 결과를 필터링하려면 이 점을 유의해야 해요.
출처: 문서
본문
액세스 권한이 있는 뷰(보안 뷰 포함)를 나열해요. 이 명령을 사용해 현재/지정한 데이터베이스·스키마 또는 전체 계정의 뷰를 나열할 수 있어요. 출력은 뷰 메타데이터와 속성을 데이터베이스, 스키마, 뷰 이름 기준 사전순으로 반환해요. 제공된 필터로 결과를 필터링하려면 이 점을 유의해야 해요.
구문
SHOW [ TERSE ] VIEWS [ LIKE '<pattern>' ]
[ IN { ACCOUNT | DATABASE [ <db_name> ] | [ SCHEMA ] [ <schema_name> ] | APPLICATION <application_name> | APPLICATION PACKAGE <application_package_name> } ]
[ STARTS WITH '<name_string>' ]
[ LIMIT <rows> [ FROM '<name_string>' ] ]
매개변수
TERSE
선택적으로 출력 컬럼의 부분집합만 반환해요: created_on, name, kind, database_name, schema_name. 기본값: 값 없음(모든 컬럼이 출력에 포함됨).
LIKE 'pattern'
선택적으로 객체 이름으로 명령 출력을 필터링해요. 필터는 SQL 와일드카드 문자(%와 _)를 지원하며 대소문자를 구분하지 않는 패턴 매칭을 사용해요. 예를 들어 다음 패턴들은 같은 결과를 반환해요:
... LIKE '%testing%' ...
... LIKE '%TESTING%' ...
기본값: 값 없음(출력에 필터링이 적용되지 않음).
IN ACCOUNT | [ DATABASE ] db_name | [ SCHEMA ] schema_name | [ APPLICATION ] application_name | [ APPLICATION PACKAGE ] application_package_name
선택적으로 명령의 범위를 지정해요. 현재/지정한 데이터베이스·스키마 또는 전체 계정에 대한 레코드만 나열할지 결정해요.
APPLICATION과 APPLICATION PACKAGE 키워드는 필수가 아니지만, 명명된 Snowflake Native App에 대한 범위를 지정해요. DATABASE 또는 SCHEMA 키워드는 필수가 아니에요. 데이터베이스나 스키마 이름만 지정해도 범위를 설정할 수 있어요. 마찬가지로 세션이 현재 사용 중인 데이터베이스가 있으면 데이터베이스나 스키마 이름도 필요하지 않아요.
- DATABASE 또는 SCHEMA가 이름 없이 지정되고 세션이 현재 사용 중인 데이터베이스가 없으면, 이 매개변수는 출력에 영향을 주지 않아요.
- SCHEMA가 이름과 함께 지정되고 세션이 현재 사용 중인 데이터베이스가 없으면, 스키마 이름은 데이터베이스 이름으로 정규화되어야 해요(예: testdb.testschema).
기본값: 세션이 현재 사용 중인 데이터베이스가 있는지에 따라 달라져요:
- 데이터베이스가 있는 경우: DATABASE가 기본값이에요.
- 데이터베이스가 없는 경우: ACCOUNT가 기본값이에요.
STARTS WITH 'name_string'
선택적으로 객체 이름의 시작 부분에 나타나는 문자를 기준으로 명령 출력을 필터링해요. 문자열은 작은따옴표로 묶어야 하고 대소문자를 구분해요. 예를 들어 다음 문자열들은 다른 결과를 반환해요:
... STARTS WITH 'B' ...
... STARTS WITH 'b' ...
기본값: 값 없음(출력에 필터링이 적용되지 않음).
LIMIT
선택적으로 반환되는 최대 행 수를 제한하면서 결과의 "페이지 매김"도 가능하게 해요. 선택적 FROM 'name_string' 하위 절은 결과의 "커서" 역할을 해요. 문자열은 작은따옴표로 묶어야 하고 대소문자를 구분해요. 전체 객체 이름을 포함할 필요는 없고 부분 이름도 지원돼요. 기본값: 값 없음(출력에 제한이 적용되지 않음).
참고:
FROM 'name_string'과STARTS WITH 'name_string'절을 모두 지원하는 SHOW 명령에서는 같은 문장에서 두 절을 모두 조합할 수 있어요. 그러나 두 조건이 모두 충족되어야 하며, 그렇지 않으면 서로 상쇄되어 결과가 반환되지 않아요. 또한 객체는 이름으로 사전순으로 반환되므로 FROM 'name_string'은 STARTS WITH 'name_string'이 반환한 행보다 사전순 값이 더 높은 행만 반환해요.
출력
명령 출력은 뷰 속성과 메타데이터를 다음 컬럼으로 제공해요:
| 컬럼 | 설명 |
|---|---|
| created_on | 뷰가 생성된 타임스탬프예요. |
| name | 뷰의 이름이에요. |
| reserved | (향후 사용을 위해 예약됨.) |
| kind | 뷰의 종류이며, VIEW 또는 MATERIALIZED_VIEW예요. |
| database_name | 뷰가 존재하는 데이터베이스의 이름이에요. |
| schema_name | 뷰가 존재하는 스키마의 이름이에요. |
| owner | 뷰의 소유자예요. |
| comment | 선택적 주석이에요. |
| text | 뷰를 만든 명령의 텍스트예요(예: CREATE VIEW …). |
| is_secure | 보안 뷰이면 true, 그렇지 않으면 false예요. |
| is_materialized | 구체화된 뷰(materialized view)이면 true, 그렇지 않으면 false예요. |
| owner_role_type | 객체를 소유하는 역할의 유형으로, 예를 들어 ROLE이에요. Snowflake Native App이 객체를 소유하면 값은 APPLICATION이에요. 객체를 삭제하면 삭제된 객체에는 소유 역할이 없으므로 Snowflake는 NULL을 반환해요. |
| change_tracking | ON 또는 OFF예요. ON은 활성화를 나타내며, 스트림이나 SELECT 문의 CHANGES 절을 사용해 변경 추적 데이터를 쿼리할 수 있어요. OFF는 비활성화를 나타내지만 필요에 따라 선택적으로 활성화할 수 있어요. |
사용 메모
- 설계상 명령 출력에는 보안 뷰가 포함되지만, 뷰의 소유권을 가진 역할을 사용하지 않는 한 이 뷰에 대한 특정 정보는 제공되지 않아요. 보안 뷰의 세부 정보를 보려면 뷰를 소유한 역할을 사용하거나 정보 스키마(Information Schema)의 VIEWS 뷰를 사용해야 해요.
- 이 명령의 출력에는
SN_TEMP_OBJECT_n(n은 숫자) 같은 이름의 객체가 포함될 수 있어요. 이는 Snowpark 라이브러리가 사용자를 대신해 생성한 임시 객체예요. - 이 명령은 실행에 웨어하우스가 필요하지 않아요.
- 이 명령은 현재 사용자의 현재 역할에 액세스 권한이 하나 이상 부여된 객체만 반환해요.
MANAGE GRANTS액세스 권한은 보유자에게 계정의 모든 객체를 볼 수 있는 권한을 암묵적으로 부여해요. 기본적으로 계정 관리자(ACCOUNTADMIN 역할)와 보안 관리자(SECURITYADMIN 역할)만MANAGE GRANTS권한을 가져요.- 이 명령의 출력을 후처리하려면 파이프 연산자(
->>)나RESULT_SCAN함수를 사용할 수 있어요. 두 구성 모두 출력을 쿼리할 수 있는 결과 집합으로 취급해요. 예를 들어 SHOW 명령 출력에서 특정 컬럼을 선택하거나 행을 필터링할 수 있어요. - 출력 컬럼을 참조할 때는 큰따옴표로 묶은 식별자를 사용해요. 예를 들어
type출력 컬럼을 선택하려면SELECT "type"이라고 지정해요. SHOW 명령의 출력 컬럼 이름은 소문자이므로 큰따옴표로 묶은 식별자를 사용해야 해요. LIMIT <rows>의 값은 10000을 초과할 수 없어요. LIMIT rows를 생략하면 결과 집합이 1만 행보다 크면 명령이 오류를 일으켜요. 1만 개를 초과하는 결과를 보려면 LIMIT rows를 포함하거나 Snowflake 정보 스키마의 해당 뷰를 쿼리해요.
예제
mydb.public 스키마에서 볼 권한이 있는, 이름이 line으로 시작하는 모든 뷰 표시:
SHOW VIEWS LIKE 'line%' IN mydb.public;
+-------------------------------+---------+----------+---------------+-------------+----------+---------+-------------------------------------------------------+-----------+-----------------+-----------------+-----------------+
| created_on | name | reserved | database_name | schema_name | owner | comment | text | is_secure | is_materialized | change_tracking | owner_role_type |
+-------------------------------+---------+----------+---------------+-------------+----------+---------+-------------------------------------------------------+-----------+-----------------+-----------------+-----------------+
| 2019-05-24 18:41:14.247 -0700 | liners1 | | MYDB | PUBLIC | SYSADMIN | | create materialized views liners1 as select * from t; | false | false | on | ROLE |
+-------------------------------+---------+----------+---------------+-------------+----------+---------+-------------------------------------------------------+-----------+-----------------+-----------------+-----------------+