PartiQL

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

補完は現在のテーブルの範囲に留まります。エディタはそのテーブルのインデックス化された フィールドと値、そして $table プレースホルダーを提案します。テーブルの選択候補は 出しません。ローカルインデックスがどう作られるかはテーブルの概要とインデックス作成を 参照してください。

タブを PartiQL モードに切り替えると、既定の SELECT * FROM "table" スキャンが 自動実行されます — テーブルをビジュアルビューで開くのと 直接同じ動作です。ステートメントを編集したあとは、実行するかどうかはあなた次第 です: ⌘↩ を押して実行します。結果がストリーミングで表示され、 さらに読み込む で次のページを取得します。書き込みステートメントの場合、同じショートカット でステージされます — 書き込みテンプレートを参照してください。

PartiQL は Workbench と同じクエリプランとコストのプレビューを使います。

SELECT * FROM "my-table" WHERE pk = 'USER#42' AND begins_with(sk, 'ORDER#')
DynoTable の DynamoDB PartiQL エディタ:SELECT 文、テンプレートメニュー、その下にストリーミングされる結果。
DynoTable の DynamoDB PartiQL エディタ:SELECT 文、テンプレートメニュー、その下にストリーミングされる結果。

PartiQL は SQL ではない

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

  • IN は丸括弧ではなく角括弧を使う('a', 'b') ではなく WHERE id IN ['a', 'b']。クイックフィックスが書き換えます。リストが DynamoDB の上限(パーティションキー列では 50 値、非キー列では 100 値)を超えた場合も、 サーバーが拒否する前にリンターが警告します。
  • LIMIT 句なし — ページサイズは SQL ではなくタブのコントロールです。 さらに読み込む を使ってください。
  • JOINGROUP BYHAVING、集計、サブクエリ、UNION、CTE はなし。 結合と集計には Workbench タブを開いてください — リンターが そこへ案内します。サブクエリ、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ポップオーバーは、リマインダーが必要なときに これらをインラインで一覧します。DynamoDB の予約語とぶつかる属性名にはエイリアスが必要です — 予約語チェッカーがそれを検出し、PartiQL や SDK の 呼び出しに貼り付けられる ExpressionAttributeNames のマップを生成します。

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

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

再利用したいステートメントは 保存 ボタンで保存できます — 保存したクエリは テンプレートと同じメニューに並びます。PartiQL の保存は、それを書いたテーブルとリージョンに 紐づきます。テーブル間を行き来できるのは Workbench の保存の方です。Workbench と PartiQL は別々のライブラリを保持します。異なるクエリ言語を扱うためです。

書き込みテンプレート

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

履歴

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

更新日