0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DynamoDBからPrtiQLエディタでSELECTしたいのに取れない

Last updated at Posted at 2023-06-26

すごく絶望的にハマったのに、大した問題ではなくて悲しかったのでメモ残しておきます。

テーブル作りました

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

結果

スクリーンショット 2023-06-26 19.01.10.png

答え

テーブル名にパーティション入っている場合は、ダブルクォートで囲まないと取れません

SELECT * FROM "table-a"

スクリーンショット 2023-06-26 19.08.01.png

ハマりどころ2:WHERE句の書き方

Let's SELECT

SELECT * FROM "table-a" WHERE id="bbb7adc0-0742-4907-94ef-cb18d1d6c012"

結果

スクリーンショット 2023-06-26 19.12.21.png

え?
テーブル名にダブルクォートだったから、条件もダブルクォートではないの...?

正解

WHERE句の条件はシングルクォートで囲みましょう

SELECT * FROM "table-a" WHERE id='bbb7adc0-0742-4907-94ef-cb18d1d6c012'

スクリーンショット 2023-06-26 19.14.47.png

※おまけ※ハマりどころ3:全部SELECTすると料金かかるので、取得レコード数を絞りたい

Let's SELECT

SELECT * FROM "table-a" LIMIT 1

結果

スクリーンショット 2023-06-26 19.17.13.png

正解

PrtiQLエディタは、2023年6月の時点でLIMITを現在サポートしてません。
DynamoDBのAPIにてExecuteStatementをする際に、リクエストパラメータにLimitを指定することで、取得レコード数を制限できるそうです。
DynamoDB API Reference ExecuteStatement

まとめ

それぞれのハマったポイントで、解決したときには「なんだーーーーー」と叫びました。

まじめにDynamoDBからデータを取得するなら、
PrtiQLエディタよりDynamoDBのAPIで取得するほうがやりやすそうです。

また使うかわからないけど、同じ穴にハマらないように備忘録として残しておきます。
ありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?