적용 대상: Databricks SQL
Databricks Runtime 10.4 LTS 이상
Unity 카탈로그에만 적용
INFORMATION_SCHEMA
는 Unity 카탈로그에서 만든 모든 카탈로그에 제공되는 SQL 표준 기반 스키마입니다.
정보 스키마 내에서는 사용자가 볼 수 있는 권한이 있는 스키마 카탈로그에 기록된 개체를 설명하는 뷰들을 찾을 수 있습니다.
SYSTEM
카탈로그의 정보 스키마는 메타스토어 내의 모든 카탈로그에서 개체에 대한 정보를 반환합니다. 정보 스키마 시스템 테이블에는 hive_metastore
개체에 대한 메타데이터가 포함되어 있지 않습니다.
정보 스키마의 목적은 메타데이터에 SQL 기반 자체 설명 API를 제공하는 것입니다.
정보 스키마의 엔터티 관계 다이어그램
다음 ER(엔터티 관계) 다이어그램은 정보 스키마 뷰의 하위 집합과 정보 스키마 뷰가 서로 어떻게 관련되는지에 대한 개요를 제공합니다.
정보 스키마 뷰
이름 | 설명 |
---|---|
CATALOG_PRIVILEGES | 카탈로그에 대해 권한이 있는 주체들을 나열합니다. |
CATALOG_PROVIDER_SHARE_USAGE | 카탈로그에 탑재된 공급자 공유에 대해 설명합니다. |
CATALOG_TAGS | 카탈로그에 적용된 태그를 포함합니다. |
CATALOGS | 카탈로그에 대해 설명합니다. |
CHECK_CONSTRAINTS | 향후 사용을 위해 예약되어 있습니다. |
COLUMN_MASKS | 카탈로그의 테이블 열에 있는 열 마스킹을 설명합니다. |
COLUMN_TAGS | 테이블 내의 열 태그 지정 메타데이터를 포함합니다. |
COLUMNS | 카탈로그의 테이블 및 뷰 열에 대해 설명합니다. |
CONNECTION_PRIVILEGES | 외부 연결에 대한 권한이 있는 주체를 나열합니다. |
CONNECTIONS | 외국의 관계를 설명합니다. |
CONSTRAINT_COLUMN_USAGE | 카탈로그의 열을 참조하는 제약 조건에 대해 설명합니다. |
CONSTRAINT_TABLE_USAGE | 카탈로그의 테이블을 참조하는 제약 조건에 대해 설명합니다. |
CREDENTIAL_PRIVILEGES | 자격 증명에 권한이 있는 보안 주체를 나열합니다. |
CREDENTIALS | 자격 증명을 설명합니다. |
EXTERNAL_LOCATION_PRIVILEGES | 외부 위치에 대한 권한이 있는 보안 주체를 나열합니다. |
EXTERNAL_LOCATIONS | 외부 위치를 설명합니다. |
INFORMATION_SCHEMA_CATALOG_NAME | 이 정보 스키마 카탈로그의 이름을 반환합니다. |
KEY_COLUMN_USAGE | 카탈로그 내의 기본 또는 외래 키 제약 조건의 열을 나열합니다. |
METASTORE_PRIVILEGES | 현재 메타스토어에 대해 권한을 가진 주체 목록을 나열합니다. |
METASTORES | 현재 메타스토어를 설명합니다. |
PARAMETERS | 카탈로그의 루틴(함수)의 매개 변수에 대해 설명합니다. |
PROVIDERS | 공급자에 대해 설명합니다. |
RECIPIENT_ALLOWED_IP_RANGES | 받는 사람에게 허용되는 IP 범위를 나열합니다. |
RECIPIENT_TOKENS | 받는 사람에 대한 토큰을 나열합니다. |
RECIPIENTS | 받는 사람을 설명합니다. |
REFERENTIAL_CONSTRAINTS | 카탈로그에 정의된 참조(외래 키) 제약 조건에 대해 설명합니다. |
ROUTINE_COLUMNS | 테이블 값 함수의 결과 열에 대해 설명합니다. |
ROUTINE_PRIVILEGES | 카탈로그에서 루틴에 대한 권한이 있는 주체를 나열합니다. |
ROUTINES | 카탈로그의 루틴(함수)을 설명합니다. |
ROW_FILTERS | 카탈로그의 테이블에 대한 행 필터에 대해 설명합니다. |
SCHEMA_PRIVILEGES | 카탈로그 내 스키마에 대해 권한을 가진 주체를 열거합니다. |
SCHEMA_TAGS | 스키마 내의 스키마 태그 지정 메타데이터를 포함합니다. |
SCHEMA_SHARE_USAGE | 공유에 참조된 스키마를 설명합니다. |
SCHEMATA | 카탈로그 내의 스키마에 대해 설명합니다. |
SHARE_RECIPIENT_PRIVILEGES | 공유에 대한 액세스 권한이 부여된 받는 사람을 설명합니다. |
SHARES | 공유에 대해 설명합니다. |
STORAGE_CREDENTIAL_PRIVILEGES | [더 이상 사용되지 않음] 스토리지 자격 증명에 대해 권한을 가진 원칙 목록을 나열합니다. |
STORAGE_CREDENTIALS | [사용되지 않음] 스토리지 자격 증명에 대해 설명합니다. |
TABLE_CONSTRAINTS | 카탈로그 내의 모든 기본 및 외래 키 제약 조건에 대한 메타데이터를 설명합니다. |
TABLE_PRIVILEGES | 카탈로그의 테이블 및 뷰에 대한 권한이 있는 보안 주체를 나열합니다. |
TABLE_SHARE_USAGE | 공유에서 참조되는 테이블을 설명합니다. |
TABLE_TAGS | 테이블 내의 테이블 태그 지정 메타데이터를 포함합니다. |
TABLES | 카탈로그 내에 정의된 테이블 및 뷰에 대해 설명합니다. |
VIEWS | 카탈로그의 뷰에 대한 특정 정보 보기에 대해 설명합니다. |
VOLUMES | 카탈로그에 정의된 볼륨에 대해 설명합니다. |
VOLUME_PRIVILEGES | 카탈로그의 볼륨에 대한 권한이 있는 보안 주체를 나열합니다. |
VOLUME_TAGS | 볼륨에 적용된 볼륨 태그 지정 메타데이터를 포함합니다. |
노트
- 일부 카탈로그 메타데이터 변경 내용을 정보 스키마에 반영하려면 수동 동기화를 사용해야
REPAIR TABLE
할 수 있습니다. 자세한 내용은 REPAIR TABLE를 참조하세요. - 열 및 태그 이름을 제외한 모든 식별자는 정보 스키마에 소문
STRING
자로 저장됩니다. 쿼리 성능을 위해LOWER()
이나UPPER()
같은 함수를 식별자 열에서는 사용하지 마십시오. 대신 소문자 값을 사용하여 식별자를 직접 비교합니다. - 쿼리 시간 제한을 방지하려면 정보 스키마를 쿼리할 때 선택적 필터를 적용합니다(예:
WHERE table_catalog = 'main' AND table_schema = 'default'
). 각 정보 스키마 테이블에 대한 필터로 사용할 수 있는 열의 전체 목록은 위의 설명서를 참조하세요.-
LIMIT
푸시다운은 현재 지원되지 않으므로 결과를 잘라낼 수 있지만 성능은 향상되지 않습니다.
-
예제
> SELECT table_name, column_name
FROM information_schema.columns
WHERE data_type = 'DOUBLE'
AND table_schema = 'information_schema';
다음은 시스템 수준 정보 스키마 테이블을 사용하는 워크플로의 예입니다.
지난 24시간 동안 만들어진 모든 테이블을 보려면 쿼리가 다음과 같을 수 있습니다.
> SELECT table_name, table_owner, created_by, last_altered, last_altered_by, table_catalog
FROM system.information_schema.tables
WHERE datediff(now(), last_altered) < 1;
각 스키마에 있는 테이블 수를 보려면 다음 예제를 고려하세요.
> SELECT table_schema, count(table_name)
FROM system.information_schema.tables
WHERE table_schema = 'tpch'
GROUP BY table_schema
ORDER BY 2 DESC