s3 select クエリと where 句を使用して、s3 からデータを取得しています。where句がない場合、クエリは正常に機能し、期待される結果を返します。where句を使用している場合、フィルタリングされたデータは正しいですが、オブジェクトのキーはヘッダーではなくヘッダーの後の最初の行です。
例:csvファイル
ABC
1 2 3
1 5 6
クエリ:select * from s3object s where s._1 = '1' limit 100
期待される出力:[{A : 1, B:2, C:3}, {A:1, B:5, C:6}]
実際の出力:[{1:1, 2:5, 3:6}]
これは、クエリに使用している params オブジェクトです。
let params = {
Bucket: S3_BUCKET,
Key: S3_PATH,
Expression: "select * from s3object s where s._1 = '1' limit 100"
ExpressionType: "SQL",
InputSerialization: {
CSV: {
FileHeaderInfo: "NONE",
RecordDelimiter: "\n",
FieldDelimiter: ","
}
},
OutputSerialization: {
CSV: {}
}
};
を使用しても同じ出力が得られFileHeaderInfo : "USE"
、クエリを次のように変更しますselect * from s3object s where id = '22' and s.date > '2020-05-01' limit 100
AWS ドキュメント: https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html