将 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 上记录增强请求。
我有一个 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 上记录增强请求。