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.

已提问 1 年前509 查看次数
1 回答
1
已接受的回答

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

Which effectively converts the struct object to a string.

已回答 1 年前
profile picture
专家
已审核 2 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则