confluentinc/ksql

Convert a MAP to ARRAY with ENTRIES()

Open

#5.452 aberto em 21 de mai. de 2020

Ver no GitHub
 (2 comments) (0 reactions) (0 assignees)Java (1.048 forks)batch import
enhancementhelp wanted

Métricas do repositório

Stars
 (5.739 stars)
Métricas de merge de PR
 (Mesclagem média 4d 20h) (6 fundiu PRs em 30d)

Description

I have data in the style of {"a":1, "b":{"b1": {"c":"aaa", "d":"bbb"}, "b2": {"c":"ccc", "d":"ddd"}}}

With schema defined as

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

I would like to convert it to

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

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

Currently using ENTRIES() returns

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)

Could ENTRIES() be extended to support this scenario?

Guia do colaborador