Creare e gestire viste parametrizzate

Puoi creare una vista parametrizzata da una vista logica in Bigtable e poi eseguire operazioni sulle viste parametrizzate.

Prima di leggere questa pagina, familiarizza con la panoramica delle viste parametrizzate.

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 le visualizzazioni parametrizzate, 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
  • Elenco: bigtable.logicalViews.list

Per creare una vista parametrizzata, devi disporre almeno dell'autorizzazione bigtable.tables.readRows sulla tabella di origine.

Creare una vista parametrizzata

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

Console

  1. Nella console Google Cloud , apri l'elenco delle istanze Bigtable.

    Apri l'elenco delle istanze

  2. Seleziona un'istanza dall'elenco.

  3. Nel riquadro di navigazione, fai clic su Bigtable Studio.

  4. Apri una nuova scheda facendo clic su Menu Nuova scheda e poi seleziona Editor.

  5. Nell'editor di query, scrivi la query SQL. La definizione della query deve chiamare la funzione VIEW_PARAMETERS() per specificare uno o più parametri della vista. Ad esempio:

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

    Sostituisci quanto segue:

    • TABLE_ID: l'ID della tabella di origine.
    • PARAM_NAME: il nome del parametro della visualizzazione, racchiuso tra virgolette singole, da passare come argomento alla funzione VIEW_PARAMETERS(). Definisce il nome del parametro, non il suo valore di runtime. Fornisci il valore di runtime quando esegui una query sulla vista parametrizzata.

    Se la query è un SQL valido, viene visualizzato il messaggio Valido.

  6. (Facoltativo) Per formattare l'istruzione in stile SQL, fai clic su Formatta.

  7. Fai clic su Salva e poi seleziona Salva come vista logica.

  8. Nella finestra di dialogo Salva la visualizzazione logica, inserisci un nome per la visualizzazione e poi fai clic su Salva.

    La vista viene visualizzata nel riquadro Explorer, nell'elenco Viste logiche, con un'icona di vista parametrizzata variable_add.

    Per saperne di più sull'utilizzo dell'editor di query, consulta Gestire i dati utilizzando Bigtable Studio.

gcloud

Per creare una vista parametrizzata, utilizza il comando gcloud bigtable logical-views create.

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

Sostituisci quanto segue:

  • VIEW: un ID lungo fino a 128 caratteri per la nuova visualizzazione parametrizzata. L'ID deve essere univoco tra gli ID tabella e gli ID vista nell'istanza.
  • INSTANCE: l'ID dell'istanza in cui creare la vista parametrizzata.
  • TABLE_ID: l'ID della tabella di origine.
  • PARAM_NAME: il nome del parametro della visualizzazione, racchiuso tra virgolette singole, da passare come argomento alla funzione VIEW_PARAMETERS(). Definisce il nome del parametro, non il suo valore di runtime. Fornisci il valore di runtime quando esegui una query sulla vista parametrizzata.

Facoltativamente,

  • Per proteggere la visualizzazione parametrizzata 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 saperne di più, consulta la sezione Aggiornare una vista parametrizzata di questo documento.

Crea una visualizzazione parametrizzata 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. Per saperne di più, consulta Gestire chiave di riga riga.

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

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

A questo punto, puoi creare una vista che filtra in base al campo ID utente:

Console

  1. In Bigtable Studio, apri l'editor di query e inserisci la query SQL che filtra in base al segmento della chiave di riga:

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

    Sostituisci TABLE_ID con l'ID della tabella di origine.

  2. Fai clic su Salva e poi seleziona Salva come vista logica.

  3. Nella finestra di dialogo Salva la visualizzazione logica, inserisci un nome per la visualizzazione e poi fai clic su Salva.

    La vista viene visualizzata nel riquadro Explorer, nell'elenco Viste logiche, con un'icona variable_add di visualizzazione parametrizzata.

gcloud

Per creare una vista parametrizzata con una chiave di riga strutturata, utilizza il comando gcloud bigtable logical-views create.

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 parametrizzata. L'ID deve essere univoco tra gli ID tabella e gli ID vista nell'istanza.
  • INSTANCE: l'ID dell'istanza in cui creare la vista parametrizzata.
  • TABLE_ID: l'ID della tabella di origine.

Aggiornare una vista parametrizzata

Aggiorni una visualizzazione parametrizzata nello stesso modo in cui aggiorni una visualizzazione logica.

Eliminare una vista parametrizzata

Elimina una vista parametrizzata nello stesso modo in cui elimini una vista logica.

Visualizzare informazioni sulle viste parametrizzate

Visualizzi un elenco di viste parametrizzate nello stesso modo in cui visualizzi un elenco di viste logiche per un'istanza.

Console

  1. Nella console Google Cloud , apri l'elenco delle istanze Bigtable.

    Apri l'elenco delle istanze

  2. Seleziona un'istanza dall'elenco.

  3. Nel riquadro di navigazione, fai clic su Bigtable Studio.

  4. Nel riquadro Explorer, espandi Viste logiche.

    Le viste parametrizzate vengono visualizzate nell'elenco con un'icona variable_add che le distingue dalle viste logiche standard.

  5. Se l'istanza ha più di 10 visualizzazioni, fai clic su Mostra altro per caricare le 10 successive.

gcloud

Per visualizzare un elenco delle visualizzazioni logiche per un'istanza, utilizza il comando gcloud bigtable logical-views list.

gcloud bigtable logical-views list --instance=INSTANCE

Sostituisci INSTANCE con l'ID istanza.

Esegui query sulle viste parametrizzate

Esegui query sulle viste parametrizzate in modo simile alle tabelle normali, ma fornisci la mappa view_parameters nella richiesta.

Console

  1. Nella console Google Cloud , apri l'elenco delle istanze Bigtable.

    Apri l'elenco delle istanze

  2. Seleziona un'istanza dall'elenco.

  3. Nel riquadro di navigazione, fai clic su Bigtable Studio.

  4. Nel riquadro Explorer, espandi Viste logiche.

  5. Accanto alla vista parametrizzata che vuoi interrogare, fai clic sul menu more_vert Visualizza azioni e poi su Interroga vista.

    Si apre un riquadro Parametri con i nomi dei parametri della vista precompilati.

  6. In Visualizza parametri, inserisci i valori di runtime per ogni parametro obbligatorio nei campi Valore.

    I valori dei parametri vengono passati come stringhe. Se un parametro nella definizione della vista viene convertito in un altro tipo (ad esempio un numero intero o byte), inserisci il valore della stringa non elaborata.

  7. (Facoltativo) Per aggiungere altri parametri, fai clic su Aggiungi parametro e poi inserisci il nome e il valore del parametro. I nomi dei parametri devono essere univoci all'interno dei parametri della vista.

  8. Fai clic su Salva.

  9. Nell'editor di query, fai clic su Esegui.

    I risultati della query vengono visualizzati nella tabella Risultati.

    Se esegui la query senza fornire i parametri di visualizzazione richiesti, nella sezione dei risultati viene visualizzato un messaggio di errore con un pulsante Modifica parametri. Fai clic su Modifica parametri per aprire il riquadro Parametri e inserisci i valori dei parametri mancanti.

I valori dei parametri vengono configurati per ogni scheda dell'editor di query. Se esci da Bigtable Studio durante la sessione e torni indietro, le schede aperte, le query, i risultati e i parametri configurati vengono conservati.

Java

L'esempio seguente mostra come eseguire una query su una vista parametrizzata 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 pulita.

Passaggi successivi