Изменить тип столбца таблицы не работает в Астер - Я, вероятно, испортить его - PullRequest
0 голосов
/ 06 декабря 2018

Я использую Aster, так как есть несколько отличных функций Random Forest.Моя зависимость, или переменная ответа, является булевой дихотомической переменной;0 или 1.

Когда я запускаю ее через функцию выбора произвольного леса, она создает прогнозируемое значение переменной ответа.Он вызывает это предсказание переменной и автоматически создает его как VARCHAR (ДЕЙСТВИТЕЛЬНО БОЛЬШОЙ ИНТЕГЕР ЗДЕСЬ).

Чтобы выполнить некоторые из моих вычислений, я просто хочу привести их или преобразовать в целое число из строки.Все результирующие строки символов 0 или 1:

alter table a0q892.zf_predict alter column prediction int;

не работают.Я получаю сообщение об ошибке:

Executed as Single statement.
Failed [34 : 42000] [AsterData][ASTERJDBCDSII](34) ERROR: syntax error at or near "int" ()

Я почти уверен, что есть много причудливых и элегантных способов сделать это.Но я думаю, я мог бы просто сделать это целым числом для будущих вычислений?

1 Ответ

0 голосов
/ 07 декабря 2018

Согласно документу астры , есть ограниченные возможности для манипулирования столбцами.Вы не можете изменить тип данных столбца.

Однако звездочка позволяет изменять размер столбца varchar.Вы упомянули, что хотите привести к INTEGER, но я думаю, что в вашем случае VARCHAR(1) тоже подойдет.Если да, тогда вы можете пойти:

ALTER TABLE a0q892.zf_predict ADD prediction VARCHAR(1);

Если вам действительно нужен INTEGER (или любой другой тип, кроме VARCHAR(n)), то вам нужно пойти по старому пути:

  • создать новый столбец в таблице с правильным типом
  • заполнить его из старого столбца
  • удалить старый столбец
  • переименовать новый столбец

Астра SQL:

ALTER  TABLE a0q892.zf_predict ADD prediction_new int;
UPDATE TABLE a0q892.zf_predict SET prediction_new = CAST(prediction AS int);
ALTER  TABLE a0q892.zf_predict DROP prediction;
ALTER  TABLE a0q892.zf_predict RENAME prediction_new TO prediction;
...