Filter & Abfragemuster

Jeder Tabellen-Tab trägt einen Filter: den Prädikatzustand, den DynoTable in eine DynamoDB-Anfrage verwandelt. Zu verstehen, wie die Teile auf query vs. scan abgebildet werden, macht den Großteil davon aus, dass die App schnell und deine Rechnung klein bleibt.

Diese Seite behandelt den Visual-Tab-Modus. Um SQL-artige Abfragen direkt zu schreiben, wechsle zu PartiQL; für Joins und Aggregationen öffne eine Workbench.

Die Filterzeile

Der Visual-Modus zeigt eine einzige horizontale Reihe von Pills:

[Index] [hashKey = value] [rangeKey op value] [+ filter] | [Clear] [Query/Scan]
  • Index-Pill — das Abfragemuster, durch das du liest.
  • Key-Pills — der Partition-Key (Hash) und, sofern vorhanden, der Sort-Key (Range) dieses Musters.
  • Filter-Pills — zusätzliche Nicht-Key-Bedingungen (Scan-Filter).
  • Der Aktions-Button zeigt Query oder Scan, je nachdem, was du gesetzt hast, und wird zu Mehr laden, sobald Ergebnisse streamen.

Setze einen Wert, und DynoTable führt automatisch aus; das Leeren oder Bearbeiten einer Pill führt erneut aus, sobald der Filter wieder gültig ist.

Die visuelle Filterzeile: Index-Auswahl, Key-Pills, ein hinzugefügter Scan-Filter und der Ausführen-Button.
Die visuelle Filterzeile: Index-Auswahl, Key-Pills, ein hinzugefügter Scan-Filter und der Ausführen-Button.

Abfragemuster

Ein Abfragemuster ist der Index, durch den du liest:

  • PRIMARY — der eigene / der Tabelle.
  • Ein benannter oder — sein eigenes Key-Schema.

Das gewählte Muster entscheidet, nach welchen Keys du filtern kannst. Wechsle das Muster über die Index-Pill; die Key-Pills aktualisieren sich auf den Partition- und Sort-Key dieses Musters.

Query vs. Scan

Das ist die Unterscheidung, auf die es bei Kosten und Geschwindigkeit ankommt:

  • Setze einen -Filter, und DynoTable setzt eine gezielte ab — es liest nur die passende Partition. Günstig und schnell.
  • Ohne einen solchen fällt es auf einen zurück, der die ganze Tabelle (oder den Index) Seite für Seite liest. Der Aktions-Button zeigt Scan, um das explizit zu machen.

Key-Filter

Die Partition-Key-Pill nimmt einen Wert; die Aktion wird in dem Moment zu Query, in dem er gesetzt ist. Die Sort-Key-Pill fügt obendrauf einen Vergleich hinzu:

  • =, <, <=, >, >= — geordnete Vergleiche (Zahlen, und lexikografisch bei Strings).
  • begins_with — Präfix-Abgleich bei Strings oder binär.
  • between — ein inklusiver Bereich; die Pill wächst um ein zweites Wertfeld.

String-typisierte Keys bieten Autovervollständigung: während DynoTable eine Tabelle im Hintergrund indiziert, schlägt es echte Werte vor, die du bereits gesehen hast. Keys ohne nützliche Vorschläge (etwa zufällige UUIDs) fallen auf ein einfaches Eingabefeld zurück.

Scan-Filter

Die + filter-Pill fügt eine Nicht-Key-Bedingung hinzu — jedes Attribut, nicht nur Keys. Jeder Filter besteht aus einer Spalte, einem Operator und einem Wert:

  • Vergleiche: =, , <, <=, >, >=, between.
  • Mengenzugehörigkeit: in — passt auf jeden Wert in einer Liste (Strings oder Zahlen).
  • String / binär: begins_with, contains.
  • Existenz: exists, not exists.
  • Typ: type equals / type not equals (gegen den DynamoDB-Typcode — S, N, BOOL, …), plus eine size-Familie für Collection-Typen.

Die angebotenen Operatoren passen sich dem Typ des Attributs an — Vergleiche zur Ordnung erscheinen bei Zahlen, begins_with bei Strings. Scan-Filter werden nach dem Lesen der Items durch die Query oder den Scan angewendet, sie grenzen also das Ergebnis ein, machen aber einen Scan nicht günstiger. Nutze einen Key-Filter, um den Lesevorgang zu beschneiden; nutze Scan-Filter, um zu verfeinern, was zurückkommt.

Single-Table-Design: zusammengesetzte Keys

Single-Table-Designs packen mehrere Entitätstypen hinter einem Key-Präfix in eine Tabelle — USER#123, ORDER#456, TENANT#acme. DynoTable erkennt diese von selbst, ohne dass etwas einzurichten ist:

  • Keys werden direkt dekodiert. Ein zusammengesetzter Wert — ein Großbuchstaben-Präfix, das durch #, | oder ~ an den Rest gebunden ist — wird in jedem Grid als seine beschrifteten Teile gerendert: die Tabelle, PartiQL-Ergebnisse und die Workbench. Gewöhnliche Werte, die lediglich eines dieser Zeichen enthalten (eine Hex-Farbe wie #FF5733, eine pipe-getrennte Liste), bleiben genau so, wie sie sind.
  • Mit einem Klick auf eine Entität filtern. Rechtsklicke eine Zeile und wähle Filter to USER# — das Präfix wird direkt aus dem Key dieser Zeile gelesen. DynoTable wendet ein echtes begins_with auf den Key als gewöhnliche Filter-Pill an, die du auf die übliche Weise entfernst (ihr oder Clear). Wenn die Partition- und Sort-Keys einer Zeile beide ein Präfix haben, bekommst du je eine Auswahl pro Key.

Es gibt keinen Dialog, keine Konfiguration und nichts Gespeichertes — es wird live aus den Keys vor dir abgeleitet.

Das Rechtsklick-Zeilenmenü über einer überladenen Tabelle — Nach USER# filtern und Nach POST# filtern als Facetten über Keys, die in beschriftete Segmente dekodiert sind.
Das Rechtsklick-Zeilenmenü über einer überladenen Tabelle — Nach USER# filtern und Nach POST# filtern als Facetten über Keys, die in beschriftete Segmente dekodiert sind.

Sortieren und Paginieren

Die Sort-Key-Pill trägt einen Sortierrichtungs-Schalter (aufsteigend / absteigend), der auf DynamoDBs ScanIndexForward abgebildet wird. Ergebnisse streamen seitenweise — Mehr laden holt die nächste Seite, und das Ändern der Seitengröße lädt von der ersten Seite neu.

Bis zum Ende ausführen

Standardmäßig pausiert eine Query oder ein Scan nach ein paar Seiten, damit eine große Tabelle nicht alles auf einmal lädt — der Aktions-Button zeigt Mehr laden, um die nächste Seite zu holen. Wenn du lieber alles in einem Durchgang ziehen möchtest, wechsle den Ausführungsmodus:

  • Klicke auf den Chevron neben dem Aktions-Button und wähle Bis zum Ende ausführen. Die primäre Aktion wird umbenannt zu Alles scannen / Alles abfragen / Alles ausführen — auch dann, wenn du am Seitenbudget pausierst, wo ein Klick darauf bis zum Ende durchläuft.
  • Klicke diesen umbenannten Button, und DynoTable holt weiter Seiten, bis die ganze Tabelle (oder der Index) gelesen ist. Die Wahl wird pro Tab für die Sitzung gemerkt; wähle Paginiert, um zurückzuwechseln. Das Wählen eines Modus startet von sich aus nie einen Lauf — es benennt nur den Button um, sodass du entscheidest, wann gefeuert wird.

Bei einer großen Tabelle zeigt das Scharfschalten von „Bis zum Ende ausführen“ zuerst eine Bestätigungsabfrage mit der ungefähren Größe und Item-Anzahl der Tabelle, sodass ein vollständiger Scan immer eine bewusste Entscheidung ist und kein Versehen. Bestätige, um fortzufahren, oder brich ab, um paginiert zu bleiben.

Der Split-Button für den Ausführungsmodus — das Chevron-Menü mit Paginiert und Bis zum Ende ausführen, neben dem Mehr-laden-Button.
Der Split-Button für den Ausführungsmodus — das Chevron-Menü mit Paginiert und Bis zum Ende ausführen, neben dem Mehr-laden-Button.

Über die Tastatur:

  • ⌘↩ führt die aktuelle Abfrage aus — und wenn die Ergebnisse am Seitenbudget pausiert sind, fährt es mit der nächsten Seite fort, statt von vorn zu beginnen.
  • ⌘⇧↩ führt immer in einem einzigen Durchgang bis zum Ende aus.
  • ⌘. oder Esc stoppt jederzeit einen laufenden Lauf.

Aktualisiert