DuckDB_% Функции метаданных
DuckDB предоставляет набор функций таблиц, которые предоставляют метаданные о текущей базе данных. Эти функции находятся в схеме main и их имена начинаются с duckdb_.
Результат, возвращаемый функцией таблицы duckdb_, может использоваться как обычная таблица или представление. Например, вы можете использовать вызов функции duckdb_ в FROM-запуске SELECT-запроса, и вы можете ссылаться на столбцы возвращенного набора результатов в другом месте запроса, например, в WHERE-запуске.
Функции таблиц всё ещё являются функциями, и вы должны писать скобки после имени функции, чтобы вызвать её и получить возвращаемый набор результатов:
SELECT * FROM duckdb_settings();
В качестве альтернативы, вы можете также выполнить функции таблиц с использованием CALL-синтаксиса:
CALL duckdb_settings();
И в этом случае скобки обязательны.
Для некоторых функций
duckdb_%, также доступно одноимённое представление, которое также находится в схемеmain. Обычно эти представления выполняютSELECTна функции таблицыduckdb_с тем же именем, отфильтровывая те объекты, которые помечены как внутренние. Мы упоминаем об этом, потому что если вы случайно опустите скобки в вызове функции таблицыduckdb_, вы всё равно можете получить результат, но из одноимённого представления.
Пример:
Функция таблицы duckdb_views() возвращает все представления, включая те, которые помечены как внутренние:
SELECT * FROM duckdb_views();
Представление duckdb_views возвращает представления, которые не помечены как внутренние:
SELECT * FROM duckdb_views;
duckdb_columns
Функция duckdb_columns() предоставляет метаданные о столбцах, доступных в экземпляре DuckDB.
| Столбец | Описание | Тип |
|---|---|---|
database_name | Имя базы данных, которая содержит объект столбца. | VARCHAR |
database_oid | Внутренний идентификатор базы данных, которая содержит объект столбца. | BIGINT |
schema_name | SQL-имя схемы, которая содержит объект таблицы, определяющей этот столбец. | VARCHAR |
schema_oid | Внутренний идентификатор объекта схемы, который содержит таблицу столбца. | BIGINT |
table_name | SQL-имя таблицы, которая определяет столбец. | VARCHAR |
table_oid | Внутренний идентификатор (имя) объекта таблицы, который определяет столбец. | BIGINT |
column_name | SQL-имя столбца. | VARCHAR |
column_index | Уникальное положение столбца в его таблице. | INTEGER |
internal | true если столбец встроенный, false если он пользовательский. | BOOLEAN |
column_default | Значение по умолчанию столбца (выраженное в SQL). | VARCHAR |
is_nullable | true если столбец может содержать значения NULL, false если столбец не может содержать значения NULL. | BOOLEAN |
data_type | Имя типа данных столбца. | VARCHAR |
data_type_id | Внутренний идентификатор типа данных столбца. | BIGINT |
character_maximum_length | Всегда NULL. DuckDB текстовые типы не накладывают ограничений на длину значения на основе параметра типа длины. | INTEGER |
numeric_precision | Количество единиц (в основании, указанном numeric_precision_radix) используемых для хранения значений столбца. Для целочисленных и приблизительных числовых типов это количество битов. Для десятичных типов это количество позиций цифр. | INTEGER |
numeric_precision_radix | Система счисления единиц в столбце numeric_precision. Для целочисленных и приблизительных числовых типов это 2, что указывает, что точность выражается как количество битов. Для типа decimal это 10, что указывает, что точность выражается как количество десятичных знаков. | INTEGER |
numeric_scale | Применимо к типу decimal. Указывает максимальное количество дробных цифр (т.е. количество цифр, которые могут появиться после десятичной точки). | INTEGER |
Система представлений information_schema.columns предоставляет более стандартизированный способ получения метаданных о столбцах базы данных, но функция duckdb_columns также возвращает метаданные об внутренних объектах DuckDB. (Фактически, information_schema.columns реализована как запрос поверх duckdb_columns())
duckdb_constraints
Функция duckdb_constraints() предоставляет метаданные о доступных ограничениях в экземпляре DuckDB.
| Столбец | Описание | Тип |
|---|---|---|
database_name | Имя базы данных, которая содержит ограничение. | VARCHAR |
database_oid | Внутренний идентификатор базы данных, которая содержит ограничение. | BIGINT |
schema_name | SQL-имя схемы, которая содержит таблицу, на которой определено ограничение. | VARCHAR |
schema_oid | Внутренний идентификатор объекта схемы, который содержит таблицу, на которой определено ограничение. | BIGINT |
table_name | SQL-имя таблицы, на которой определено ограничение. | VARCHAR |
table_oid | Внутренний идентификатор (имя) объекта таблицы, на которой определено ограничение. | BIGINT |
constraint_index | Указывает положение ограничения в определении таблицы. | BIGINT |
constraint_type | Указывает тип ограничения. Применимые значения — CHECK, FOREIGN KEY, PRIMARY KEY, NOT NULL, UNIQUE. | VARCHAR |
constraint_text | Определение ограничения, выраженное в SQL-фразе. (Не обязательно полное или синтаксически правильное DDL-утверждение.) | VARCHAR |
expression | Если ограничение — ограничение проверки, определение проверяемого условия, иначе NULL. | VARCHAR |
constraint_column_indexes | Массив индексов столбцов таблицы, ссылающихся на столбцы, которые появляются в определении ограничения. | BIGINT[] |
constraint_column_names | Массив имён столбцов таблицы, которые появляются в определении ограничения. | VARCHAR[] |
Система представлений information_schema.referential_constraints и information_schema.table_constraints предоставляют более стандартизированный способ получения метаданных о ограничениях, но функция duckdb_constraints также возвращает метаданные об внутренних объектах DuckDB. (Фактически, information_schema.referential_constraints и information_schema.table_constraints реализованы как запрос поверх duckdb_constraints())
duckdb_databases
Функция duckdb_databases() перечисляет базы данных, доступные в текущем процессе DuckDB. Помимо базы данных, связанной при запуске, список также включает базы данных, которые были подключены позже к процессу DuckDB.
| Column | Description | Type |
|---|---|---|
database_name | Имя базы данных или псевдоним, если база данных была подключена с использованием ALIAS-описания. | VARCHAR |
database_oid | Внутренний идентификатор базы данных. | VARCHAR |
path | Путь к файлу, связанный с базой данных. | VARCHAR |
internal |
true указывает на системную или встроенную базу данных. Ложь указывает на базу данных, определённую пользователем. | BOOLEAN |
type | Тип указывает на тип RDBMS, реализованный подключенной базой данных. Для баз данных DuckDB это значение равно duckdb. | VARCHAR |
duckdb_dependencies
Функция duckdb_dependencies() предоставляет метаданные о зависимостях, доступных в экземпляре DuckDB.
| Column | Description | Type |
|---|---|---|
classid | Всегда 0 | BIGINT |
objid | Внутренний идентификатор объекта. | BIGINT |
objsubid | Всегда 0 | INTEGER |
refclassid | Всегда 0 | BIGINT |
refobjid | Внутренний идентификатор зависимого объекта. | BIGINT |
refobjsubid | Всегда 0 | INTEGER |
deptype | Тип зависимости. Либо обычный (n), либо автоматический (a). | VARCHAR |
duckdb_extensions
Функция duckdb_extensions() предоставляет метаданные о доступных расширениях в экземпляре DuckDB.
| Column | Description | Type |
|---|---|---|
extension_name | Имя расширения. | VARCHAR |
loaded | Загружено, если расширение загружено, не загружено, если нет. | BOOLEAN |
installed | Установлено, если расширение установлено, не установлено, если нет. | BOOLEAN |
install_path | Встроенное, если расширение встроенное, иначе путь к файлу исполняемого файла, реализующего расширение. | VARCHAR |
description | Читаемый человеком текст, описывающий функциональность расширения. | VARCHAR |
aliases | Список альтернативных имён для этого расширения. | VARCHAR[] |
duckdb_functions
Функция duckdb_functions() предоставляет метаданные о функциях (включая макросы), доступных в экземпляре DuckDB.
| Column | Description | Type |
|---|---|---|
database_name | Имя базы данных, содержащей эту функцию. | VARCHAR |
schema_name | Имя SQL схемы, в которой находится функция. | VARCHAR |
function_name | Имя SQL функции. | VARCHAR |
function_type | Вид функции. Значение — одно из: table,scalar,aggregate,pragma,macro
| VARCHAR |
description | Описание этой функции (всегда NULL) | VARCHAR |
return_type | Логическое имя типа данных возвращаемого значения. Применимо для скалярных и агрегатных функций. | VARCHAR |
parameters | Если у функции есть параметры, список имён параметров. | VARCHAR[] |
parameter_types | Если у функции есть параметры, список логических имён типов данных, соответствующих списку параметров. | VARCHAR[] |
varargs | Имя типа данных в случае, если функция имеет переменное количество аргументов, или NULL, если функция не имеет переменного количества аргументов. | VARCHAR |
macro_definition | Если это макрос, выражение SQL, которое его определяет. | VARCHAR |
has_side_effects |
Чистая функция, если это чистая функция. Изменяет состояние базы данных (например, функции последовательности nextval(), и curval()) если функция изменяет состояние базы данных. | BOOLEAN |
function_oid | Внутренний идентификатор этой функции | BIGINT |
duckdb_indexes
Функция duckdb_indexes() предоставляет метаданные о вторичных индексах, доступных в экземпляре DuckDB.
| Column | Description | Type |
|---|---|---|
database_name | Имя базы данных, содержащей этот индекс. | VARCHAR |
database_oid | Внутренний идентификатор базы данных, содержащей индекс. | BIGINT |
schema_name | Имя SQL схемы, содержащей таблицу со вторичным индексом. | VARCHAR |
schema_oid | Внутренний идентификатор объекта схемы. | BIGINT |
index_name | Имя этого вторичного индекса SQL. | VARCHAR |
index_oid | Идентификатор объекта этого индекса. | BIGINT |
table_name | Имя таблицы с индексом. | VARCHAR |
table_oid | Внутренний идентификатор (имя) объекта таблицы. | BIGINT |
is_unique |
Создан с модификатором UNIQUE, если индекс был создан с модификатором UNIQUE, не создан, если нет. | BOOLEAN |
is_primary | Всегда false
| BOOLEAN |
expressions | Всегда NULL
| VARCHAR |
sql | Определение индекса, выраженное как CREATE INDEX SQL-оператор. | VARCHAR |
Обратите внимание, что duckdb_indexes предоставляет только метаданные о вторичных индексах, то есть тех индексах, созданных явными CREATE INDEX операторами. Первичные ключи, внешние ключи и UNIQUE ограничения поддерживаются с помощью индексов, но их подробности включены в функцию duckdb_constraints().
duckdb_keywords
Функция duckdb_keywords() предоставляет метаданные о ключевых словах и зарезервированных словах DuckDB.
| Столбец | Описание | Тип |
|---|---|---|
keyword_name | Ключевое слово. | VARCHAR |
keyword_category | Указывает категорию ключевого слова. Значения — column_name, reserved, type_function и unreserved. | VARCHAR |
duckdb_memory
Функция duckdb_memory() предоставляет метаданные о менеджере буферов DuckDB.
| Столбец | Описание | Тип |
|---|---|---|
tag | Тег памяти. Он имеет одно из следующих значений: BASE_TABLE, HASH_TABLE, PARQUET_READER, CSV_READER, ORDER_BY, ART_INDEX, COLUMN_DATA, METADATA, OVERFLOW_STRINGS, IN_MEMORY_TABLE, ALLOCATOR, EXTENSION. | VARCHAR |
memory_usage_bytes | Используемая память (в байтах). | BIGINT |
temporary_storage_bytes | Используемое дисковое пространство (в байтах). | BIGINT |
duckdb_optimizers
Функция duckdb_optimizers() предоставляет метаданные о правилах оптимизации (например, expression_rewriter, filter_pushdown) доступных в экземпляре DuckDB. Их можно выборочно отключить с помощью PRAGMA disabled_optimizers.
| Столбец | Описание | Тип |
|---|---|---|
name | Имя правила оптимизации. | VARCHAR |
duckdb_schemas
Функция duckdb_schemas() предоставляет метаданные о схемах, доступных в экземпляре DuckDB.
| Столбец | Описание | Тип |
|---|---|---|
oid | Внутренний идентификатор объекта схемы. | BIGINT |
database_name | Имя базы данных, содержащей эту схему. | VARCHAR |
database_oid | Внутренний идентификатор базы данных, содержащей схему. | BIGINT |
schema_name | SQL-имя схемы. | VARCHAR |
internal |
true если это внутренняя (встроенная) схема, false если это схема, определенная пользователем. | BOOLEAN |
sql | Всегда NULL | VARCHAR |
Представление системы information_schema.schemata обеспечивает более стандартизованный способ получения метаданных о схемах баз данных.
duckdb_secrets
Функция duckdb_secrets() предоставляет метаданные о секретах, доступных в экземпляре DuckDB.
| Столбец | Описание | Тип |
|---|---|---|
name | Имя секрета. | VARCHAR |
type | Тип секрета, например, S3, GCS, R2, AZURE. | VARCHAR |
provider | Поставщик секрета. | VARCHAR |
persistent | Указывает, является ли секрет постоянным. | BOOLEAN |
storage | Бэкенд для хранения секрета. | VARCHAR |
scope | Область действия секрета. | VARCHAR[] |
secret_string | Возвращает содержимое секрета как строку. Конфиденциальная информация, например, ключи доступа, замаскирована. | VARCHAR |
duckdb_sequences
Функция duckdb_sequences() предоставляет метаданные о последовательностях, доступных в экземпляре DuckDB.
| Столбец | Описание | Тип |
|---|---|---|
database_name | Имя базы данных, содержащей эту последовательность | VARCHAR |
database_oid | Внутренний идентификатор базы данных, содержащей последовательность. | BIGINT |
schema_name | SQL-имя схемы, содержащей объект последовательности. | VARCHAR |
schema_oid | Внутренний идентификатор объекта схемы, содержащего объект последовательности. | BIGINT |
sequence_name | SQL-имя, идентифицирующее последовательность в рамках схемы. | VARCHAR |
| ... (rest of the table) ... |
Атрибуты, такие как temporary, start_value и т. д., соответствуют различным параметрам, доступным в операторе CREATE SEQUENCE, и подробно документированы там. Обратите внимание, что атрибуты всегда будут заполнены в результирующем наборе duckdb_sequences, даже если они не были явно указаны в операторе CREATE SEQUENCE.
Название колонки
last_valueпредполагает, что она содержит последнее значение, которое было извлечено из последовательности, но это не так. Это либоnull, если значение никогда не извлекалось из последовательности, или1(если из последовательности когда-либо извлекалось значение).Если последовательность циклическая, то она начнётся заново с границы своего диапазона, а не обязательно со значения, указанного в качестве начального.
duckdb_settings
Функция duckdb_settings() предоставляет метаданные о настройках, доступных в экземпляре DuckDB.
| Столбец | Описание | Тип |
|---|---|---|
name | Имя настройки. | VARCHAR |
value | Текущее значение настройки. | VARCHAR |
description | Описание настройки. | VARCHAR |
input_type | Логический тип данных значения настройки. | VARCHAR |
Различные настройки описаны на странице конфигурации.
duckdb_tables
Функция duckdb_tables() предоставляет метаданные о баз данных доступных в экземпляре DuckDB.
| Столбец | Описание | Тип |
|---|---|---|
database_name | Имя базы данных, содержащей эту таблицу. | VARCHAR |
database_oid | Внутренний идентификатор базы данных, содержащей таблицу. | BIGINT |
schema_name | Имя схемы SQL, содержащей базу данных. | VARCHAR |
schema_oid | Внутренний идентификатор объекта схемы, содержащего базу данных. | BIGINT |
table_name | Имя базы данных SQL. | VARCHAR |
table_oid | Внутренний идентификатор объекта базы данных. | BIGINT |
internal |
false если это таблица, определённая пользователем. | BOOLEAN |
temporary | Является ли это временной таблицей. Временные таблицы не сохраняются и видны только в текущем соединении. | BOOLEAN |
has_primary_key |
true если этот объект таблицы определяет PRIMARY KEY. | BOOLEAN |
estimated_size | Приблизительное число строк в таблице. | BIGINT |
column_count | Количество столбцов, определённых этим объектом. | BIGINT |
index_count | Количество индексов, связанных с этой таблицей. Это число включает все вторичные индексы, а также внутренние индексы, сгенерированные для поддержания PRIMARY KEY и/или UNIQUE ограничений. | BIGINT |
check_constraint_count | Число ограничений CHECK, активных для столбцов в таблице. | BIGINT |
sql | Определение этого объекта, выраженное в виде SQL CREATE TABLE-выражения. | VARCHAR |
Представление information_schema.tables системных данных предоставляет более стандартизованный способ получения метаданных о таблицах базы данных, который также включает представления. Но результат, возвращённый функцией duckdb_tables, содержит несколько столбцов, которые не включены в information_schema.tables.
duckdb_temporary_files
Функция duckdb_temporary_files() предоставляет метаданные о временных файлах, записанных DuckDB на диск для разгрузки данных из памяти. Эта функция в основном предназначена для отладки и тестирования.
| Столбец | Описание | Тип |
|---|---|---|
path | Имя временного файла. | VARCHAR |
size | Размер временного файла в байтах. | BIGINT |
duckdb_types
Функция duckdb_types() предоставляет метаданные о типах данных, доступных в экземпляре DuckDB.
| Столбец | Описание | Тип |
|---|---|---|
database_name | Имя базы данных, содержащей эту схему. | VARCHAR |
database_oid | Внутренний идентификатор базы данных, содержащей тип данных. | BIGINT |
schema_name | Имя схемы SQL, содержащей определение типа. Всегда main. | VARCHAR |
schema_oid | Внутренний идентификатор объекта схемы. | BIGINT |
type_name | Имя или псевдоним этого типа данных. | VARCHAR |
type_oid | Внутренний идентификатор объекта типа данных. Если NULL, то это псевдоним типа (как определено в столбце logical_type). | BIGINT |
type_size | Количество байтов, необходимых для представления значения этого типа в памяти. | BIGINT |
logical_type | «Каноническое» имя этого типа данных. Один и тот же logical_type может ссылаться на несколько типов, имеющих разные type_name. | VARCHAR |
type_category | Категория, к которой принадлежит этот тип. Типы данных в одной категории обычно демонстрируют сходное поведение, когда значения этого типа используются в выражениях. Например, категория типа NUMERIC включает целые числа, десятичные и числа с плавающей точкой. | VARCHAR |
internal | Внутренний (встроенный) или пользовательский объект. | BOOLEAN |
duckdb_variables
Функция duckdb_variables() предоставляет метаданные о переменных, доступных в экземпляре DuckDB.
| Столбец | Описание | Тип |
|---|---|---|
name | Имя переменной, например, x. | VARCHAR |
value | Значение переменной, например, 12. | VARCHAR |
type | Тип переменной, например, INTEGER. | VARCHAR |
duckdb_views
Функция duckdb_views() предоставляет метаданные о представлениях, доступных в экземпляре DuckDB.
| Column | Описание | Тип |
|---|---|---|
database_name | Имя базы данных, содержащей этот вид. | VARCHAR |
database_oid | Внутренний идентификатор базы данных, содержащей этот вид. | BIGINT |
schema_name | Имя схемы SQL, в которой находится вид. | VARCHAR |
schema_oid | Внутренний идентификатор объекта схемы, содержащего вид. | BIGINT |
view_name | Имя SQL объекта вида. | VARCHAR |
view_oid | Внутренний идентификатор этого объекта вида. | BIGINT |
internal |
true если это внутренний (встроенный) вид, false если это пользовательский вид. | BOOLEAN |
temporary |
true если это временный вид. Временные виды не сохраняются и видны только в текущем подключении. | BOOLEAN |
column_count | Количество столбцов, определенных этим объектом вида. | BIGINT |
sql | Определение этого объекта, выраженное как SQL DDL-выражение. | VARCHAR |
Система information_schema.tables предоставляет более стандартизированный способ получения метаданных о представлениях базы данных, которые также включают базовые таблицы. Но результат, возвращаемый duckdb_views, также содержит определения внутренних объектов представления, а также несколько столбцов, которые не включены в information_schema.tables.
© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/sql/meta/duckdb_table_functions.html