Crea una funzione Cloud Run che utilizza BigQuery per inviare una query e restituire i risultati.

Questo tutorial mostra come scrivere una funzione Cloud Run HTTP che invia una query a BigQuery.

Prepara l'applicazione

  1. Clona il repository dell'applicazione di esempio sulla tua macchina locale:

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    

    In alternativa, scarica il campione come file ZIP ed estrailo.

  2. Passa alla directory che contiene il codice di esempio:

    cd nodejs-docs-samples/functions/v2/helloBigQuery
    
  3. Dai un'occhiata al codice campione. L'esempio invia una query per le parole che si verificano almeno 400 volte nel set di dati specificato e restituisce il risultato.

    // Import the Google Cloud client library
    const {BigQuery} = require('@google-cloud/bigquery');
    const bigquery = new BigQuery();
    
    const functions = require('@google-cloud/functions-framework');
    
    /**
     * HTTP Cloud Function that returns BigQuery query results
     *
     * @param {Object} req Cloud Function request context.
     * @param {Object} res Cloud Function response context.
     */
    functions.http('helloBigQuery', async (req, res) => {
      // Define the SQL query
      // Queries the public Shakespeare dataset using named query parameter
      const sqlQuery = `
          SELECT word, word_count
                FROM \`bigquery-public-data.samples.shakespeare\`
                WHERE corpus = @corpus
                AND word_count >= @min_word_count
                ORDER BY word_count DESC`;
    
      const options = {
        query: sqlQuery,
        // Location must match that of the dataset(s) referenced in the query.
        location: 'US',
        params: {corpus: 'romeoandjuliet', min_word_count: 400},
      };
    
      // Execute the query
      try {
        const [rows] = await bigquery.query(options);
        // Send the results
        res.status(200).send(rows);
      } catch (err) {
        console.error(err);
        res.status(500).send(`Error querying BigQuery: ${err}`);
      }
    });

esegui il deployment della funzione

Per eseguire il deployment della funzione con un trigger HTTP:

  1. Esegui il seguente comando nella directory che contiene il codice campione:

    gcloud run deploy FUNCTION \
       --source . \
       --function FUNCTION_ENTRYPOINT \
       --base-image BASE_IMAGE \
       --region REGION \
       --allow-unauthenticated

    Sostituisci:

    • FUNCTION con il nome della funzione che stai eseguendo il deployment, ad esempio my-bigquery-function. Puoi omettere completamente questo parametro, ma ti verrà chiesto il nome se lo ometti.

    • FUNCTION_ENTRYPOINT con l'entry point della tua funzione nel codice sorgente. Questo è il codice eseguito da Cloud Run quando viene eseguita la funzione. Il valore di questo flag deve essere un nome di funzione o un nome di classe completo esistente nel codice sorgente. Il punto di ingresso che devi specificare per la funzione di esempio è helloBigQuery.

    • BASE_IMAGE con l'ambiente dell'immagine di base per la tua funzione, ad esempio nodejs22. Per informazioni dettagliate sulle immagini di base e sui pacchetti inclusi in ogni immagine, consulta Immagini di base dei runtime.

    • REGION con la Google Cloud regione in cui vuoi eseguire il deployment della funzione. Ad esempio: europe-west1.

    Facoltativamente,

    • Se stai creando una funzione HTTP pubblica, ad esempio un webhook, specifica il flag --allow-unauthenticated. Questo flag assegna il ruolo Invoker IAM di Cloud Run all'identificatore speciale allUser. Puoi utilizzare IAM per modificare questa impostazione in un secondo momento dopo aver creato il servizio.

Testa la funzione

  1. Al termine del deployment della funzione, copia la proprietà uri.

  2. Visita questo URI nel browser.

    Dovresti visualizzare un elenco delle parole che corrispondono ai criteri della query e quante volte ogni parola viene visualizzata nel set di dati di destinazione.