Filter

Wenn Sie Daten aus Bigtable lesen, können Sie bestimmte Zeilen oder Bereiche von Zeilen abrufen. Allerdings werden nicht immer alle Daten in allen Zeilen benötigt. Sie könnten beispielsweise nur Zeilen, die einen bestimmten Wert in ihrem Zeilenschlüssel enthalten, oder nur Zellen in einer bestimmten Spaltenfamilie benötigen.

Wenn Sie die Ergebnisse einer Leseanfrage einschränken möchten, fügen Sie einen Filter in die Anfrage ein. Ein Filter wird vor dem Senden der Antwort auf die Daten angewendet, wodurch sich die zurückgegebene Datenmenge reduziert. Daher kann die Verwendung von Filtern zu niedrigeren Netzwerkkosten und einem schnelleren Durchsatz führen. Auf dieser Seite erhalten Sie einen Überblick über die Funktionsweise von Bigtable-Filtern und eine Liste der verfügbaren Filter.

Weitere Informationen und Codebeispiele für jeden Filter finden Sie unter Filterbeispiele.

Funktionsweise von Filtern

Wenn die Leseanfrage einen Filter enthält, ruft Bigtable eine Zeile oder einen Bereich von Zeilen aus der Tabelle ab. Für jede der abgerufenen Eingabezeilen wertet Bigtable die Zeile mit Ihrem Filter aus und generiert dann eine Ausgabezeile, die auf den Filterergebnissen basiert.

Bigtable bietet verschiedene Arten von Filtern, wie in den folgenden Abschnitten beschrieben. Einfache Filter fallen in zwei Kategorien: Begrenzungsfilter und Änderungsfilter. Sie können einfache Filter zu Kombinationsfiltern zusammenfassen.

In den meisten Fällen wird ein Filter auf alle Zeilen angewendet, sofern Sie keinen Zeilenschlüssel, keinen Zeilenbereich und keine Anzahl von Zeilen angeben, auf die der Filter angewendet werden soll. Eine Ausnahme ist der Filter für einen Zeilenschlüssel-Regex, der den Zeilenbereich in bestimmten Fällen einschränken kann, wenn der Regex ein festes Präfix ist. Geben Sie im Allgemeinen die Zeilen für einen Filter immer an, um die Langsamkeit eines vollständigen Tabellenscans zu vermeiden.

Begrenzungsfilter

Ein Begrenzungsfilter steuert, welche Zeilen oder Zellen in der Antwort enthalten sind, je nachdem, ob sie bestimmten Kriterien entsprechen. Sie können beispielsweise festlegen, dass die Antwort nur Zeilen enthalten soll, in denen der Zeilenschlüssel mit einem regulären Ausdruck übereinstimmt, oder dass nur Zellen aus einer bestimmten Spaltenfamilie abgerufen werden sollen.

Viele Begrenzungsfilter können Zellen aus einer Ausgabezeile ausschließen. Wenn alle Zellen aus einer Ausgabezeile ausgeschlossen werden, ist die Zeile nicht in der Antwort enthalten.

Eine vollständige Liste der Begrenzungsfilter finden Sie in der Zusammenfassung der Filter.

Änderungsfilter

Ein Änderungsfilter wirkt sich auf die Daten oder Metadaten einzelner Zellen aus.

Bigtable enthält die folgenden Änderungsfilter:

  • Filter Wert entfernen, der den Wert jeder Zelle durch einen leeren String ersetzt. Dieser Filter ist nützlich, wenn Sie nur die Anzahl der Zeilen oder die Liste der Zeilenschlüssel benötigen, die Ihre Kriterien erfüllen, und nicht die Daten aus diesen Zeilen.

  • Filter Label anwenden, der jeder Zelle ein Label hinzufügt, sodass sich feststellen lässt, welcher Filter die einzelnen Zellen in der Antwort erzeugt hat. Die Anwendung kann diese Labels verwenden, um weitere Filtervorgänge auf der Clientseite auszuführen.

Kombinationsfilter

Mit einem Kombinationsfilter können Sie mehrere einfache Filter zu einem Filter zusammenfassen, sodass Sie mehrere Filter auf eine einzelne Leseanfrage anwenden können. Wenn Sie beispielsweise CPU-Nutzungsdaten für Ihre Server abrufen möchten, könnten Sie einen Filter verwenden, der nur Zeilen einschließt, deren Zeilenschlüssel mit SERVER beginnt, gefolgt von einem zweiten Filter, der nur Zellen innerhalb der Spaltenfamilie CPU einschließt.

Bigtable enthält die folgenden Kombinationsfilter:

  • Eine Kette, die eine Reihe von Filtern auf jede Eingabezeile anwendet und eine Ausgabezeile zurückgibt. Ein Kettenfilter ist mit einem logischen UND vergleichbar.
  • Ein Interleave, das jede Eingabezeile durch mehrere Filter schickt und dann alle Filterergebnisse für die Eingabezeile zu einer einzigen Ausgabezeile zusammenfasst. Ein Interleave-Filter ist mit einem logischen ODER vergleichbar.
  • Eine Bedingung, die einen von zwei möglichen Filtern auf die Eingabezeile anwendet und damit eine Ausgabezeile generiert. Zur Auswahl des Filters wird ein Prädikatfilter auf die Eingabezeile angewendet und dann geprüft, ob die Ausgabezeile des Prädikatfilters Zellen enthält.

Filter und Leistung

Filter bieten Ihnen die Möglichkeit, nur die tatsächlich benötigten Daten abzurufen. Folglich können Filter die Leistung verbessern, da die Menge der an die Anwendung gesendeten Daten reduziert wird.

Filter sind jedoch keine Allzwecklösung für jedes Leistungsproblem. Im Allgemeinen sollten Filter verwendet werden, um die Durchsatzeffizienz zu steuern und nicht um die Latenz zwischen dem Senden einer Anfrage und dem Empfang einer Antwort zu reduzieren. Bei richtiger Anwendung können Filter ein effektiver Bestandteil einer Strategie zur Verbesserung der Leseleistung sein.

Insbesondere der Bedingungsfilter kann die Latenz erhöhen, da Bedingungen viel langsamer ausgeführt werden als andere Filter. Wenn Ihre Leseanfrage extrem leistungsabhängig ist, sollten Sie keine Bedingungen in der Anfrage verwenden.

Übersicht über Filter

In den folgenden Tabellen sind die von Bigtable bereitgestellten Filter aufgeführt, einschließlich Links zu Details und Codebeispielen für jeden Filter.

Begrenzungsfilter
Alle blockieren Gibt keine Zellen aus. Vor allem für das Debugging nützlich.
Limit für Zellen pro Spalte Schließt nur die N neuesten Versionen einer Spalte aus einer Zeile ein.
Limit für Zellen pro Zeile Schließt nur die ersten N Zellen aus einer Zeile ein.
Versatz für Zellen pro Zeile Lässt die ersten N Zellen aus einer Zeile weg.
Spaltenfamilien-Regex Schließt nur Zellen ein, deren Spaltenfamilie einem regulären RE2-Ausdruck entspricht.
Spaltenqualifizierer-Regex Schließt nur Zellen ein, deren Spaltenqualifizierer einem regulären Ausdruck entspricht.
Spaltenbereich Schließt nur Zellen in einer bestimmten Spaltenfamilie ein, deren Spaltenqualifizierer in einem bestimmten Bereich liegt.
Alle übergeben Gibt alle Eingabezellen aus. Vor allem für das Debugging nützlich.
Zeilenschlüssel-Regex Schließt nur Zellen ein, deren Zeilenschlüssel einem regulären Ausdruck entspricht.
Zufallsauswahl aus Zeilen Ruft eine zufällige Stichprobe von Zeilen ab.
Sink Schließt Zellen in die endgültige Ausgabezeile ein und verhindert, dass sie durch einen nachfolgenden Filter geändert oder entfernt werden.
Zeitstempelbereich Schließt nur Zellen ein, deren Zeitstempel in einen bestimmten Bereich fällt.
Wertebereich Schließt nur Zellen ein, deren Wert in einen bestimmten Bereich fällt.
Wert-Regex Schließt nur Zellen ein, deren Wert einem regulären Ausdruck entspricht.
Änderungsfilter
Label anwenden Fügt allen Zellen ein Label hinzu.
Wert entfernen Gibt einen leeren String für jeden Zellenwert zurück.
Kombinationsfilter
Kette Wendet mehrere Filter nacheinander an.
Bedingung Wendet einen von zwei möglichen Filtern auf eine Zeile an.
Interleave Fasst Ausgabezeilen aus mehreren Filtern zu einer einzigen Ausgabezeile zusammen.

Nächste Schritte