问题背景: Athena-express是一个在AWS Athena上方提供更简单的查询语法的Node.js模块。有时候我们会遇到查询结果中包含嵌套数组的情况,但是Athena-express会将嵌套数组作为字符串返回,导致我们无法直接获取嵌套数组的值。
解决步骤:
一种解决方法是修改Athena-express的查询语法,让其返回枚举类型。修改后的查询语句中需要使用UNNEST
函数将嵌套数组展开为多条记录。具体方法如下:
const AthenaExpress = require('athena-express')
const aws = require('aws-sdk')
const athenaExpressConfig = {
aws,
s3: 's3://{BUCKET_NAME}/{S3_OUTPUT}', // 请改为您自己的bucket名称和路径
getStats: true,
}
const athenaExpress = new AthenaExpress(athenaExpressConfig)
const query = `
SELECT
col1,
UNNEST(col2) AS col2_parsed
FROM my_table
`
const results = await athenaExpress.query(query)
console.log(results)
通过上述方法,Athena-express返回的结果会展开嵌套数组,并将其值返回到col2_parsed
列中。这样,我们就可以直接获取嵌套数组的值了。