[小ネタ] Amazon S3 Selectでオブジェクトリテラルを使用する

こんにちは。サービスグループの武田です。今回はAmazon S3でオブジェクトリテラルを使用する小ネタの紹介です。
2021.11.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。サービスグループの武田です。

今回はAmazon S3でオブジェクトリテラルを使用する小ネタの紹介です。

S3 SelectとはCSVやJSON形式でS3に保存されたオブジェクトに対してSQLライクなクエリを発行して問い合わせする機能です。

さてSQLではクエリに固定値を返すようなクエリが書けます。たとえば次のようなクエリを発行するとN列が1、S列がHelloという結果を取得できます。

SELECT 1 AS N, 'Hello' AS S FROM s3object s LIMIT 1

結果は次のようになります。

{
  "N": 1,
  "S": "Hello"
}

さて同様に、オブジェクト形式の値を返すためにはどのように記述すればよいでしょうか。結論から言えばバッククオートを使用します。

SELECT 1 AS N, 'Hello' AS S, `{"org": "classmethod"}` AS M FROM s3object s LIMIT 1

結果は次のようになります。

{
  "N": 1,
  "S": "Hello",
  "M": {
    "org": "classmethod"
  }
}

まとめ

シングルクオートを使用すると文字列になってしまいますし、クオートなしではシンタックスエラーになってしまいました。困っていたところ同僚にこの書き方を教えてもらいました。参考になりましたら幸いです。