정보 스키마
적용 대상: Databricks SQL Databricks Runtime 10.4 LTS 이상 Unity Catalog만
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 | 외신 연결에 대한 권한이 있는 보안 주체를 나열합니다. |
연결 | 외세의 연결을 설명합니다. |
CONSTRAINT_COLUMN_USAGE | 카탈로그의 열을 참조하는 제약 조건에 대해 설명합니다. |
CONSTRAINT_TABLE_USAGE | 카탈로그의 테이블을 참조하는 제약 조건에 대해 설명합니다. |
CREDENTIAL_PRIVILEGES | 자격 증명에 대한 권한이 있는 보안 주체를 나열합니다. |
자격 증명 | 자격 증명을 설명합니다. |
EXTERNAL_LOCATION_PRIVILEGES | 외부 위치에 대한 권한이 있는 보안 주체를 나열합니다. |
EXTERNAL_LOCATIONS | 외부 위치를 설명합니다. |
INFORMATION_SCHEMA_CATALOG_NAME | 이 정보 스키마의 카탈로그 이름을 반환합니다. |
KEY_COLUMN_USAGE | 카탈로그 내의 기본 또는 외래 키 제약 조건의 열을 나열합니다. |
METASTORE_PRIVILEGES | 현재 메타스토어에 대한 권한이 있는 보안 주체를 나열합니다. |
메타스토어 | 현재 메타스토어를 설명합니다. |
매개 변수 | 카탈로그의 루틴(함수)의 매개 변수에 대해 설명합니다. |
PROVIDERS | 공급자에 대해 설명합니다. |
RECIPIENT_ALLOWED_IP_RANGES | 받는 사람에게 허용되는 IP 범위를 나열합니다. |
RECIPIENT_TOKENS | 받는 사람에 대한 토큰을 나열합니다. |
받는 사람 | 받는 사람을 설명합니다. |
REFERENTIAL_CONSTRAINTS | 카탈로그에 정의된 참조(외래 키) 제약 조건에 대해 설명합니다. |
ROUTINE_COLUMNS | 테이블 반환 함수의 결과 열에 대해 설명합니다. |
ROUTINE_PRIVILEGES | 카탈로그의 루틴에 대한 권한이 있는 보안 주체를 나열합니다. |
ROUTINES | 카탈로그의 루틴(함수)을 설명합니다. |
ROW_FILTERS | 카탈로그의 테이블에 대한 행 필터에 대해 설명합니다. |
SCHEMA_PRIVILEGES | 카탈로그의 스키마에 대한 권한이 있는 보안 주체를 나열합니다. |
SCHEMA_TAGS | 스키마 내의 스키마 태그 지정 메타데이터를 포함합니다. |
SCHEMA_SHARE_USAGE | 공유에서 참조되는 스키마에 대해 설명합니다. |
SCHEMATA | 카탈로그 내의 스키마에 대해 설명합니다. |
SHARE_RECIPIENT_PRIVILEGES | 공유에 대한 액세스 권한이 부여된 받는 사람을 설명합니다. |
공유 | 공유에 대해 설명합니다. |
STORAGE_CREDENTIAL_PRIVILEGES | [사용되지 않음] 스토리지 자격 증명에 대한 권한이 있는 보안 주체를 나열합니다. |
STORAGE_CREDENTIALS | [사용되지 않음] 스토리지 자격 증명에 대해 설명합니다. |
TABLE_CONSTRAINTS | 카탈로그 내의 모든 기본 및 외래 키 제약 조건에 대한 메타데이터를 설명합니다. |
TABLE_PRIVILEGES | 카탈로그의 테이블 및 뷰에 대한 권한이 있는 보안 주체를 나열합니다. |
TABLE_SHARE_USAGE | 공유에서 참조되는 테이블을 설명합니다. |
TABLE_TAGS | 테이블 내의 테이블 태그 지정 메타데이터를 포함합니다. |
테이블 | 카탈로그 내에 정의된 테이블 및 뷰에 대해 설명합니다. |
VIEWS | 카탈로그의 뷰에 대한 특정 정보 보기에 대해 설명합니다. |
볼륨 | 카탈로그에 정의된 볼륨에 대해 설명합니다. |
VOLUME_PRIVILEGES | 카탈로그의 볼륨에 대한 권한이 있는 보안 주체를 나열합니다. |
VOLUME_TAGS | 볼륨에 적용된 볼륨 태그 지정 메타데이터를 포함합니다. |
주의
식별자는 SQL 문에서 참조할 때 대/소문자를 구분하지 않지만 정보 스키마에는 STRING
으로 저장됩니다.
즉, 식별자가 저장된 경우를 사용하여 검색하거나 ilike와 같은 함수를 사용해야 합니다.
예제
> 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