1

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

4

2 に答える 2