Автор: agavra | Целевая версия: 5.4 | Статус: объединено | Обсуждение: https://github.com/confluentinc/ksql/pull/2894
Краткое содержание: Внедрение функции, которая упрощает работу с пользовательскими типами в KSQL путём создания псевдонимов для сложных объявлений типов.
В Kafka часто встречаются очень сложные вложенные структуры данных, и схемы могут быть вложены в другие схемы. Желательно иметь возможность определить эту пользовательскую схему в KSQL один раз и ссылаться на неё во всех будущих утверждениях. Например, представьте следующие объявления схем:
CREATE TYPE ADDRESS AS STRUCT<number INTEGER, street VARCHAR, city VARCHAR>;
CREATE TYPE PERSON AS STRUCT<firstname VARCHAR, lastname VARCHAR, address ADDRESS>;
CREATE TYPE COMPANY AS STRUCT<name VARCHAR, headquarters ADDRESS>;
С помощью этой функции организации могут использовать существующие схемы в своих запросах KSQL и обмениваться данными с другими подразделениями своей организации.
Интеграция со Schema Registry не рассматривается в рамках этого объёма работ.
Реальные данные сложны, вложенны и референтны. Эта функция значительно улучшит взаимодействие пользователей со сложными схемами.
CREATE TYPE <type_name> AS <type>;
Синтаксис CREATE TYPE
позволит пользователям KSQL регистрировать псевдоним типа непосредственно в SQL (в интерактивном или безголовом режимах). Любые типы, зарегистрированные с помощью этой команды, можно использовать в любом будущем утверждении.
Попытки зарегистрировать один и тот же тип дважды без соответствующего DROP TYPE
завершатся неудачно.
DROP TYPE <type_name>;
Синтаксис DROP TYPE
позволит пользователям KSQL удалять псевдоним типа из KSQL.
SHOW TYPES;
Команда SHOW TYPES
выведет список всех пользовательских типов и их определений. Пример вывода для этой команды будет выглядеть следующим образом:
|---------------|--------------------------------------------------------------|------------------|
| name | definition | source |
|---------------|--------------------------------------------------------------|------------------|
| ADDRESS | STRUCT<number INTEGER, street VARCHAR, city VARCHAR> | types.sql |
| PERSON | STRUCT<firstname VARCHAR, lastname VARCHAR, address ADDRESS> | types.sql |
| COMPANY | STRUCT<name VARCHAR, headquarters ADDRESS> | CLI |
|---------------|--------------------------------------------------------------|------------------|
ksql.extension.dir
теперь также распознаёт файлы .sql
, содержащие только команды CREATE TYPE
. Эти команды будут выполняться перед компиляцией любых UDF, поэтому эти объявления пользовательских типов можно использовать в аннотациях @Udf
. Они будут загружаться в естественном порядке, чтобы гарантировать детерминированное поведение загрузки (используя Comparator#naturalOrder
и String#CompareTo
).
Будет фаза переписчика, которая заменит любой псевдонимный тип полной схемой. Для UDF аннотация будет искать схему напрямую и компилировать UDF с использованием полной схемы. Нет ограничений на то, какие типы можно добавлять в качестве пользовательских, и пользовательские типы могут быть составными.
Это переписывание будет выполнено до постановки команды в очередь на тему команд, чтобы убедиться, что если типы изменятся, существующие утверждения уже будут разрешены. Пользователь увидит сообщение об успешном выполнении, содержащее переписанную схему.
Если тип уже зарегистрирован через CLI, но затем добавляется в каталог расширений, значение в каталоге будет иметь приоритет над значением, зарегистрированным через CLI. CLI будет отклонять вызовы для регистрации типов, которые уже зарегистрированы в каталоге расширений.
DESCRIBE
/Explian
будут показывать...Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )