Parametrisierte Ansichten erstellen und verwalten
Sie können eine parametrisierte Ansicht aus einer logischen Ansicht in Bigtable erstellen und dann Vorgänge für parametrisierte Ansichten ausführen.
Bevor Sie diese Seite lesen, sollten Sie sich mit der Übersicht über parametrisierte Ansichten vertraut machen.
Hinweis
Wenn Sie die Google Cloud CLI verwenden möchten, gehen Sie so vor:
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die Rolle „Bigtable-Administrator“ (roles/bigtable.admin) für die Instanz zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen und Verwalten von parametrisierten Ansichten benötigen.
Alternativ können Sie die folgenden Berechtigungen auf Instanzebene anfordern:
- Erstellen:
bigtable.logicalViews.create - Aktualisieren:
bigtable.logicalViews.update - Löschen:
bigtable.logicalViews.delete - Auflisten:
bigtable.logicalViews.list
Zum Erstellen einer parametrisierten Ansicht benötigen Sie außerdem mindestens die Berechtigung bigtable.tables.readRows für die Quelltabelle.
Parametrisierte Ansicht erstellen
Eine parametrisierte Ansicht ist eine virtuelle Tabelle, die durch eine SQL-Anweisung SELECT definiert wird, die die Funktion VIEW_PARAMETERS() enthalten kann.
Verwenden Sie den
gcloud bigtable logical-views create
Befehl, um eine parametrisierte Ansicht zu erstellen.
gcloud bigtable logical-views create VIEW \
--instance=INSTANCE \
--query="SELECT * FROM TABLE_ID WHERE STARTS_WITH(_key, CAST(VIEW_PARAMETERS('VIEW_PARAMETERS') AS BYTES))"
Ersetzen Sie Folgendes:
VIEW: Eine ID mit bis zu 128 Zeichen für die neue parametrisierte Ansicht. Die ID muss unter den Tabellen-IDs und Ansichts-IDs in der Instanz eindeutig sein.INSTANCE: Die ID der Instanz, in der die parametrisierte Ansicht erstellt werden soll.TABLE_ID: Die ID der Quelltabelle.VIEW_PARAMETERS: Der Name des Parameters der Ansicht in einfachen Anführungszeichen, der als Argument an dieVIEW_PARAMETERS()Funktion übergeben werden soll.
Optional:
- Wenn Sie die parametrisierte Ansicht vor dem Löschen schützen möchten, fügen Sie dem Befehl das Flag
--deletion-protectionhinzu. Wenn Sie diese Einstellung nicht anwenden, kann die Ansicht gelöscht werden. Sie können das Löschen von Ansichten auch explizit zulassen, indem Sie--no-deletion-protectionanhängen. Weitere Informationen finden Sie im Abschnitt Parametrisierte Ansicht aktualisieren in diesem Dokument.
Parametrisierte Ansicht mit einem strukturierten Zeilenschlüssel erstellen
Wenn Ihre Tabelle einen strukturierten Zeilenschlüssel verwendet, können Sie nach einem bestimmten Segment des Zeilenschlüssels filtern.
Wenn ein Zeilenschlüssel in einer Tabelle mit dem Kaufverlauf beispielsweise den Nutzer, den Zeitstempel des Kaufdatums und die Bestell-ID enthält, die durch ein #-Symbol getrennt sind, können Sie das Zeilenschema so angeben:
field {
field_name: "user_id"
type: { bytesType { encoding { raw {} } } }
}
field {
field_name: "reversed_timestamp"
type: { timestampType { encoding { unixMicrosInt64 { encoding: { orderedCodeBytes: {} } } } } }
}
field {
field_name: "order_id"
type: { stringType { encoding { utf8Bytes {} } } }
}
encoding {
delimitedBytes { delimiter "#" }
}
Anschließend können Sie eine Ansicht erstellen, die nach dem Feld „Nutzer-ID“ filtert:
gcloud bigtable logical-views create VIEW \
--instance=INSTANCE \
--query="SELECT * FROM TABLE_ID WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)"
Ersetzen Sie Folgendes:
VIEW: Eine ID mit bis zu 128 Zeichen für die neue parametrisierte Ansicht. Die ID muss unter den Tabellen-IDs und Ansichts IDs in der Instanz eindeutig sein.INSTANCE: Die ID der Instanz, in der die parametrisierte Ansicht erstellt werden soll.TABLE_ID: Die ID der Quelltabelle.
Parametrisierte Ansicht aktualisieren
Sie aktualisieren eine parametrisierte Ansicht auf dieselbe Weise wie Sie eine logische Ansicht aktualisieren.
Parametrisierte Ansicht löschen
Sie löschen eine parametrisierte Ansicht auf dieselbe Weise wie Sie eine logische Ansicht löschen.
Informationen zu parametrisierten Ansichten ansehen
Sie können eine Liste der parametrisierten Ansichten auf dieselbe Weise aufrufen wie eine Liste der logischen Ansichten für eine Instanz.
Parametrisierte Ansichten abfragen
Sie fragen parametrisierte Ansichten ähnlich wie reguläre Tabellen ab, geben aber die Zuordnung view_parameters in der Anfrage an.
Im folgenden Beispiel wird gezeigt, wie Sie eine parametrisierte Ansicht mit dem Namen purchase_history_pv abfragen, die Daten anhand einer Nutzer-ID filtert.
// Assumes 'purchase_history_pv' was created with the definition:
// SELECT * FROM purchases WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)
String query = "SELECT customer_info[email], order_details[status], order_info[items] from purchase_history_pv";
PreparedStatement preparedStatement = dataClient.prepareStatement(query);
BoundStatement boundStatement = preparedStatement.bind().build();
// The user ID is now passed out-of-band in a view parameters map.
Map<String, Value> viewParameters = new HashMap<>();
viewParameters.put("user_id", Value.newBuilder().setType(stringType()).setStringValue(userId).build());
// Execute the query, passing the view parameters using a proto field in the request.
ResultSet rs = dataClient.executeQuery(
boundStatement,
viewParameters
);
Dadurch kann der Nutzer den Parameter user_id nicht in der Abfrage selbst sehen oder bearbeiten, was eine saubere logische Trennung ermöglicht.