Werte zum Schreibzeitpunkt aggregieren
Wenn Sie Ihre Daten zum Schreibzeitpunkt in Bigtable aggregieren möchten, Aggregatfunktionen Aggregate sind Bigtable-Tabellenzellen, aggregierte Zellenwerte, während die Daten geschrieben werden. Wenn Sie einen neuen Wert hinzufügen, Aggregationsfunktion führt den Wert mit dem aggregierten Wert zusammen, der bereits in die Zelle ein. Andere Datenbanken beziehen sich auf ähnliche Funktionen wie Zähler oder verteilte Zähler.
Bigtable bietet den Aggregationstyp sum. Wenn Sie addiert einen Wert in eine zusammengefasste Zelle, wird der Zellenwert durch die Summe den neu hinzugefügten Wert und den aktuellen Zellenwert.
In der Vorschau können Sie mithilfe der Funktion
cbt
-Befehlszeile
und die
Bigtable-Clientbibliotheken für C++, Go und Java.
Dieses Dokument bietet einen Überblick über Aggregatfunktionen. aggregierte Spaltenfamilie und enthält Beispiele, die zeigen, wie ein Wert zu einem aggregierte Zelle. Bevor Sie dieses Dokument lesen, sollten Sie mit den Bigtable Übersicht und Schreibvorgänge:
Wann sollten Aggregatfunktionen verwendet werden?
Bigtable-Aggregate sind nützlich für Situationen, in denen aggregierte Daten für eine Entität und nicht als einzelne Datenpunkte. Wenn Sie die Migration von Datenbanken wie Apache Cassandra oder Redis verwenden können, können Sie Bigtable-Aggregate dort verwenden, in diesen Systemen auf Zähler angewiesen waren.
Zeit-Buckets
Sie können Zeit-Buckets verwenden, um zusammengefasste Werte für einen bestimmten Zeitraum zu erhalten, z. B. eine Stunde, einen Tag oder eine Woche. Anstatt Daten vor oder nach dem Schreiben zu aggregieren zu Ihrer Tabelle hinzufügen, fügen Sie neue Werte hinzu, um Zellen in der Tabelle zu aggregieren.
Wenn Sie beispielsweise einen Dienst betreiben, mit dem gemeinnützige Organisationen Geld sammeln können,
möchten wissen, wie hoch die Onlinespenden
pro Tag sind, aber Sie
Sie müssen weder den genauen Zeitpunkt der einzelnen Spenden noch den Betrag pro Stunde kennen. In
stehen die Zeilenschlüssel für die IDs gemeinnütziger Organisationen und Sie erstellen eine
Familie namens donations
. Die Spaltenqualifizierer in der Zeile sind Kampagnen-IDs.
Da jeder für eine Kampagne an einem Tag eingegangene Spendenbetrag eingeht, wird er zur Summe in der aggregierten Zelle in der Spalte für diesen Tag addiert. Jede Anzeige verwendet einen Zeitstempel, der auf den Anfang des Tages gekürzt ist. dass jede Anfrage denselben Zeitstempel hat. Zeitstempel kürzen stellt sicher, dass alle Spenden von diesem Tag derselben Zelle hinzugefügt werden. Die werden am nächsten Tag alle Anfragen mit Zeitstempeln, bis zum neuen Datum gekürzt wird, und dieses Muster setzt sich fort.
Je nach Anwendungsfall können Sie neue Spalten für Ihre neuen Aggregatfunktionen. Je nach Anzahl der Buckets, die Sie können Sie ein anderes Zeilenschlüsseldesign in Betracht ziehen.
Weitere Informationen zu Zeit-Buckets finden Sie unter Schemadesign für Zeitreihen. Daten.
Arbeitsabläufe rationalisieren
Mit Aggregationen können Sie Ihre Daten in einer Bigtable-Tabelle aggregieren ganz ohne ETL- oder Streaming-Verarbeitungssoftware um Ihre Daten zu aggregieren, bevor oder nachdem Sie sie in Bigtable geschrieben haben. Wenn Ihre Anwendung beispielsweise zuvor Nachrichten auf Pub/Sub an und nutzte Dataflow, um die Nachrichten zu lesen. bevor Sie sie in Bigtable schreiben, könnten Sie sondern direkt an die aggregierten Zellen in Bigtable senden.
Aggregierte Spaltenfamilien
Zum Erstellen und Aktualisieren von aggregierten Zellen benötigen Sie eine oder mehrere Aggregatzellen Spaltenfamilien in Ihrer Tabelle – Spaltenfamilien, die nur aggregierte Daten enthalten Zellen. Sie können sie zusammen mit einer Tabelle erstellen oder eine Aggregation hinzufügen. Spaltenfamilie zu einer Tabelle hinzu, die bereits verwendet wird. Beim Erstellen der Spalte geben Sie den Zusammenfassungstyp an, z. B. sum.
Sie können eine Spaltenfamilie mit nicht aggregierten Daten nicht in ein Aggregat-Spaltenfamilie. Spalten in aggregierten Spaltenfamilien dürfen keine Inhalte enthalten nicht aggregierte Zellen und Standardspaltenfamilien dürfen keine aggregierten Daten enthalten Zellen.
Informationen zum Erstellen einer neuen Tabelle mit einer aggregierten Spaltenfamilie finden Sie unter Ein Tabelle. Bis einer Tabelle eine aggregierte Spaltenfamilie hinzufügen, siehe Spalte hinzufügen Familien.
Zusammenfassungstypen
Bigtable unterstützt den Aggregationstyp sum
. Der Eingabetyp
für Summen Int64
unterstützt wird.
Zeitstempel
Eine aggregierte Zelle wird durch Zeilenschlüssel, Spaltenfamilie, Spaltenqualifizierer und Zeitstempel. Sie verwenden immer denselben Zeitstempel, wenn Sie der Zelle Daten hinzufügen. Wenn Sie einen Wert an denselben Zeilenschlüssel, dieselbe Spaltenfamilie und dieselbe Spalte senden aber mit einem anderen Zeitstempel, wird im Bereich Spalte.
Eine Anfrage zum Hinzufügen, die an eine aggregierte Zelle gesendet wird, muss einen Zeitstempel enthalten.
Eingabetyp
Der Eingabetyp des Werts in der Anfrage zum Hinzufügen muss dem Eingabetyp entsprechen,
mit der die Spaltenfamilie erstellt wird. Wenn Sie beispielsweise einen Stringwert an einen
Spaltenfamilie für Int64
konfiguriert ist, wird die Anfrage abgelehnt.
AddToCell
Eine Hinzufügungsanfrage sendet die Mutation AddToCell
in den Bigtable-Daten.
API. Im Gegensatz dazu wird bei einer nicht aggregierten Schreibanfrage die Mutation SetCell
gesendet. Für
finden Sie in der
Data API-Referenz
AddToCell
-Vorgänge unterliegen denselben
Betriebslimits
wie andere Tabellenmutationen.
In einer replizierten Tabelle konvergiert eine aggregierte Zelle in
innerhalb der aktuellen Replikationsverzögerung. Der Gesamtwert ist die
Zusammenfassung aller AddToCell
Mutationen, die seitdem in allen Clustern an diese Zelle gesendet wurden
oder seit der Erstellung der Zelle ausgeführt wurde.
Anfragebeispiele hinzufügen
Die folgenden Beispiele zeigen, wie Sie einer aggregierten Zelle einen Wert hinzufügen. Die
Die Beispiele addieren eine Summe in einer Spaltenfamilie, die den Eingabetyp Int64
erwartet.
cbt
cbt addtocell TABLE_ID ROW_KEY
FAMILY_NAME:COLUMN_QUALIFER=VALUE@TIMESTAMP
Ersetzen Sie Folgendes:
TABLE_ID
: Die permanente Kennzeichnung der TabelleROW_KEY
: der ZeilenschlüsselFAMILY_NAME
: der Name der aggregierten SpaltenfamilieCOLUMN_QUALIFIER
: eine Kennzeichnung für die SpalteVALUE
: Wert, der der Zelle hinzugefügt werden sollTIMESTAMP
: ein Unix-Zeitstempel in Mikrosekunden, z. B.1710868850000000
Beispiel:
cbt addtocell mobile-data device-1 updates:week12=100@1710868850000000
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.