SQL Workbench
Workbench は、DynamoDB テーブルをまたいで実際の JOIN、GROUP BY、集計
クエリ — PartiQLにはできないこと — を実行する SQL オーサリング
タブです。これは DynamoDB のアクセスパターンの規則の中の SQL です: 単一の
SELECT を書くと、コンパイラがすべての結合が実際のキーまたはインデックスを
通って読み取ることを確認し、結合された行をマテリアライズし、その上でステートメント
の残り — フィルタ、集計、GROUP BY、ORDER BY — を実行します。
サイドバーの右クリックメニュー(New Workbench)、⌘⌥B ショートカット、または File → New Workbench から開きます。SQL を書いて、 ⌘↩ を押して実行します。
エディタは、カーソル位置の SQL コンテキストに応じて、テーブル名と、インデックス化 されたフィールドや値を提案します。ローカルインデックスに何が含まれ、どう更新するか はテーブル統計を参照してください。
SELECT c.email, COUNT(*) AS orders, SUM(o.total) AS revenue
FROM orders o
JOIN customers c ON o.customerId = c.id
GROUP BY c.email
ORDER BY revenue DESC
サポートする内容
次を含む単一の SELECT ステートメント:
JOIN ... ON ...— テーブルをまたぐINNERおよびLEFT結合。- 集計 —
COUNT、SUM、AVG、MIN、MAX、加えてGROUP BYとHAVING。 WHERE、DISTINCT、CASE、CAST、ORDER BY。
集計クエリがまだストリーミング中の間、partial バッジが該当する列に印を
付けます — より多くのページが届くにつれて数値が精緻化されます。
アクセスパターンの規則
DynamoDB にはサーバーサイドの結合がありません。Workbench コンパイラは、
DynamoDB ができることを強制します: 各 JOIN の to 側の属性は、ターゲット
テーブルのパーティションキーまたは GSI パーティションキーでなければならず、
すべての検索が実際のクエリになり、行ごとの隠れたテーブル全体スキャンには
なりません。
結合がキーでない属性を指している場合、エディタはそれに下線を引いて理由を 説明します。コンパイラが拒否する他の構文も、同じく正確な検証の波線として現れます。 Workbench はクイックフィックスを提供しません:
RIGHT/FULL OUTER/CROSS結合とカンマ結合(INNER/LEFTのみ)。- サブクエリ、CTE(
WITH)、UNION/INTERSECT/EXCEPT。 - ウィンドウ関数(
OVER)、複数のステートメント、SELECT以外のすべて。
読み取り専用
Workbench は常に読み取り専用です。編集、ステージング、 一括削除はありません — 分析用の画面です。クエリの実行がテーブルに書き込むことは 決してありません。
識別子は標準 SQL の大文字小文字の扱いに従います: クォートされていない名前は
大文字小文字を区別せずに一致します(WHERE PLATFORM は platform を見つけます)。
大文字小文字を正確に一致させるには、名前をクォートまたはバッククォートで囲みます。
Preview the query cost
プランが得られる場合、プレビューは Scan と Query のどちらかと、使用する
インデックスを示します。RCU の見積もりは、テーブルのメタデータが対応している場合に
のみ表示されます。
このステータスバーは Workbench と PartiQL に表示され、ビジュアルなフィルタ行には 表示されません。SQL が空、コンパイル失敗、DML、あるいは解析できない PartiQL には プランがないため、コストバーは出ません。
通常のパーティション Query は「コストは一致したアイテム数に依存します」と表示し、
RCU は示しません。ポイントリードとサイズの分かる Scan も、裏付けとなる
DescribeTable のメタデータがなければ RCU は出ません。
ポイントリードでは「≈1 アイテム」は表示されます。アイテム数のある Scan は
テーブルの見積もりを表示できますが、その RCU を計算するにはバイト単位のテーブル
サイズが必要です。どちらの値もない場合、Scan は「サイズ不明」と表示します。
Scan の見積もりは、ライブの値ではなく、DynamoDB が定期的に更新するテーブルの
数値を使います。ポイントリードの分岐は強力な整合性のある読み込みで、Scan の分岐は
結果整合性のある読み込みで価格を計算します。
Workbench も PartiQL も、実行するのは結果整合性のある読み込みです。そのため ポイントリードの見積もりは、実際のリクエストコストの 2 倍になることがあります。 どの数値も、請求額ではなく実行前のヒントとして扱ってください。
実行、テンプレート、履歴
- Run — エディタで ⌘↩、Run ボタン、または再実行には ⌘R。 Workbench タブは開いたときに自動実行することはありません。実行は常に意図的です。
- Run to end — ⌘⇧↩、または Run ボタンのスプリットメニューから 選びます。1 ページではなく、結合された結果全体をストリーミングします。ページ 上限が解除され、クエリが尽きるまでページが届き続けます。Stop だけが唯一の ブレーキです。1 回のパスで完了させたい大きな集計に便利です。
- テンプレートと保存済みクエリ — Queries メニューには、スターター テンプレート(全選択、キーでフィルター、グループで集計、Tab で移動できる箇所 付き)に加え、Save で保存したクエリ — 任意のテーブルで再利用できる、自分で 名前を付けたクエリ — が並びます。選ぶとエディタの内容が置き換わるので、保存した ままの状態で実行されます。
- History — すべての実行が保存され(PartiQLの履歴とは別に)、 検索でき、復元できます — 失敗した実行も含まれるので、修正して再試行できます。
Workbench タブは保存された仕様です — 名前を付け、⌘K から再度開けば、 再読み込みを経ても残ります。結合された結果をエクスポートする こともできます。
Workbench と Smart Table
どちらも同じ結合エンジンを実行します。同じものをオーサリングする 2 つの方法です:
- Workbench は SQL の経路 — クエリを入力し、集計と解決された属性を 得ます。
- Smart Table は ビジュアルの経路 — キャンバスに 結合を描画し、結合された行を通常のテーブルのように閲覧します。


