将 ksqlDB MAP 转换为 ARRAY

Convert a ksqlDB MAP to ARRAY

我有一个 MAP<STRING, STRUCT>
的 ksqlDB 列 我正在寻找一种方法将其转换为 ARRAY<STRUCT>

函数 ENTRIES() 看起来是正确的工具,但使用它我得到了

Function 'ENTRIES' does not accept parameters (MAP<STRING, STRUCT<C STRING, D STRING>>).
Valid alternatives are:
ENTRIES(MAP<STRING, DOUBLE> map, BOOLEAN sorted)
ENTRIES(MAP<STRING, BOOLEAN> map, BOOLEAN sorted)
ENTRIES(MAP<STRING, VARCHAR> map, BOOLEAN sorted)
ENTRIES(MAP<STRING, BIGINT> map, BOOLEAN sorted)
ENTRIES(MAP<STRING, INT> map, BOOLEAN sorted)

是否有其他方法可以达到同样的目的?

更新: 我收到的消息看起来像这样:

{"a":1, "b":{"b1": {"c":"aaa", "d":"bbb"}, "b2": {"c":"ccc", "d":"ddd"}}}

这映射到如下模式:

a INT,
b MAP<STRING, STRUCT<
  c STRING,
  d STRING
>>

我想将其转换成的模式是:

a INT,
b ARRAY<STRUCT<
  c STRING,
  d STRING
>>

转换后的消息应如下所示:

{"a":1, "b":[{"c":"aaa", "d":"bbb"},{"c":"ccc", "d":"ddd"}]}

看起来 ksqlDB 的 ENTRIES 还不支持这个。

我会在 https://github.com/confluentinc/ksql/issues/new 上记录增强请求。