Abfragen mit strukturierten Zeilenschlüsseln
Wenn eine Tabelle ein Zeilenschlüsselschema hat, das strukturierte Zeilenschlüssel definiert, können Sie mit SQL die einzelnen Segmente oder Spalten des Zeilenschlüssels abfragen.
Kontinuierliche materialisierte Ansichten, einschließlich asynchroner sekundärer Indexe, generieren standardmäßig strukturierte Zeilenschlüssel. Sie können auch einen strukturierten Zeilenschlüssel für jede Bigtable-Tabelle definieren, die Sie mit SQL abfragen möchten, indem Sie ein Zeilenschlüsselschema für die Tabelle erstellen. Weitere Informationen finden Sie unter Zeilenschlüsselschemas verwalten.
Schlüssel
In einer Bigtable-Tabelle ohne strukturiertes Zeilenschlüsselschema wird jede Zeile mit einem einzelnen Zeilenschlüssel indexiert. Wenn Sie die Tabelle mit SQL abfragen, ist der Zeilenschlüssel eine Spalte mit dem Namen _key, die von SQL als Primärschlüssel verwendet wird. Es handelt sich nicht um eine Pseudospalte. Daher werden die Werte in der Spalte _key zurückgegeben, wenn Sie eine SELECT *-Abfrage für die Tabelle ausführen.
In einer Tabelle mit einem Zeilenschlüsselschema ist der Zeilenschlüssel (Primärschlüssel) dagegen die Kombination aller Spalten, die im Zeilenschlüsselschema als Felder angegeben sind. Wenn Sie einer Tabelle ein Zeilenschlüsselschema hinzufügen, wird die _key Spalte zu einer
Pseudospalte. Das bedeutet, dass sie in einer SELECT * Abfrage nicht angezeigt wird. Sie können sie aber
explizit mit einer SELECT _key Anweisung auswählen.
Beispielabfragen
In den Beispielen in diesem Abschnitt wird davon ausgegangen, dass eine Tabelle mit dem Namen sales das folgende Schema hat:
field {
field_name: "user_id"
type: { bytes_type { encoding { raw {} } } }
}
field {
field_name: "purchase_date"
type: { string_type { encoding { utf8_bytes {} } } }
}
field {
field_name: "order_number"
type: { string_type { encoding { utf8_bytes {} } } }
}
encoding {
delimited_bytes { delimiter "#" }
}
Die Tabelle sales enthält die folgenden Daten. Die Spaltenfamilie product hat zwei Spalten.
| Zeilenschlüssel | Produkt | |
|---|---|---|
| product_type | product_name | |
| "user1#2025-05-20#abcd1233" | "phone" | "iPhone16_pro_max" |
| "user1#2025-05-20#abcd1235" | "shoes" | "nike_hyperdunk" |
| "user2#2025-05-24#defg456" | "headphones" | "sony_wh_1000mx5" |
Ergebnisse von Abfragen mit strukturierten Zeilenschlüsseln
Da die Tabelle sales strukturierte Zeilenschlüssel hat, gibt die Abfrage mit einer SELECT *-Anweisung jedes Segment des Zeilenschlüssels als separate Spalte zurück. Wie bei jeder SQL-Abfrage für eine Bigtable-Tabelle werden Spalten in einer Spaltenfamilie als Maps ausgedrückt.
SELECT