首页 > 解决方案 > 将 ksqlDB MAP 转换为 ARRAY

问题描述

我有一个 ksqlDB 列,MAP<STRING, STRUCT>
我正在寻找一种将其转换为的方法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"}]}

标签: apache-kafkaksqldb

解决方案


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

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


推荐阅读