数组中的AWS Athena查询结构属性



我在S3 bucket中有由AWS Textract服务生成的json文件,我正在使用Athena从这些文件中查询数据。每个文件都有相同的结构,我在Athena中创建了一个表;块";即结构的数组:

"blocks": [{
"BlockType": "LINE",
"Id": "12345",
"Text": "Text from document",
"Confidence": 98.7022933959961,
"Page": "1",
"SourceLanguage": "de",
"TargetLanguage": "en",
},
...100+ blocks]

我怎样才能只查询";文本";每个街区都有一处房产?

提前感谢!

我使用提供的示例JSON定义了一个具有您的确切模式的表。

_col0
#   
array(row(blocktype varchar, id varchar, text varchar, confidence double, page varchar, sourcelanguage varchar, targetlanguage varchar))

我使用unnest运算符来压平块的数组,并使用以下查询从中获取Text列:

select block.text from <table-name> CROSS JOIN UNNEST(blocks) as t(block)

它看起来像是列存储行的数组,所以您可以将其处理为一个(数组函数(:

select transform(
filter(block_column, t -> t.text is not null), 
r => cast(row(r.text) as row(text varchar))) texts
from table

最新更新