KSQL EXTRACTJSONFIELD пробел в имени ключа

У меня проблема с пробелами в именах при использовании EXTRACTJSONFIELD в KSQL Например:

SELECT EXTRACTJSONFIELD(payload, '$.Successful Login') FROM MYSTREAM;

- всегда возвращает NULL

Как мне обрабатывать пробелы в именах ключей?

Я пытался:

EXTRACTJSONFIELD(payload, '$.Successful%Login')
EXTRACTJSONFIELD(payload, '$.Successful%20Login')
EXTRACTJSONFIELD(payload, '$.[Successful Login]')
EXTRACTJSONFIELD(payload, '$."Successful Login"')
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Построение конвейеров данных в реальном времени с Apache Kafka: Руководство по Python
Apache Kafka - популярная платформа распределенной потоковой передачи данных, которую можно использовать для построения конвейеров данных в реальном...
2
0
745
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

tl; dr: используйте [\\"label\\"] для ссылки на поле

Данные испытаний:

echo '{"id":1,"test":{"Successful Login":1}}' | kafkacat -b localhost:9092 -t test1

Объявите поток в KSQL и проверьте сообщение:

ksql> create stream test1 (id bigint, test varchar) with (kafka_topic='test1', value_format='json');

 Message
----------------
 Stream created
----------------
ksql> select id, test from test1;
1 | {"Successful Login":1}

Неэкранированная ссылка на столбец не работает:

ksql> select extractjsonfield(test,'$.Successful Login') from test1;
null

Столбец Escape с использованием [\\" (также обратите внимание, что не используется точечная нотация):

ksql> select extractjsonfield(test,'$[\\"Successful Login\\"]') from test1;
1

Это решение любезно предоставлено Новиковантонио на Эта проблема

Я просто попробовал ответить Робина, используя KSQL 6 (CLI v6.0.0, Server v6.0.0). Для меня это не работает с двумя обратными косыми чертами. Для меня это работает только с одной обратной косой чертой или без обратной косой черты в ksqldb cli, например:

ksql> select extractjsonfield(test,'$[\"Successful Login\"]') from test1;

или же ksql> выберите extractjsonfield (test, '$ ["Успешный вход"]') из test1;

Для меня он работает без обратной косой черты только при запуске запроса из объединенного командного центра (версия 6.0.0), а также при передаче запроса на безголовый сервер ksqldb (confluentinc / cp-ksqldb-server: изображение 6.0.0) с использованием файл запроса.

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