Привет. Я с новостями :)
Я как-то рассказывал о проблеме с функцией
GET_DDL в
Snowflake.
Она имеет одну особенность, которая не позволяет использовать результат ее работы по назначению:
объекты сортируются по алфавиту.
Например:
CREATE TABLE B (ID INT PRIMARY KEY);
CREATE TABLE A (ID INT REFERENCES B(ID));
SELECT GET_DDL('DATABASE', 'TEST', TRUE);
Вернет
create or replace TABLE TEST.PUBLIC.A (
ID NUMBER(38,0),
foreign key (ID) references TEST.PUBLIC.B(ID)
);
create or replace TABLE TEST.PUBLIC.B (
ID NUMBER(38,0) NOT NULL,
primary key (ID)
);
Этот DDL-скрипт не может быть выполнен из-за неправильного порядка объектов.
Мы сделали инструмент, который пересортирует объекты с учетом их связанности.
Применимо для всех объектов
Snowflake (включая
VIEW), понимает
CREATE и
ALTER, учитывает
FOREIGN KEYS,
CLONE,
SELECT AS и другие виды зависимостей.
Умеет определять циклические зависимости.
Можно использовать онлайн без регистрации
https://parsers.dev/tools/ddl/reordering
https://parsers.dev/tools/ddl/reorderingили при помощи API:
https://docs.parsers.dev/#snowflake-get_ddl-function-result-reorder
https://docs.parsers.dev/#snowflake-get_ddl-function-result-reorderЕсли у вас будут какие-то задачи, которые вы хотели бы автоматизировать, пишите тут. Попробуем решить :)