Можно ли использовать псевдоним внешней таблицы в красном смещении для удаления имени схемы? - PullRequest
0 голосов
/ 27 сентября 2018

Мы хотим перенести таблицы в Spectrum, что требует определения внешней схемы

create external schema spectrum 
from data catalog 
database 'spectrumdb' 
iam_role 'my_iam_role'
create external database if not exists;

Я создал внешнюю таблицу в Redshift следующим образом:

create external table spectrum.my_table(
 id bigint,
 accountId bigint,
 state varchar(65535),
 ) stored as parquet
 location 's3://some_bucket/my_table_files';

Возможно ли псевдонимтаблица такая, что при запросе ее можно назвать my_table_alias вместо spectrum.my_table?По сути, мы хотим сделать изменения во внешних таблицах непрозрачными для клиентов нашего экземпляра Redshift (это означает, что мы не можем изменить имена таблиц).Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 27 сентября 2018

Redshift не имеет псевдонимов. Лучше всего создать представление.

При создании представления необходимо использовать параметр WITH NO SCHEMA BINDING, поскольку представление находится на внешней таблице.

Если вы не хотите указывать имена схем или у вас есть подобное требование, создайте представления в общедоступной схеме или задайте для схемы по умолчанию пользователей схему, где представления:

alter user .. set search_path to ..

Дополнительные преимущества использования представления для доступа к внешней таблице:

  • позволяет переименовать столбцы, чтобы сделать их более удобными для пользователя
  • добавлять или удалять столбцы с определением представления
  • изменение типов данных и / или форматов даты / времени
  • у вас будет возможность изменить имя / структуру внешней таблицы без влияния на доступ пользователя

Дайте мне знать, еслиэто отвечает на ваш вопрос.

...