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.

feita há um ano478 visualizações
1 Resposta
1
Resposta aceita

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

Which effectively converts the struct object to a string.

respondido há um ano
profile picture
ESPECIALISTA
avaliado há 2 meses

Você não está conectado. Fazer login para postar uma resposta.

Uma boa resposta responde claramente à pergunta, dá feedback construtivo e incentiva o crescimento profissional de quem perguntou.

Diretrizes para responder a perguntas