すごく絶望的にハマったのに、大した問題ではなくて悲しかったのでメモ残しておきます。
テーブル作りました
DyanmoDBに下記のようなtable-a
を作りました。
テーブル名: table-a
id | name |
---|---|
bbb7adc0-0742-4907-94ef-cb18d1d6c012 | Aくん |
7f1d08e9-b3f9-4c0a-98ef-295386d69861 | Bさん |
※idがパーティションキーです
やりたかったこと
単純に、Aくんのレコードがほしいです。
ハマりどころ1:パーティション入ってるテーブル名
Let's SELECT
初めにこんな感じで投げました。
SELECT * FROM table-a
結果
答え
テーブル名にパーティション入っている場合は、ダブルクォートで囲まないと取れません
SELECT * FROM "table-a"
ハマりどころ2:WHERE句の書き方
Let's SELECT
SELECT * FROM "table-a" WHERE id="bbb7adc0-0742-4907-94ef-cb18d1d6c012"
結果
え?
テーブル名にダブルクォートだったから、条件もダブルクォートではないの...?
正解
WHERE句の条件はシングルクォートで囲みましょう
SELECT * FROM "table-a" WHERE id='bbb7adc0-0742-4907-94ef-cb18d1d6c012'
※おまけ※ハマりどころ3:全部SELECTすると料金かかるので、取得レコード数を絞りたい
Let's SELECT
SELECT * FROM "table-a" LIMIT 1
結果
正解
PrtiQLエディタは、2023年6月の時点でLIMITを現在サポートしてません。
DynamoDBのAPIにてExecuteStatement
をする際に、リクエストパラメータにLimit
を指定することで、取得レコード数を制限できるそうです。
DynamoDB API Reference ExecuteStatement
まとめ
それぞれのハマったポイントで、解決したときには「なんだーーーーー」と叫びました。
まじめにDynamoDBからデータを取得するなら、
PrtiQLエディタよりDynamoDBのAPIで取得するほうがやりやすそうです。
また使うかわからないけど、同じ穴にハマらないように備忘録として残しておきます。
ありがとうございました。