AWS Athena INSERT INTO statement: struct col into a varchar column (source struct column has attributes of different types i.e. varchar, int)

0

I am trying to create an insert into statement which queries a source table, which has a column containing a STRUCT data-type. This table is automatically created via crawler and the column definition is as follows:

source table: column A

{ "extensions": { "actual": { "strength": "int", "type": "string", "validity": "int" }, "url": "string" } } I want to take an element of this struct (extensions.actual) and insert into another table TARGET column B

I have currently defined column B as a string. I don't want to define a struct as the 'actual' child elements may over time be added to.

I have an INSERT INTO statement which extracts extensions.actual and attempts to insert, however this is failing due to 'actual' having INT and VARCHAR datatypes.

cast(extensions.actual as varchar)

error: TYPE_MISMATCH: Insert query has mismatched column types

When i run typeof(extensions.actual) i return

row(actual row(strength integer, type varchar, validity integer))

Is there any solution i can implement to insert extensions.actual into target column B without explicitly having to define a structure for column B. Ideally would be a string.

preguntada hace un año509 visualizaciones
1 Respuesta
1
Respuesta aceptada

format('%s',cast(extensions.actual as json)) as extensions_actual

Which effectively converts the struct object to a string.

respondido hace un año
profile picture
EXPERTO
revisado hace 2 meses

No has iniciado sesión. Iniciar sesión para publicar una respuesta.

Una buena respuesta responde claramente a la pregunta, proporciona comentarios constructivos y fomenta el crecimiento profesional en la persona que hace la pregunta.

Pautas para responder preguntas