概要
表題の通りです。
RedashでDynamoDBからデータ取得する場合DQLという、SQLライクな書き方でデータを取得することになります。
今回はDynamoのIndexを指定して絞り込みを行う際に、ちょいハマりしたので、メモとして記録します。
AWS DynamoDBの設定
テーブル構造
- Table name: test_tables
- Primary partition key: partition_id (Number)
- Primary sort key: sort_id (Number)
インデックス
- Name: partition_id-index
- PartitionKey: partition_id (Number)
DQLの書き方
test_tables
のpartition_id
で絞り込んでデータ抽出したい場合、DQLでは下記の書き方となります。
SELECT * FROM test_tables WHERE partition_id = 60515 USING partition_id-index; # USINGでindex名を指定することが重要
WHERE句で属性名だけで条件指定したいところですが、DynamoDBの特性上、インデックスを指定しなければなりません。
そのため、上記のように、partition_idはpartition_id-indexというインデックスやで〜
というように明示させる必要があります。
もし、USINGを書かないと下記エラーが発生します。
No index specified with USING <index>, but multiple possibilities for query: TABLE, partition_id-index