ksql extractjsonfield key name中的空格

pbwdgjma  于 2021-06-08  发布在  Kafka
关注(0)|答案(2)|浏览(392)

在ksql中使用extractjsonfield时,名称中的空格有问题,例如:

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

--它总是返回null
我应该如何处理键名中的空格?
我试过:

  1. EXTRACTJSONFIELD(payload, '$.Successful%Login')
  2. EXTRACTJSONFIELD(payload, '$.Successful%20Login')
  3. EXTRACTJSONFIELD(payload, '$.[Successful Login]')
  4. EXTRACTJSONFIELD(payload, '$."Successful Login"')
gxwragnw

gxwragnw1#

我刚刚使用ksql6(cliv6.0.0,serverv6.0.0)尝试了robin的响应。对我来说,用两个反斜杠是不行的。对我来说,它只在ksqldb cli中使用一个反斜杠或不使用反斜杠,如下所示:

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

或者ksql>从test1中选择extractjsonfield(test,“$[”successful login“]”);
对我来说,它只在从confluent command center(版本6.0.0)启动查询以及将查询交给无头ksqldb服务器(confluentinc/cp ksqldb)时工作,没有反斜杠-server:6.0.0 image)使用查询文件。

bmp9r5qi

bmp9r5qi2#

热释光;dr:使用 [\\" label \\"] 引用字段
试验数据:

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

在ksql中声明流并检查消息:

  1. ksql> create stream test1 (id bigint, test varchar) with (kafka_topic='test1', value_format='json');
  2. Message
  3. ----------------
  4. Stream created
  5. ----------------
  6. ksql> select id, test from test1;
  7. 1 | {"Successful Login":1}

列的未转义引用无效:

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

转义列使用 [\\" (也请注意不要使用点符号):

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

在这个问题上,novikovantonio提供了这个解决方案

展开查看全部

相关问题