Esegui query federate con Data Boost

Questa pagina spiega come utilizzare Spanner Data Boost quando esegui query federate da BigQuery a un database Spanner. Con Data Boost, le query federate vengono eseguite con un impatto minimo sui workload esistenti nell'istanza Spanner di cui è stato eseguito il provisioning. Le query Data Boost da BigQuery a un database Spanner possono unire i dati di BigQuery con i dati di Spanner.

La federazione di Spanner consente a BigQuery di eseguire query sui dati residenti in Spanner in tempo reale, senza copiare o spostare i dati. Per scoprire di più sulle query federate di Spanner, consulta Query federate di Spanner. Per scoprire di più su Data Boost, consulta Panoramica di Data Boost.

Prima di iniziare

Prima di poter eseguire query federate con Data Boost, devi completare le seguenti attività:

Crea un'istanza e un database Spanner

Se non hai un'istanza e un database Spanner, segui i passaggi descritti in Creare ed eseguire query su un database utilizzando la console Google Cloud per crearli.

Abilita l'API BigQuery Connection

L'API di connessione BigQuery ti consente di gestire le connessioni BigQuery a origini dati esterne come un database Spanner.

  • Enable the BigQuery connection API.

    Enable the API

Per ulteriori informazioni, consulta l'API di connessione BigQuery nella documentazione di BigQuery.

Concedi le autorizzazioni IAM per Data Boost agli entità principali

A un principale devono essere concesse le seguenti autorizzazioni per eseguire query ed esportazioni con Data Boost:

  • spanner.instances.get: consente di ottenere la configurazione di un'istanza.
  • spanner.databases.useDataBoost: ti consente di utilizzare le risorse di calcolo di Spanner Data Boost per elaborare query partizionate

Per saperne di più sulle autorizzazioni Spanner, consulta Autorizzazioni di Identity and Access Management (IAM).

Per concedere queste autorizzazioni richieste, ti consigliamo di creare un ruolo personalizzato basato sul ruolo Lettore database Spanner (roles/spanner.databaseReader) che includa spanner.instances.get e spanner.databases.useDataBoost. Puoi quindi aggiungere questo ruolo a qualsiasi entità che deve essere in grado di eseguire query ed esportazioni con Data Boost. Per scoprire come creare un ruolo IAM personalizzato, consulta Creare un ruolo personalizzato. Per saperne di più sui ruoli predefiniti in Spanner, consulta Ruoli predefiniti.

Esegui una query Data Boost federata

Per eseguire una query di Data Boost da BigQuery a un'origine esterna, devi disporre di una connessione BigQuery all'origine esterna e dell'ID della connessione. Quando esegui una query Spanner federata con Data Boost, l'origine esterna è un database Spanner. Dopo aver creato l'ID connessione, questo viene utilizzato da BigQuery per eseguire una query Data Boost di un database Spanner.

Utilizza una delle seguenti opzioni per creare un ID connessione BigQuery, quindi utilizza l'ID connessione per eseguire una query Data Boost da BigQuery:

  1. Inizia in Spanner: crea l'ID connessione esterna BigQuery nella console Spanner. Una volta creato l'ID connessione nella console Spanner, viene visualizzato un messaggio che ti reindirizza alla console BigQuery per eseguire una query Data Boost federata in un database Spanner.

  2. Inizia in BigQuery: crea l'ID connessione esterna di Data Boost nella console BigQuery o utilizzando lo strumento a riga di comando bq. Dopo aver creato l'ID connessione, rimani nella console BigQuery per eseguire una query Data Boost federata in un database Spanner.

Inizia in Spanner per eseguire una query Data Boost

Per eseguire una query Data Boost federata a partire da Spanner Studio, segui questi passaggi:

  1. Vai alla pagina Istanze di Spanner nella console Google Cloud.

    Vai alla pagina Istanze

    La console mostra un elenco delle tue istanze Spanner.

  2. Seleziona un'istanza Spanner e poi un database.

  3. Nella pagina Panoramica del database, fai clic su Spanner Studio nel menu di navigazione.

  4. Fai clic su Visualizza in BigQuery.

  5. Nella finestra di dialogo Visualizza in BigQuery, inserisci un ID connessione.

    L'ID connessione viene utilizzato per creare una nuova connessione esterna BigQuery al database Spanner. Fai riferimento alla connessione esterna utilizzando il seguente pattern:

    PROJECT-ID.LOCATION.CONNECTION-ID
    

    Se l'ID esiste già, si verifica un errore.

  6. Compila il resto della finestra di dialogo ed esegui le seguenti operazioni:

    • Seleziona Leggi dati in parallelo.
    • Seleziona Utilizza Spanner Data Boost.
  7. Fai clic su Visualizza in BigQuery.

    BigQuery Studio si apre con la seguente query:

    SELECT * FROM EXTERNAL_QUERY("PROJECT-ID.LOCATION.CONNECTION-ID", "SELECT * FROM INFORMATION_SCHEMA.TABLES;");
    

    Puoi sostituirla con la query federata. Ad esempio, potresti eseguire una query simile a quella riportata di seguito. Questo esempio esegue una query federata da una tabella denominata orders in un database Spanner e unisce i risultati a una tabella BigQuery denominata mydataset.customers.

    SELECT c.customer_id, c.name, rq.first_order_date
    FROM mydataset.customers AS c
    LEFT OUTER JOIN EXTERNAL_QUERY(
      'my-project.us.example-db',
      '''SELECT customer_id, MIN(order_date) AS first_order_date
      FROM orders
      GROUP BY customer_id''') AS rq
      ON rq.customer_id = c.customer_id
    GROUP BY c.customer_id, c.name, rq.first_order_date;

Inizia in BigQuery per eseguire una query Data Boost

Per creare una connessione dati esterna da BigQuery a un database Spanner e utilizzarla per eseguire una query federata di Data Boost da BigQuery, seleziona una delle seguenti opzioni:

Console

  1. Vai a Creare connessioni Spanner nella documentazione di BigQuery e segui le istruzioni nella scheda Console.

  2. Nel riquadro Origine dati esterna, segui questi passaggi:

    • Seleziona Leggi dati in parallelo.
    • Seleziona Utilizza Spanner Data Boost.

bq

  1. Vai a Creare connessioni Spanner nella documentazione di BigQuery e segui le istruzioni riportate nella scheda bq*.

  2. Imposta le seguenti proprietà di connessione su true:

    • useParallelism
    • useDataBoost

L'esempio seguente utilizza il comando bq mk per creare una nuova connessione denominata my_connection con le due proprietà obbligatorie per Data Boost:

bq mk --connection --connection_type='CLOUD_SPANNER' --location='us' \
--properties='{"database":"projects/my-project/instances/my-instance/databases/my-database", "useParallelism":true, "useDataBoost": true}' my_connection

Passaggi successivi