#snowflake-cloud-data-platform #snowflake-schema
#снежинка-облако-платформа данных #снежинка-схема
Вопрос:
У меня есть таблица в snowflake. Я хочу изменить один столбец, чтобы он мог иметь значение по умолчанию.
Я хочу установить значение по умолчанию для столбца LAST_UPDATED.
Я выполняю этот запрос:
alter table "TEST_STATUS" modify LAST_UPDATED set default CURRENT_TIMESTAMP() ;
Я получаю сообщение об ошибке как:
Неподдерживаемая функция «Изменить столбец, установленный по умолчанию».
Как мне изменить таблицу?
Ответ №1:
Вы не можете использовать ALTER TABLE
для изменения значения по умолчанию для столбца, если это не последовательность или добавить столбец по умолчанию.
Проверьте раздел значений по умолчанию здесь
Вам нужно воссоздать свою таблицу
Ответ №2:
значение по умолчанию в таблице должно соответствовать поведению,
- при нулевом значении используйте 42, что может быть выполнено как операция чтения
- при вставке null используйте более сложную форму для установки значения. как и seq() или current_date(), это можно сделать только при записи.
Последняя форма в некоторых базах данных просто «переписывает» данные тогда и там, но, учитывая, что Snowflake не является бесплатным обедом / без скрытых затрат. Если вы хотите, чтобы ваша таблица была переписана (чтобы ввести сложное новое значение, подобное второму случаю), вам следует переписать свою таблицу. Когда у вас есть простая таблица с 10 строками, это может показаться абсурдным, чтобы заставить вас прыгать через обручи, подобные этому. Но когда у вас есть таблицы с терабайтами данных, перезапись всех этих данных занимает много вычислительного времени и, что более важно, определенно не является атомарной, поэтому ее нужно намеренно выполнять как часть процесса миграции структурированных данных.
Который, как и почти все в Snowflake, предназначен для выполнения тяжелой работы, и, следовательно, большие задачи должны быть запланированными задачами. Таким образом, большая перезапись может быть большим хранилищем и приостанавливать обработку входных данных.