Поделиться через


Схема сведений

Применяется к:отмечено да Databricks SQL отмечено да Databricks Runtime 10.4 LTS и выше отмечено да только для каталога Unity.

В каталоге SYSTEMINFORMATION_SCHEMA используется стандартная схема SQL, которая предоставляет метаданные о объектах во всех каталогах в хранилище метаданных. Он не содержит метаданных об hive_metastore объектах.

Отдельно каждый каталог, созданный в Unity Catalog, также автоматически включает information_schema метаданные только об объектах в этом каталоге.

Оба типа схем информации автоматически фильтруют результаты, чтобы включить только объекты, к которых у вас есть права доступа к каталогу Unity. Это поведение отличается от других системных таблиц Azure Databricks. Узнайте , как системные таблицы информационной схемы обрабатывают разрешения.

Цель схемы сведений — предоставить самоописывающееся API на основе SQL с учетом привилегий для доступа к метаданным каталога.

Как системные таблицы схемы информации обрабатывают разрешения

system.information_schema отличается от других системных таблиц в том, что он реализует автоматическую фильтрацию. Это означает, что вы видите только объекты (каталоги, схемы, таблицы, столбцы и т. д.), к которым вы имеете права доступа в каталоге Unity. Если ваши привилегии изменяются, то, что вы видите в схеме сведений, изменяется соответствующим образом. Например, при запросе information_schema.tablesвозвращаются только строки для таблиц с разрешением на просмотр.

Как и все остальные системные таблицы, вам нужны явные USE и SELECT разрешения для доступа и запроса из схемы информации.

Диаграмма отношений сущностей информационной схемы

На следующей схеме связи сущностей (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 Выводит список субъектов, имеющих привилегии в учетных данных.
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 Содержит метаданные объемов, связанные с томом.

Примечания.

  • Схема сведений реализует фильтрацию с учетом привилегий. Вы автоматически видите только объекты, к которых у вас есть разрешения каталога Unity. Узнайте , как системные таблицы информационной схемы обрабатывают разрешения.
  • Для некоторых изменений метаданных каталога может понадобиться ручная синхронизация с использованием REPAIR TABLE, чтобы они отразились в информационной схеме. Дополнительные сведения см. в разделе REPAIR TABLE.
  • Все идентификаторы , кроме имен столбцов и тегов, хранятся в схеме сведений в нижнем регистре STRING. Для повышения производительности запросов избегайте использования таких функций, как LOWER() или UPPER() на столбце идентификатора. Вместо этого сравнивайте идентификаторы непосредственно с использованием строчных значений.
  • Чтобы предотвратить истечение времени ожидания запроса, при запросе схемы информации применяются выборочные фильтры (например, WHERE table_catalog = 'main' AND table_schema = 'default'). См. документацию выше для полного списка столбцов, которые можно использовать в качестве фильтров для каждой таблицы информационной схемы.
    • Обратите внимание, что LIMIT pushdown в настоящее время не поддерживается, поэтому, хотя он может усечь результаты, это не улучшит производительность.

Примеры

> 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