Получить ключ и значение из суперполя в красном смещении

У меня есть суперполе, содержащее данные в формате JSON –

** { "awsRegion": "us-west-2", "динамодб": { «ApproximateCreationDateTime»: 1712584702997808, "Ключи": { "идентификатор перспективы": { "S": "строка_1" } }, "Новое изображение": { "имя_перспективы": { "S": "perform-test_Ram" }, "gaSessionId": { "S": "1980117787.1628661599" } }, «Сизебайт»: 467, «ApproximateCreationDateTimePrecision»: «МИКРОСЕКУНД» }, "eventSource": "aws:dynamodb" } **

Я хочу извлечь строку значения JSONspectId,prospectName,gaSessionId. Я попытался преобразовать это поле в varchar, но результат оказался пустым. Я также попытался преобразовать в JSON_serialize, а затем в varchar, но результаты остались пустыми. Любая помощь, как это исправить?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
260
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если этот столбец (столбец) имеет тип super, вам просто нужно перейти к нужному полю, используя '.' обозначения. Как и в приведенном ниже запросе, но поскольку имена полей указаны в верхнем регистре, вам также необходимо настроить Redshift на чувствительность к регистру:

SET enable_case_sensitive_identifier TO true;

SELECT col.dynamodb."Keys"."prospectId"."S" as prospectid
FROM <table>;

Обратите внимание на использование двойных кавычек, когда в идентификаторе столбца/поля находится символ верхнего регистра.

Вау, спасибо, это сработало для меня. Слава. Но мы предоставляем точные ключи с правильными регистрами, но нам все равно нужно SET Enable_case_sensitifier_identifier TO true;

Biswa Patra 09.04.2024 22:02

Я столкнулся с проблемой при создании металлизированного представления: CREATE MATERIALIZED VIEW test_sch."new_vw" АВТО ОБНОВЛЕНИЕ ДА КАК ВЫБРАТЬ приблизительную_метку_времени_приближения, JSON_PARSE(kinesis_data) в качестве данных, kinesis_data.dynamodb."Keys"."Id"."S" в качестве проспекта, kinesis_data .dynamodb."NewImage"."Name"."S" как имя_проспекта, kinesis_data.dynamodb."NewImage"."SessionId"."S" как gaSessionId из kds_schema."test-stream-dev" WHERE CAN_JSON_PARSE(kinesis_data);

Biswa Patra 10.04.2024 19:13

kinesis_data — это varchar, а data — это super, поэтому вы не можете ссылаться на суперполя по имени varchar. Вам нужно использовать «данные». Я также считаю, что вам нужно будет переместить JSON_PARSE() и CAN_JSON_PARSE() в подзапрос или CTE. Как будто я правильно помню, Redshift понадобится этот уровень SELECT, чтобы иметь возможность использовать поля, но попробуйте и посмотрите.

Bill Weiner 10.04.2024 21:21

УСТАНОВИТЕ оба параметра в TRUE

Установите для Enable_case_sensitifier_identifier значение TRUE; Установите для параметра Enable_case_sensitivity_super_attribute значение TRUE;

Другие вопросы по теме

Похожие вопросы