Форматирование ключей KSQL Kafka

В одной из моих тем в качестве ключа используется строка-json - {"city": "X", "id": 22}. В моем заявлении ksql я хочу извлечь его в 2 разных поля, а не в одно, чтобы позже можно было фильтровать и присоединяться. В документах это, кажется, позволяет мне вставлять только всю строку в ключ вместо того, чтобы разрешать форматировать ее как JSON (точно так же, как FORMAT_VALUE), см. Ниже ... Любые предложения по элегантному решению этого?

VALUE_FORMAT (обязательный) Задает формат сериализации значения сообщения в теме. Поддерживаемые форматы: JSON, DELIMITED и AVRO.

KEY Связывает ключ сообщения в теме Kafka со столбцом в потоке KSQL.


person andrew shved    schedule 15.04.2018    source источник


Ответы (1)


Это можно сделать с помощью EXTRACTJSONFIELD UDF в столбце ROWKEY. Столбец ROWKEY - это «столбец» в вашей схеме, который содержит ключ для данной строки. EXTRACTJSONFIELD UDF позволяет извлекать поля из столбцов, содержащих строки json. Итак, для вашего примера вы можете запустить:

SELECT EXTRACTJSONFIELD(ROWKEY, '$.city') AS city, EXTRACTJSONFIELD(ROWKEY, '$.id') AS id FROM FOO;
person Rohan D.    schedule 16.04.2018