信息架构

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime 10.4 LTS 及更高版本 勾选“是” 仅 Unity Catalog

INFORMATION_SCHEMA 是一个基于 SQL 标准版的架构,在 Unity Catalog 上创建的每个目录中都提供。

在信息架构中,可以找到一组视图,这些视图描述了你有权查看的架构目录中的已知对象。 SYSTEM 目录的信息架构返回有关元存储中所有目录的对象的信息。 信息架构系统表不包含有关 hive_metastore 对象的元数据。

信息架构的目的是为元数据提供基于 SQL 的自描述 API。

信息架构的实体关系图

下面的实体关系 (ER) 图概述了一部分信息架构视图以及这些视图相互关联的方式。

信息架构的 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 列出对凭据具有特权的主体。
凭据 描述凭据。
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 包含应用于卷的卷标记元数据。

说明

虽然在 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