PartiQL

PartiQL は DynamoDB の SQL 互換クエリ言語です。任意のテーブルタブを PartiQL モード(⌘⇧M)に切り替えると、フィルター ピルをクリックする代わりに、SELECTINSERTUPDATEDELETE ステートメントを直接記述できます。

タブを PartiQL モードに切り替えると、既定の SELECT * FROM "table" スキャンが 自動実行されます — テーブルをビジュアルビューで開くのと 直接同じ動作です。ステートメントを編集したあとは、実行するかどうかはあなた次第 です: ⌘↩ を押して実行します。結果がストリーミングで表示され、 Load more で次のページを取得します。

SELECT * FROM "my-table" WHERE pk = 'USER#42' AND begins_with(sk, 'ORDER#')
SELECT ステートメント、テンプレートメニュー、その下にストリーミング結果を表示した PartiQL エディタ。
SELECT ステートメント、テンプレートメニュー、その下にストリーミング結果を表示した PartiQL エディタ。

PartiQL は SQL ではない

DynamoDB の PartiQL は意図的なサブセットです。エディタは入力中にクエリを リントし、DynamoDB が実行しない構文をフラグします — たいていワンクリックの クイックフィックス付きです。よくある落とし穴:

  • IN は丸括弧ではなく角括弧を使う('a', 'b') ではなく WHERE id IN ['a', 'b']。クイックフィックスが書き換えます。リストが DynamoDB の上限(パーティションキー列では 50 値、非キー列では 100 値)を超えた場合も、 サーバーが拒否する前にリンターが警告します。
  • LIMIT 句なし — ページサイズは SQL ではなくタブのコントロールです。 Load more を使ってください。
  • JOINGROUP BYHAVING、集計、サブクエリ、UNION、CTE はなし。 それらには Workbench タブを開いてください — リンターが そこへ案内します。
  • LIKE → 関数LIKE '%foo%'contains(col, 'foo') に、'foo%'begins_with(col, 'foo') になります。クイックフィックスが提供されます。
  • IS NULL / IS NOT NULLattribute_not_exists(col) / attribute_exists(col)。クイックフィックスが提供されます(対応が逆になる点に 注意)。
  • 文字列リテラルはシングルクォート"value" ではなく 'value'。 ダブルクォートは識別子を意味します。

Run ボタンの隣のformat-helpポップオーバーは、リマインダーが必要なときに これらをインラインで一覧します。

テンプレートと保存済みクエリ

Queries メニューは、すぐに使えるステートメントをエディタに挿入します。 アクティブなテーブルの実際のキーとサンプリングされた値に対して解決されるので、 SELECT テンプレートはプレースホルダーではなく、あなたのパーティションキーを すでに参照した状態で届きます。ハイライトされた箇所を Tab で移動しながら、残りを 埋めてください。

再利用したいステートメントは Save ボタンで保存できます — 保存したクエリは テンプレートと同じメニューに並び、任意のテーブルですぐに実行できます。Workbench と PartiQL は別々のライブラリを保持します。異なるクエリ言語を扱うためです。

書き込みテンプレート

INSERT / UPDATE / DELETE テンプレートは、意図的に合成の DEMO-* キーを 使うので、すぐに実行しても実際の行を誤って変更することはありません。順番に 実行するよう設計されています — 挿入、更新、そして同じデモアイテムの削除 — キーを編集して実際のデータを対象にします。

履歴

実行したすべてのクエリは、モードごとの履歴に保存されます (Workbenchのものとは別です)。履歴メニューを再度開くと、 以前のステートメントをエディタに復元できます — 失敗した実行も含まれるので、 修正して再試行できます。

更新日