Creare e gestire visualizzazioni con parametri

Puoi creare una visualizzazione con parametri da una visualizzazione logica in Bigtable ed eseguire operazioni sulle visualizzazioni con parametri.

Prima di leggere questa pagina, consulta la panoramica delle visualizzazioni con parametri .

Prima di iniziare

Se prevedi di utilizzare Google Cloud CLI, segui questi passaggi:

  1. Installa Google Cloud CLI.

  2. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  3. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare e gestire visualizzazioni con parametri, chiedi all'amministratore di concederti il ruolo Bigtable Admin (roles/bigtable.admin) sull'istanza.

In alternativa, puoi richiedere le seguenti autorizzazioni a livello di istanza:

  • Crea: bigtable.logicalViews.create
  • Aggiorna: bigtable.logicalViews.update
  • Elimina: bigtable.logicalViews.delete
  • Elenca: bigtable.logicalViews.list

Per creare una visualizzazione con parametri, devi disporre anche almeno dell'autorizzazione bigtable.tables.readRows sulla tabella di origine.

Creare una visualizzazione con parametri

Una visualizzazione con parametri è una tabella virtuale definita da un'istruzione SQL SELECT che può includere la funzione VIEW_PARAMETERS().

Per creare una visualizzazione con parametri, utilizza il gcloud bigtable logical-views create comando.

gcloud bigtable logical-views create VIEW \
  --instance=INSTANCE \
  --query="SELECT * FROM TABLE_ID WHERE STARTS_WITH(_key, CAST(VIEW_PARAMETERS('VIEW_PARAMETERS') AS BYTES))"

Sostituisci quanto segue:

  • VIEW: un ID di massimo 128 caratteri per la nuova visualizzazione con parametri. L'ID deve essere univoco tra gli ID delle tabelle e gli ID delle visualizzazioni nell'istanza.
  • INSTANCE: l'ID dell'istanza in cui creare la visualizzazione con parametri.
  • TABLE_ID: l'ID della tabella di origine.
  • VIEW_PARAMETERS: il nome del parametro della visualizzazione tra virgolette singole da passare come argomento alla funzione VIEW_PARAMETERS().

(Facoltativo)

  • Per proteggere la visualizzazione con parametri dall'eliminazione, aggiungi il flag --deletion-protection al comando. Se non applichi questa impostazione, la visualizzazione può essere eliminata. Puoi anche consentire esplicitamente l'eliminazione della visualizzazione aggiungendo --no-deletion-protection. Per ulteriori informazioni, consulta la sezione Aggiornare una visualizzazione con parametri di questo documento.

Creare una visualizzazione con parametri con una chiave di riga strutturata

Se la tabella utilizza una chiave di riga strutturata, puoi filtrare in base a un segmento specifico della chiave di riga.

Ad esempio, se una chiave di riga in una tabella della cronologia degli acquisti memorizza l'utente, il timestamp della data di acquisto e l'ID ordine, delimitati da un simbolo #, puoi specificare lo schema di riga come segue:

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 "#" }
  }

Puoi quindi creare una visualizzazione che filtra in base al campo ID utente:

gcloud bigtable logical-views create VIEW \
    --instance=INSTANCE \
    --query="SELECT * FROM TABLE_ID WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES)"

Sostituisci quanto segue:

  • VIEW: un ID di massimo 128 caratteri per la nuova visualizzazione con parametri. L'ID deve essere univoco tra gli ID delle tabelle e gli ID delle visualizzazioni nell'istanza.
  • INSTANCE: l'ID dell'istanza in cui creare la visualizzazione con parametri.
  • TABLE_ID: l'ID della tabella di origine.

Aggiornare una visualizzazione con parametri

Puoi aggiornare una visualizzazione con parametri nello stesso modo in cui aggiorni una visualizzazione logica.

Eliminare una visualizzazione con parametri

Puoi eliminare una visualizzazione con parametri nello stesso modo in cui elimini una visualizzazione logica.

Visualizzare informazioni sulle visualizzazioni con parametri

Puoi visualizzare un elenco di visualizzazioni con parametri nello stesso modo in cui visualizzi un elenco di visualizzazioni logiche per un'istanza.

Eseguire query sulle visualizzazioni con parametri

Puoi eseguire query sulle visualizzazioni con parametri in modo simile alle tabelle normali, ma devi fornire la mappa view_parameters nella richiesta.

L'esempio seguente mostra come eseguire una query su una visualizzazione con parametri denominata purchase_history_pv, che filtra i dati in base a un ID utente.

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

In questo modo, l'utente non può visualizzare o manipolare il parametro user_id all'interno della query stessa, fornendo una separazione logica chiara.

Passaggi successivi