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:

  1. Installieren Sie die Google Cloud CLI.

  2. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  3. 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
  • Liste: 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-SELECT-Anweisung definiert wird, die die VIEW_PARAMETERS()-Funktion enthalten kann.

Console

  1. Öffnen Sie in der Google Cloud Console die Liste der Bigtable-Instanzen.

    Liste der Instanzen öffnen

  2. Wählen Sie eine Instanz aus der Liste aus.

  3. Klicken Sie im Navigationsbereich auf Bigtable Studio.

  4. Öffnen Sie einen neuen Tab, indem Sie auf das Menü „Neuer Tab“ klicken und dann Editor auswählen.

  5. Schreiben Sie Ihre SQL-Abfrage in den Abfrageeditor. In der Abfragedefinition muss die Funktion VIEW_PARAMETERS() aufgerufen werden, um einen oder mehrere Ansichtsparameter anzugeben. Beispiel:

    SELECT *
    FROM TABLE_ID
    WHERE STARTS_WITH(_key, CAST(VIEW_PARAMETERS('PARAM_NAME') AS BYTES))
    

    Ersetzen Sie Folgendes:

    • TABLE_ID: Die ID der Quelltabelle.
    • PARAM_NAME: Der Name des Ansichtsparameters, der in einfache Anführungszeichen eingeschlossen ist und als Argument an die Funktion VIEW_PARAMETERS() übergeben werden soll. Damit wird der Parametername definiert, nicht sein Laufzeitwert. Sie geben den Laufzeitwert an, wenn Sie die parametrisierte Ansicht abfragen.

    Wenn die Abfrage gültiges SQL ist, wird die Meldung Gültig angezeigt.

  6. Optional: Wenn Sie die Anweisung im SQL-Stil formatieren möchten, klicken Sie auf Formatieren.

  7. Klicken Sie auf Speichern und wählen Sie dann Als logische Ansicht speichern aus.

  8. Geben Sie im Dialogfeld Logische Ansicht speichern einen Namen für die Ansicht ein und klicken Sie dann auf Speichern.

    Die Ansicht wird im Bereich Explorer in der Liste Logische Ansichten mit einem parametrisierten Ansichtssymbol variable_add angezeigt.

    Weitere Informationen zur Verwendung des Abfrageeditors finden Sie unter Daten mit Bigtable Studio verwalten.

gcloud

Verwenden Sie den Befehl gcloud bigtable logical-views create, 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('PARAM_NAME') AS BYTES))"

Ersetzen Sie Folgendes:

  • VIEW: Eine ID mit bis zu 128 Zeichen für die neue parametrisierte Ansicht. Die ID muss unter allen 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.
  • PARAM_NAME: Der Name des Ansichtsparameters, der in einfache Anführungszeichen eingeschlossen ist und als Argument an die Funktion VIEW_PARAMETERS() übergeben werden soll. Damit wird der Parametername definiert, nicht der Laufzeitwert. Sie geben den Laufzeitwert an, wenn Sie die parametrisierte Ansicht abfragen.

Optional:

  • Wenn Sie die parametrisierte Ansicht vor dem Löschen schützen möchten, hängen Sie das Flag --deletion-protection an den Befehl an. 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-protection anhängen. Weitere Informationen finden Sie in diesem Dokument im Abschnitt Parametrisierte Ansicht aktualisieren.

Parametrisierte Ansicht mit einem strukturierten Zeilenschlüssel erstellen

Wenn in Ihrer Tabelle ein strukturierter Zeilenschlüssel verwendet wird, können Sie nach einem bestimmten Segment des Zeilenschlüssels filtern. Weitere Informationen finden Sie unter Schemas für Zeilenschlüssel verwalten.

Wenn in einem Zeilenschlüssel in einer Tabelle mit dem Kaufverlauf beispielsweise der Nutzer, der Zeitstempel des Kaufdatums und die Bestell-ID gespeichert sind, die durch das 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 Datenansicht erstellen, die nach dem Feld „User-ID“ gefiltert wird:

Console

  1. Öffnen Sie in Bigtable Studio den Abfrageeditor und geben Sie die SQL-Abfrage ein, die nach dem Segment des Zeilenschlüssels filtert:

    SELECT *
    FROM TABLE_ID
    WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)
    

    Ersetzen Sie TABLE_ID durch die ID der Quelltabelle.

  2. Klicken Sie auf Speichern und wählen Sie dann Als logische Ansicht speichern aus.

  3. Geben Sie im Dialogfeld Logische Ansicht speichern einen Namen für die Ansicht ein und klicken Sie dann auf Speichern.

    Die Ansicht wird im Bereich Explorer in der Liste Logische Ansichten mit einem parametrisierten Ansichtssymbol variable_add angezeigt.

gcloud

Verwenden Sie den Befehl gcloud bigtable logical-views create, um eine parametrisierte Ansicht mit einem strukturierten Zeilenschlüssel zu erstellen.

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 allen 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 eine logische Ansicht.

Parametrisierte Ansicht löschen

Sie löschen eine parametrisierte Ansicht auf dieselbe Weise wie eine logische Ansicht.

Informationen zu parametrisierten Ansichten ansehen

Eine Liste der parametrisierten Ansichten wird auf dieselbe Weise angezeigt wie eine Liste der logischen Ansichten für eine Instanz.

Console

  1. Öffnen Sie in der Google Cloud Console die Liste der Bigtable-Instanzen.

    Liste der Instanzen öffnen

  2. Wählen Sie eine Instanz aus der Liste aus.

  3. Klicken Sie im Navigationsbereich auf Bigtable Studio.

  4. Maximieren Sie im Bereich Explorer die Option Logische Ansichten.

    Parametrisierte Ansichten werden in der Liste mit einem Symbol für parametrisierte Ansichten variable_add angezeigt, das sie von standardmäßigen logischen Ansichten unterscheidet.

  5. Wenn die Instanz mehr als 10 Ansichten hat, klicken Sie auf Mehr anzeigen, um die nächsten 10 Ansichten zu laden.

gcloud

Eine Liste der logischen Ansichten für eine Instanz erhalten Sie mit dem Befehl gcloud bigtable logical-views list.

gcloud bigtable logical-views list --instance=INSTANCE

Ersetzen Sie INSTANCE durch die Instanz-ID.

Parametrisierte Ansichten abfragen

Sie fragen parametrisierte Ansichten ähnlich wie normale Tabellen ab, stellen die view_parameters-Zuordnung jedoch in der Anfrage bereit.

Console

  1. Öffnen Sie in der Google Cloud Console die Liste der Bigtable-Instanzen.

    Liste der Instanzen öffnen

  2. Wählen Sie eine Instanz aus der Liste aus.

  3. Klicken Sie im Navigationsbereich auf Bigtable Studio.

  4. Maximieren Sie im Bereich Explorer die Option Logische Ansichten.

  5. Klicken Sie neben der parametrisierten Ansicht, die Sie abfragen möchten, auf das Menü more_vert Aktionen ansehen und dann auf Ansicht abfragen.

    Der Bereich Parameter wird geöffnet. Die Namen der Ansichtsparameter sind bereits eingetragen.

  6. Geben Sie unter Parameter ansehen die Laufzeitwerte für jeden erforderlichen Parameter in die Felder Wert ein.

    Parameterwerte werden als Strings übergeben. Wenn ein Parameter in Ihrer Ansichtsdefinition in einen anderen Typ umgewandelt wird (z. B. eine Ganzzahl oder Bytes), geben Sie den Rohstringwert ein.

  7. Optional: Wenn Sie weitere Parameter hinzufügen möchten, klicken Sie auf Parameter hinzufügen und geben Sie den Namen und den Wert des Parameters ein. Parameternamen müssen innerhalb von Ansichtsparametern eindeutig sein.

  8. Klicken Sie auf Speichern.

  9. Klicken Sie im Abfrageeditor auf Ausführen.

    Die Ergebnisse Ihrer Abfrage werden in der Tabelle Ergebnisse angezeigt.

    Wenn Sie die Abfrage ausführen, ohne die erforderlichen Ansichtsparameter anzugeben, wird im Ergebnisbereich eine Fehlermeldung mit der Schaltfläche Parameter bearbeiten angezeigt. Klicken Sie auf Parameter bearbeiten, um den Bereich Parameter zu öffnen, und geben Sie die fehlenden Parameterwerte ein.

Parameterwerte werden für jeden Abfrageeditor-Tab konfiguriert. Wenn Sie während Ihrer Sitzung Bigtable Studio verlassen und zurückkehren, bleiben Ihre geöffneten Tabs, Abfragen, Ergebnisse und konfigurierten Parameter erhalten.

Java

Im folgenden Beispiel wird eine parametrisierte Ansicht mit dem Namen purchase_history_pv abgefragt, in der Daten anhand einer Nutzer-ID gefiltert werden:

// 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
);

So kann der Nutzer den Parameter user_id in der Abfrage selbst nicht sehen oder bearbeiten, was für eine saubere logische Trennung sorgt.

Nächste Schritte