KSQL EXTRACTJSONFIELD space 键名
KSQL EXTRACTJSONFIELD space in key name
我在 KSQL 中使用 EXTRACTJSONFIELD 时遇到名称中的空格问题
例如:
SELECT EXTRACTJSONFIELD(payload, '$.Successful Login') FROM MYSTREAM;
--这总是 returns NULL
我应该如何处理键名中的空格?
我试过:
EXTRACTJSONFIELD(payload, '$.Successful%Login')
EXTRACTJSONFIELD(payload, '$.Successful%20Login')
EXTRACTJSONFIELD(payload, '$.[Successful Login]')
EXTRACTJSONFIELD(payload, '$."Successful Login"')
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 on this issue
提供
我刚刚使用 KSQL 6(CLI v6.0.0,服务器 v6.0.0)尝试了 Robin 的响应。对我来说,使用两个反斜杠不起作用。对我来说,它只能在 ksqldb cli 中使用一个反斜杠或不使用反斜杠,如下所示:
ksql> select extractjsonfield(test,'$[\"Successful Login\"]') from test1;
或
ksql> select extractjsonfield(test,'$["登录成功"]') from test1;
对我来说,只有在从 confluent 命令中心(版本 6.0.0)开始查询以及将查询传递给无头 ksqldb 服务器(confluentinc/cp-ksqldb-server:6.0.0 图片) 使用查询文件。
我在 KSQL 中使用 EXTRACTJSONFIELD 时遇到名称中的空格问题 例如:
SELECT EXTRACTJSONFIELD(payload, '$.Successful Login') FROM MYSTREAM;
--这总是 returns NULL
我应该如何处理键名中的空格?
我试过:
EXTRACTJSONFIELD(payload, '$.Successful%Login')
EXTRACTJSONFIELD(payload, '$.Successful%20Login')
EXTRACTJSONFIELD(payload, '$.[Successful Login]')
EXTRACTJSONFIELD(payload, '$."Successful Login"')
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 on this issue
提供我刚刚使用 KSQL 6(CLI v6.0.0,服务器 v6.0.0)尝试了 Robin 的响应。对我来说,使用两个反斜杠不起作用。对我来说,它只能在 ksqldb cli 中使用一个反斜杠或不使用反斜杠,如下所示:
ksql> select extractjsonfield(test,'$[\"Successful Login\"]') from test1;
或 ksql> select extractjsonfield(test,'$["登录成功"]') from test1;
对我来说,只有在从 confluent 命令中心(版本 6.0.0)开始查询以及将查询传递给无头 ksqldb 服务器(confluentinc/cp-ksqldb-server:6.0.0 图片) 使用查询文件。