Пино – преобразование строки в проходимый JSON

У меня есть строка, поступающая из потока Kafka, которая очень похожа на пример использования документации JSONFORMAT .

Сейчас я борюсь с тем, как преобразовать его в проходимый JSON, чтобы я мог, в примере из документации, поместить значение «возраста» в столбец моей таблицы.

Я пробовал следующее:

jsonPath(JSONFORMAT(meta), '$.age')"

jsonPath(TOJSONMAPSTR(meta), '$.age')"

которые представляют собой комбинации функций JSONFORMAT и jsonPath.

Я подтвердил, чтоjsonPathфункция работает так, как ожидалось, когда данные из моего потока Kafka фактически отформатированы как JSON, т.е."jsonPath(source, '$.init_sync_state')", поэтому я не подозреваю, что это основная причина моих проблем.

Я ожидаю, что эта комбинация функций сначала преобразует мою строку в JSON, а затем извлечет значение из определенного пути. Однако похоже, что JSONFORMAT на самом деле не преобразует данные в JSON. Я также попробовал TOJSONMAPSTR , но результат тот же.

Есть ли способ преобразовать строку в структуру JSON в Pinot? Я упускаю что-то очевидное?

Любая помощь очень ценится. Спасибо!

1 ответ

Решено:

Решением было использовать jsonIndex , который преобразует JSON вSTRINGстолбец, а затем используйтеjsonPathчтобы получить к нему доступ.

Т.е. в примере выше мы бы сделали:

      "jsonIndexConfigs": {
   "meta": {
       "maxLevels": 1,
       "excludeArray": false,
       "disableCrossArrayUnnest": true,
       "includePaths": null,
       "excludePaths": null,
       "excludeFields": null
       }
}

а затем вставьте возраст в мой столбец, используя столбец преобразования, который выглядит следующим образом:

      {
   "columnName": "age",
   "transformFunction": "jsonPath(document, '$.age')"
},
Другие вопросы по тегам