如何通过AWS S3 Select关联PERSON实体与对应S3文件路径
解决S3 Select关联Comprehend实体与对应文件路径的问题
我明白你的痛点——之前的查询只返回实体名称,没法和对应的S3文件路径绑定,这是因为你没把Entities数组展开,导致每个文件的所有实体被当成一个整体处理。要实现关联筛选,关键是用UNNEST操作把数组拆成单独的行,这样每个实体就能和它所属的File字段一一对应了。
正确的S3 Select查询语句
SELECT e.Text AS PersonName, s.File AS SourceFile FROM S3Object s UNNEST s.Entities AS e WHERE e.Type = 'PERSON' AND e.Score > 0.7
关键细节解释
UNNEST s.Entities AS e:这一步是把每个对象里的Entities数组拆分成独立的行,每个行对应一个实体,并用别名e指代这个实体。这样原对象的File字段就会和每个拆分出的实体绑定在一起。- 过滤条件:通过
e.Type = 'PERSON'筛选人物类型实体,再用e.Score > 0.7保留置信度符合要求的结果。 - 字段选择:
e.Text是实体的名称,s.File是该实体所属的原始S3文件路径,两者通过UNNEST建立了关联。
必要的序列化配置
执行查询时,需要确保InputSerialization的设置正确,因为你的JSON文件包含多个顶级对象:
{ "JSON": { "Type": "Document" } }
这个配置告诉S3 Select把每个顶级JSON对象当作一条独立的记录来处理,这样UNNEST才能正常工作。
这样查询返回的结果就会是每一行对应一个符合条件的人物实体,同时附带它来自哪个S3文件的路径,完美解决你之前的关联问题。
内容的提问来源于stack exchange,提问作者Mathieu
相关产品推荐
相关产品推荐

