SHOW USER FUNCTIONS
SHOW USER FUNCTIONS
액세스 권한이 있는 모든 사용자 정의 함수(UDF)를 나열하는 명령이에요. 지정한 데이터베이스·스키마(또는 세션의 현재 데이터베이스·스키마) 또는 전체 계정의 UDF를 나열하는 데 사용해요.
출처: 문서
본문
액세스 권한이 있는 모든 사용자 정의 함수(UDF)를 나열해요. 이 명령을 사용해 지정한 데이터베이스·스키마(또는 세션의 현재 데이터베이스·스키마) 또는 전체 계정의 UDF를 나열할 수 있어요. 내장 함수를 포함한 모든 함수를 나열하는 명령은 SHOW FUNCTIONS를 참고해요.
구문
SHOW USER FUNCTIONS [ LIKE '<pattern>' ]
[ IN
{
ACCOUNT |
DATABASE |
DATABASE <database_name> |
SCHEMA |
SCHEMA <schema_name> |
<schema_name>
APPLICATION <application_name> |
APPLICATION PACKAGE <application_package_name> |
}
]
매개변수
LIKE 'pattern'
선택적으로 객체 이름으로 명령 출력을 필터링해요. 필터는 SQL 와일드카드 문자(%와 _)를 지원하며 대소문자를 구분하지 않는 패턴 매칭을 사용해요. 예를 들어 다음 패턴들은 같은 결과를 반환해요:
... LIKE '%testing%' ...
... LIKE '%TESTING%' ...
기본값: 값 없음(출력에 필터링이 적용되지 않음).
[ IN ... ]
선택적으로 명령의 범위를 지정해요. 다음 중 하나를 지정해요:
- ACCOUNT: 전체 계정에 대한 레코드를 반환해요.
- DATABASE, DATABASE db_name: 현재 사용 중인 데이터베이스 또는 지정한 데이터베이스(db_name)에 대한 레코드를 반환해요. DATABASE를 db_name 없이 지정했는데 사용 중인 데이터베이스가 없으면 이 키워드는 출력에 영향을 주지 않아요.
- SCHEMA, SCHEMA schema_name: 현재 사용 중인 스키마 또는 지정한 스키마(schema_name)에 대한 레코드를 반환해요. SCHEMA는 데이터베이스를 사용 중이거나 정규화된 schema_name(예: db.schema)을 지정한 경우 선택 사항이에요. 사용 중인 데이터베이스가 없으면 SCHEMA를 지정해도 출력에 영향을 주지 않아요.
- APPLICATION application_name, APPLICATION PACKAGE application_package_name: 이름이 지정된 Snowflake Native App 또는 애플리케이션 패키지에 대한 레코드를 반환해요.
IN ... 을 생략하면 명령의 범위는 세션이 현재 사용 중인 데이터베이스가 있는지에 따라 달라져요:
- 데이터베이스를 현재 사용 중이면, 명령은 데이터베이스에서 볼 권한이 있는 객체를 반환해요. 이는
IN DATABASE를 지정한 것과 같은 효과예요. - 사용 중인 데이터베이스가 없으면, 명령은 계정에서 볼 권한이 있는 객체를 반환해요. 이는
IN ACCOUNT를 지정한 것과 같은 효과예요.
참고: 데이터베이스 컨텍스트에서 IN 절 없이 SHOW 명령을 사용하면 예상보다 적은 결과가 나올 수 있어요. IN 절을 사용하지 않으면 같은 이름의 객체는 한 번만 표시돼요.
출력
명령 출력은 사용자 함수 속성과 메타데이터를 다음 컬럼으로 제공해요:
| 컬럼 | 설명 |
|---|---|
| created_on | UDF가 생성된 타임스탬프예요. |
| name | UDF의 이름이에요. |
| schema_name | UDF가 존재하는 스키마의 이름이에요. |
| is_builtin | 사용자 정의 함수에는 항상 N이에요. 내장 함수를 포함한 모든 함수를 나열하는 명령은 SHOW FUNCTIONS를 참고해요. |
| is_aggregate | 함수가 집계 함수이면 Y, 그렇지 않으면 N이에요. |
| is_ansi | 현재 적용되지 않아요. |
| min_num_arguments | UDF에 대한 최소 인자 수예요. |
| max_num_arguments | UDF에 대한 최대 인자 수예요. |
| arguments | 인자와 반환 값의 데이터 타입이에요. |
| description | UDF에 대한 설명이에요. |
| catalog_name | UDF가 존재하는 데이터베이스의 이름이에요. |
| is_table_function | UDF가 테이블 함수이면 Y, 그렇지 않으면 N이에요. |
| valid_for_clustering | UDF를 CLUSTER BY 표현식에 사용할 수 있으면 Y, 그렇지 않으면 N이에요. |
| is_secure | UDF가 보안 UDF이면 Y, 그렇지 않으면 N이에요. |
| secrets | 함수의 SECRETS 매개변수가 지정한 시크릿 값의 맵이에요. 맵 키는 시크릿 변수 이름이고 맵 값은 시크릿 객체 이름이에요. |
| external_access_integrations | 함수의 EXTERNAL_ACCESS_INTEGRATION 매개변수가 지정한 외부 액세스 통합의 이름이에요. |
| is_external_function | 함수가 외부 함수이면 Y, 그렇지 않으면 N이에요. 외부 함수를 나열하는 명령은 SHOW EXTERNAL FUNCTIONS를 참고해요. |
| language | UDF의 프로그래밍 언어(예: PYTHON 또는 SQL)예요. |
| is_memoizable | 함수가 memoizable이면 Y, 그렇지 않으면 N이에요. |
| is_data_metric | 함수가 데이터 메트릭 함수이면 Y, 그렇지 않으면 N이에요. |
사용 메모
- 이 명령은 실행에 웨어하우스가 필요하지 않아요.
- 이 명령은 현재 사용자의 현재 역할에 액세스 권한이 하나 이상 부여된 객체만 반환해요.
MANAGE GRANTS액세스 권한은 보유자에게 계정의 모든 객체를 볼 수 있는 권한을 암묵적으로 부여해요. 기본적으로 계정 관리자(ACCOUNTADMIN 역할)와 보안 관리자(SECURITYADMIN 역할)만MANAGE GRANTS권한을 가져요.- 이 명령의 출력을 후처리하려면 파이프 연산자(
->>)나RESULT_SCAN함수를 사용할 수 있어요. 두 구성 모두 출력을 쿼리할 수 있는 결과 집합으로 취급해요. 예를 들어 SHOW 명령 출력에서 특정 컬럼을 선택하거나 행을 필터링할 수 있어요. - 출력 컬럼을 참조할 때는 큰따옴표로 묶은 식별자를 사용해요. 예를 들어
type출력 컬럼을 선택하려면SELECT "type"이라고 지정해요. SHOW 명령의 출력 컬럼 이름은 소문자이므로 큰따옴표로 묶은 식별자를 사용해야 해요. - 이 명령은 명령을 실행하는 역할의 액세스 권한에 따라 지정한 객체 유형에 대해 최대 1만 개의 레코드를 반환해요. 1만 개를 초과하는 결과를 보려면 Snowflake 정보 스키마의 해당 뷰(존재하는 경우)를 쿼리해요.
예제
현재 데이터베이스에서 볼 권한이 있는 모든 UDF 표시:
SHOW USER FUNCTIONS LIKE 'ALLOWED_REGIONS%' IN SCHEMA;
---------------------------------+--------------------------+-------------+------------+--------------+---------+-------------------+-------------------+-----------------------------------------+-----------------------+----------------+-------------------+----------------------+-----------+---------+-----------------------------+----------------------+----------+---------------+----------------+
created_on | name | schema_name | is_builtin | is_aggregate | is_ansi | min_num_arguments | max_num_arguments | arguments | description | catalog_name | is_table_function | valid_for_clustering | is_secure | secrets | external_access_integration | is_external_function | language | is_memoizable | is_data_metric |
---------------------------------+--------------------------+-------------+------------+--------------+---------+-------------------+-------------------+-----------------------------------------+-----------------------+----------------+-------------------+----------------------+-----------+---------+-----------------------------+----------------------+----------+---------------+----------------+
Fri, 23 Jun 1967 00:00:00 -0700 | ALLOWED_REGIONS | PUBLIC | N | N | N | 0 | 0 | ALLOWED_REGIONS() RETURN ARRAY | user-defined function | MEMO_FUNC_TEST | N | N | N | | | N | SQL | Y | N |
Fri, 23 Jun 1967 00:00:00 -0700 | ALLOWED_REGIONS_NON_MEMO | PUBLIC | N | N | N | 0 | 0 | ALLOWED_REGIONS_NON_MEMO() RETURN ARRAY | user-defined function | MEMO_FUNC_TEST | N | N | N | | | N | SQL | N | N |
---------------------------------+--------------------------+-------------+------------+--------------+---------+-------------------+-------------------+-----------------------------------------+-----------------------+----------------+-------------------+----------------------+-----------+---------+-----------------------------+----------------------+----------+---------------+----------------+