はじめに
AWS DynamoDBのSQL互換のPartiQLを使って、DynamoDB内のJSONフィールドにドットが含まれる場合の対処方法を紹介する。PartiQLの詳細については以下をこちらの記事を参照。
動作確認環境
- Windows 10 64bit
- NoSQL Workbench
前提
JSONオブジェクトに以下のようにドット(.)が含まれている場合のフィールド名の指定方法について述べる。本来、ドットがフィールド名に入るのは、命名規則上良くない。なぜなら、階層を表すのにドットを使うため。命名規則を変えた方が良いが、既存のリソースを変更できない場合には、回避策として今回紹介する方法を参考にしてほしい。
JSONオブジェクト例
{
"timestamp": "1735080692440"
"serial.no": "00001"
"payload": {
"sensor.value": "100"
}
}
方法
JSONフィールド名を"
(ダブルクォーテーション)で囲う。階層になっている場合は、それぞれのフィールド名を"
で囲う(例:"filed1"."filed2")。フィールド名に対応する値は、'
(シングルクォーテーション)で囲う。
PartiQL例(timestampの降順で、JSONデータを抽出)
SELECT "timestamp", "payload"."sensor.value" FROM DynamoDBTable WHERE "serial.no" = '00001' ORDER BY "timestamp" DESC
まとめ
AWS DynamoDBのSQL互換のPartiQLを使って、DynamoDB内のJSONフィールドにドットが含まれる場合の対処方法を紹介した。本来は、JSONの命名規則を変更した方が良いが、どうしても変更できない場合は、今回紹介した方法で対処可能である。
参考