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. Konfigurieren Sie die gcloud CLI für die Verwendung Ihrer föderierten Identität.

    Weitere Informationen finden Sie unter 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
  • 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 die VIEW_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-protection hinzu. 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 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.

Nächste Schritte