KSQL EXTRACTJSONFIELD пробел в имени ключа - PullRequest
0 голосов
/ 12 июня 2018

У меня проблема с пробелами в именах при использовании 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"')

1 Ответ

0 голосов
/ 12 июня 2018

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

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

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

Это решение любезно предоставлено novikovantonio на этом выпуске

...