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.

asked a year ago447 views
1 Answer
1
Accepted Answer

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

Which effectively converts the struct object to a string.

answered 10 months ago
profile picture
EXPERT
reviewed a month ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions