Я определил существующую таблицу в красном смещении с определенными столбцами. Это уже успешно сопоставлено из одного сегмента S3 с помощью определения jsonpaths и команды COPY FROM JSON. Это все отлично работает.
Но теперь у меня есть данные в другом формате, которые хранятся в другом сегменте S3, и я хотел бы также поместить эти данные в одну и ту же таблицу в красное смещение. Тем не менее, эти новые данные не имеют значений для всех столбцов в этой таблице красного смещения - я хотел бы просто по умолчанию эти определенные значения в таблице красного смещения равны нулю для новых данных сегмента. Моя проблема в том, что я не знаю, как лучше настроить определение jsonpaths для использования нового сегмента S3, чтобы я также мог легко запустить COPY FROM JSON для нового сегмента s3.
Я пытаюсь избежать предварительной обработки новых данных корзины, что может включать добавление дополнительных ключей (для сопоставления с нежелательными столбцами) с пустыми значениями.
Я попытался просто поместить пустые строки в jsonpath, чтобы выровнять их по столбцам в красном смещении, для которых мне все равно, для чего вводить значения. Однако в документации по смещению красного сечения AWS указывается, что пустые строки вызывают ошибку при выполнении команды COPY FROM JSON.
https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-format.html#copy-json-jsonpaths
Существующая таблица красного смещения
CREATE TABLE events (
platform_name VARCHAR(10),
app_id VARCHAR(10),
app_version VARCHAR(10)
)
Существующий файл карты для существующего сегмента
{
"jsonpaths": [
"$['device']['platform']['name']",
"$['application']['app_id']",
"$['application']['version_code']"
]
}
Файл карты для нового сегмента, где объекты данных имеют только значение, соответствующее name
, а НЕ * app_id
или app_version
. Но я хочу поместить их в одну таблицу красного смещения.
{
"jsonpaths": [
"$['platform']",
???,
???
]
}
Не будет ли в новом формате какой-либо вариант размещения в пути JSON, который я точно знаю? Казалось бы странным ...