适用于: Databricks SQL
Databricks Runtime 10.4 LTS 及更高版本
仅 Unity Catalog
INFORMATION_SCHEMA
是一个基于 SQL 标准版的架构,在 Unity Catalog 上创建的每个目录中都提供。
在信息架构中,可以找到一组视图,这些视图描述了你有权查看的架构目录已知的对象。
SYSTEM
目录的信息架构返回有关元存储中所有目录的对象的信息。 信息架构系统表不包含有关 hive_metastore
对象的元数据。
信息架构的目的是为元数据提供基于 SQL 的自描述 API。
下面的实体关系 (ER) 图概述了一部分信息架构视图以及这些视图相互关联的方式。
名称 | 描述 |
---|---|
CATALOG_PRIVILEGES | 列出对目录拥有特权的主体。 |
CATALOG_PROVIDER_SHARE_USAGE | 描述装载到目录中的提供程序共享。 |
CATALOG_TAGS | 包含已应用于目录的标记。 |
目录 | 描述目录。 |
CHECK_CONSTRAINTS | 保留供将来使用。 |
COLUMN_MASKS | 描述目录中表列上的列掩码。 |
COLUMN_TAGS | 包含表中的列标记元数据。 |
COLUMNS | 描述目录中表和视图的列。 |
连接权限 | 列出对外部连接拥有特权的主体。 |
连接 | 描述外部连接。 |
CONSTRAINT_COLUMN_USAGE | 描述引用目录中列的约束。 |
约束表使用情况 | 描述引用目录中表的约束。 |
CREDENTIAL_PRIVILEGES | 列出对凭证拥有特权的主体。 |
凭证 | 描述凭证。 |
外部位置权限 | 列出对外部位置拥有特权的主体。 |
EXTERNAL_LOCATIONS | 描述外部位置。 |
信息架构目录名称 | 返回此信息架构目录的名称。 |
KEY_COLUMN_USAGE | 列出目录中主键或外键约束的列。 |
METASTORE_PRIVILEGES | 列出对当前元存储拥有特权的主体。 |
METASTORES | 描述当前元存储。 |
参数 | 描述目录中例程(函数)的参数。 |
PROVIDERS | 描述提供程序。 |
接收方允许的IP范围 | 列出收件人允许的 IP 范围。 |
RECIPIENT_TOKENS | 列出收件人的令牌。 |
收件人 | 描述收件人。 |
参考约束 | 描述目录中定义的引用(外键)约束。 |
ROUTINE_COLUMNS | 描述表值函数的结果列。 |
例程权限 | 列出对目录中的例程拥有特权的主体。 |
ROUTINES | 描述目录中的例程(函数)。 |
ROW_FILTERS | 描述目录中表的行筛选器。 |
SCHEMA_PRIVILEGES | 列出对目录中的架构拥有特权的主体。 |
SCHEMA_TAGS | 包含架构中的架构标记元数据。 |
SCHEMA_SHARE_USAGE | 描述在共享中引用的架构。 |
图式 | 描述目录中的架构。 |
SHARE_RECIPIENT_PRIVILEGES | 描述被授予共享访问权限的收件人。 |
SHARES | 描述共享。 |
STORAGE_CREDENTIAL_PRIVILEGES | [已弃用] 列出对存储凭证拥有特权的主体。 |
STORAGE_CREDENTIALS | [已弃用] 描述存储凭证。 |
TABLE_CONSTRAINTS | 描述目录中所有主键和外键约束的元数据。 |
TABLE_PRIVILEGES | 列出对目录中的表和视图拥有特权的主体。 |
TABLE_SHARE_USAGE | 描述在共享中引用的表。 |
TABLE_TAGS | 包含表中的表标记元数据。 |
表 | 描述目录中定义的表和视图。 |
VIEWS | 描述有关目录中视图的视图特定信息。 |
VOLUMES | 描述在目录中定义的卷。 |
VOLUME_PRIVILEGES | 列出对目录中的卷拥有特权的主体。 |
VOLUME_TAGS | 包含应用于卷的卷标记元数据。 |
- 除列名和标记名称 之外 的所有标识符都以小写
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
- SHOW
- 描述