Как смоделировать внешнюю таблицу Amazon Redshift для изменения структуры столбцов? - PullRequest
2 голосов
/ 13 июня 2019

У меня есть 5 столбцов, c1, c2, c3, c4, c5 в исходной таблице (MySQL).Я экспортировал таблицу и добавил в S3, например:

s3://data/table_name/YYYYMMDD/table_nameYYYYMMDDHHMMSS.csv

И я экспортировал данные за 3 месяца данных.

На более поздних этапах два новых столбца скажут c6 и c7 добавлено.Теперь экспортированные файлы в s3://data/table_name/YYYYMMDD/table_nameYYYYMMDDHHMMSS.csv будут иметь 7 столбцов

И есть вероятность, что столбец c4 также будет удален.Таким образом, экспортированные файлы будут иметь 6 столбцов, то есть c1, c2, c3, c5, c6, c7

Как можно смоделировать внешнюю таблицу для адаптации этих изменений?

Ответы [ 2 ]

2 голосов
/ 13 июня 2019

На самом деле, если вы используете спектр красного смещения / Афина, вы можете быть в порядке!

Добавление столбцов - это нормально - просто запустите сканер клея, и новый столбец будет доступен

удаление столбцов - хорошо - удаленные столбцы будут отображаться как нули

Вы не можете изменить определение столбца.

Я определенно рекомендую - если вы можете - преобразовать в паркет и изучить использование разделов для ваших данных.

Кроме того, я рекомендую вам попробовать - добавить данные по одному за раз - при необходимости снова запустить сканер клея - и использовать athena, чтобы убедиться, что все в порядке.

0 голосов
/ 13 июня 2019

Вам потребуется несколько внешних таблиц.

Поскольку существует смещение данных, я думаю, вам следует создать отдельные таблицы для каждой комбинации столбцов, которые у вас есть, и создать представление (с union all) поверх них для отображенияданные.

Таким образом, у вас будет

table 1 : columns : c1, c2, c3, c4, c5 
table 2 : columns : c1, c2, c3, c4, c5, c6, c7
table 3 : columns : c1, c2, c3, c5, c6, c7

представление как

select c1, c2, c3, c4, c5, '' c6, '' c7 from table1 union all
select c1, c2, c3, c4, c5, c6, c7 from table2 union all
select c1, c2, c3, '' c4, c5, c6, c7 from table3

Если появится другая комбинация, вам нужно создать 4-ю таблицу и обновить определение представления..

...