PartiQL
PartiQL は DynamoDB の SQL 互換クエリ言語です。任意のテーブルタブを
PartiQL モード(⌘⇧M)に切り替えると、フィルター
ピルをクリックする代わりに、SELECT、INSERT、UPDATE、
DELETE ステートメントを直接記述できます。
補完は現在のテーブルの範囲に留まります。エディタはそのテーブルのインデックス化された
フィールドと値、そして $table プレースホルダーを提案します。テーブルの選択候補は
出しません。ローカルインデックスがどう作られるかはテーブルの概要とインデックス作成を
参照してください。
タブを PartiQL モードに切り替えると、既定の SELECT * FROM "table" スキャンが
自動実行されます — テーブルをビジュアルビューで開くのと
直接同じ動作です。ステートメントを編集したあとは、実行するかどうかはあなた次第
です: ⌘↩ を押して実行します。結果がストリーミングで表示され、
さらに読み込む で次のページを取得します。書き込みステートメントの場合、同じショートカット
でステージされます — 書き込みテンプレートを参照してください。
PartiQL は Workbench と同じクエリプランとコストのプレビューを使います。
SELECT * FROM "my-table" WHERE pk = 'USER#42' AND begins_with(sk, 'ORDER#')
PartiQL は SQL ではない
DynamoDB の PartiQL は意図的なサブセットです。エディタは入力中にクエリを リントし、DynamoDB が実行しない構文をフラグします。一部の診断にはワンクリックの クイックフィックスが付きます。よくある落とし穴:
INは丸括弧ではなく角括弧を使う —('a', 'b')ではなくWHERE id IN ['a', 'b']。クイックフィックスが書き換えます。リストが DynamoDB の上限(パーティションキー列では 50 値、非キー列では 100 値)を超えた場合も、 サーバーが拒否する前にリンターが警告します。LIMIT句なし — ページサイズは SQL ではなくタブのコントロールです。 さらに読み込む を使ってください。JOIN、GROUP BY、HAVING、集計、サブクエリ、UNION、CTE はなし。 結合と集計には Workbench タブを開いてください — リンターが そこへ案内します。サブクエリ、UNION、CTE は Workbench でも利用できません。LIKE→ 関数 —LIKE '%foo%'はcontains(col, 'foo')に、'foo%'はbegins_with(col, 'foo')になります。クイックフィックスが提供されます。IS NULL/IS NOT NULL→attribute_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のものとは別です)。履歴メニューを再度開くと、 以前のステートメントをエディタに復元できます — 失敗した実行も含まれるので、 修正して再試行できます。


