SHOW STREAMS
SHOW STREAMS
액세스 권한이 있는 스트림(stream)을 나열하는 명령이에요. 현재/지정한 데이터베이스·스키마 또는 전체 계정의 스트림을 나열하는 데 사용할 수 있어요.
출처: 문서
본문
액세스 권한이 있는 스트림을 나열해요. 이 명령을 사용해 현재/지정한 데이터베이스·스키마 또는 전체 계정의 스트림을 나열할 수 있어요. 출력은 스트림 메타데이터와 속성을 데이터베이스, 스키마, 스트림 이름 기준 사전순으로 반환해요. 제공된 필터로 결과를 필터링하려면 이 점을 유의해야 해요.
구문
SHOW [ TERSE ] STREAMS [ 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(전체 컬럼 집합의 type 컬럼을 개명한 것), database_name, schema_name, tableOn(전체 컬럼 집합의 table_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 | 스트림의 이름이에요. |
| database_name | 스트림의 스키마에 대한 데이터베이스예요. |
| schema_name | 스트림의 스키마예요. |
| owner | 스트림을 소유하는 역할이에요. |
| comment | 스트림에 대한 주석이에요. |
| table_name | 스트림이 DML 업데이트를 추적하는 테이블이에요. |
| source_type | 스트림의 소스 객체예요: table, view, directory table, 또는 external table. |
| base_tables | 뷰의 기본 테이블이에요. 이 컬럼은 뷰의 스트림에만 적용돼요. |
| type | 스트림의 유형이에요. 현재는 DELTA만 있어요. |
| stale | 스트림이 마지막으로 stale_after 시각(아래 참고) 이전에 읽혔는지 여부를 나타내요. TRUE이면 스트림이 오래되었을(stale) 수 있어요. 스트림이 stale이면 읽을 수 없어요. 읽기를 재개하려면 스트림을 다시 만들어요. 스트림이 stale해지지 않게 하려면 stale_after 이전에 스트림을 소비해요. |
| mode | 스트림이 append-only 스트림이면 APPEND_ONLY를 표시해요. 스트림이 삽입된 행에 대한 정보만 반환하면 INSERT_ONLY를 표시해요(현재 외부 테이블의 스트림에만 적용). 테이블의 스트림에서는 DEFAULT를 표시해요. |
| stale_after | 스트림이 오래되거나(소비되지 않으면) 타임스탬프가 될 수 있는 시각이에요. 이 값은 소스 테이블의 보존 기간(즉 DATA_RETENTION_TIME_IN_DAYS 또는 MAX_DATA_EXTENSION_TIME_IN_DAYS 매개변수 설정 중 더 큰 값)을 스트림이 마지막으로 읽힌 시각에 더해 계산해요. 데이터 보존 기간이 스키마나 데이터베이스 수준에 설정되어 있으면, 정확한 stale_after 타임스탬프를 얻으려면 현재 역할과 계정이 관련 객체(스키마, 데이터베이스 또는 공유 테이블/뷰)에 접근할 수 있어야 해요. 이 시각은 몇 가지 경우에 부정확할 수 있어요: |
- 스트림이 오래될 수 있게 허용된 시점과 기본 데이터가 실제로 드롭되는 시점 사이에 시간이 흐를 수 있어요. 이 기간 동안 stale_after는 과거에 있겠지만, 스트림 읽기가 성공할 수도 있어요. 이 기간의 길이는 변경될 수 있으므로 의존하면 안 돼요.
- 테이블 보존에 영향을 주는 매개변수가 증가하면 이미 stale한 스트림은 계속 stale 상태로 남지만, stale_after 시각이 미래에 있을 수 있어요. | | invalid_reason | 스트림을 성공적으로 쿼리할 수 없는 이유예요. 이 컬럼은 향후 기능을 지원해요. 현재 반환되는 유일한 값은 N/A예요. | | owner_role_type | 객체를 소유하는 역할의 유형으로, 예를 들어 ROLE이에요. Snowflake Native App이 객체를 소유하면 값은 APPLICATION이에요. 객체를 삭제하면 삭제된 객체에는 소유 역할이 없으므로 Snowflake는 NULL을 반환해요. |
스트림에 지정할 수 있는 속성에 대한 자세한 내용은 CREATE STREAM을 참고해요.
사용 메모
- 이 명령은 실행에 웨어하우스가 필요하지 않아요.
- 이 명령은 현재 사용자의 현재 역할에 액세스 권한이 하나 이상 부여된 소스 객체 이름만 반환해요.
MANAGE GRANTS액세스 권한은 보유자에게 계정의 모든 객체를 볼 수 있는 권한을 암묵적으로 부여해요. 기본적으로 계정 관리자(ACCOUNTADMIN 역할)와 보안 관리자(SECURITYADMIN 역할)만MANAGE GRANTS권한을 가져요.- 이 명령의 출력을 후처리하려면 파이프 연산자(
->>)나RESULT_SCAN함수를 사용할 수 있어요. 두 구성 모두 출력을 쿼리할 수 있는 결과 집합으로 취급해요. 예를 들어 SHOW 명령 출력에서 특정 컬럼을 선택하거나 행을 필터링할 수 있어요. - 출력 컬럼을 참조할 때는 큰따옴표로 묶은 식별자를 사용해요. 예를 들어
type출력 컬럼을 선택하려면SELECT "type"이라고 지정해요. SHOW 명령의 출력 컬럼 이름은 소문자이므로 큰따옴표로 묶은 식별자를 사용해야 해요. LIMIT <rows>의 값은 10000을 초과할 수 없어요. LIMIT rows를 생략하면 결과 집합이 1만 행보다 크면 명령이 오류를 일으켜요. 1만 개를 초과하는 결과를 보려면 LIMIT rows를 포함하거나 Snowflake 정보 스키마의 해당 뷰를 쿼리해요.
예제
tpch.public 스키마에서 볼 권한이 있는, line으로 시작하는 이름을 가진 모든 스트림 표시:
SHOW STREAMS LIKE 'line%' IN tpch.public;
더 알아보기 (Learn more)
- See also: CREATE STREAM, ALTER STREAM, DROP STREAM, DESCRIBE STREAM