Tutorial do BigQuery (2a geração)


Neste tutorial, mostraremos como criar uma função do Cloud HTTP que envia uma consulta para o BigQuery.

Objetivos

Custos

Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:

  • Cloud Functions
  • Cloud Build
  • Artifact Registry

Veja detalhes em Preços do Cloud Functions.

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Ative as APIs Cloud Functions, Cloud Build, and Artifact Registry.

    Ative as APIs

  5. Instale a CLI do Google Cloud.
  6. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  7. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  8. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  9. Ative as APIs Cloud Functions, Cloud Build, and Artifact Registry.

    Ative as APIs

  10. Instale a CLI do Google Cloud.
  11. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  12. Se a gcloud CLI já estiver instalada, atualize-a executando o seguinte comando:

    gcloud components update
  13. Prepare seu ambiente de desenvolvimento.

    Acessar o guia de configuração do Node.js

Como preparar o aplicativo

  1. Clone o repositório do aplicativo de amostra na máquina local:

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

    Outra alternativa é fazer download da amostra como um arquivo zip e extraí-la.

  2. Altere para o diretório que contém o código de amostra do Cloud Functions:

    cd nodejs-docs-samples/functions/v2/helloBigQuery
  3. Confira o código de amostra. A amostra envia uma consulta para palavras que ocorrem pelo menos 400 vezes no conjunto de dados especificado e retorna o resultado.

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

Como implantar a função

Para implantar a função com um gatilho HTTP, execute o seguinte comando no diretório que contém o código de amostra:

gcloud functions deploy nodejs-bq-function \
--gen2 \
--runtime=nodejs20  \
--region=REGION \
--source=. \
--entry-point=helloBigQuery \
--trigger-http \
--allow-unauthenticated

É possível usar os seguintes valores para a sinalização --runtime para especificar sua versão preferida do Node.js:

  • nodejs18 (recomendado)
  • nodejs16
  • nodejs14
  • nodejs12
  • nodejs10

A sinalização --allow-unauthenticated permite que você atinja a função sem autenticação. Para exigir autenticação, omita a sinalização.

Como acionar a função

  1. Quando a implantação da função estiver concluída, anote a propriedade uri ou encontre-a usando o seguinte comando:

    gcloud functions describe nodejs-bq-function --gen2 --region=REGION --format="value(serviceConfig.uri)"
  2. Acesse o URI no seu navegador. Você verá uma lista das palavras que correspondem aos critérios de consulta e quantas vezes cada palavra aparece no conjunto de dados de destino.

Limpeza

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

Excluir o projeto

O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.

Para excluir o projeto:

  1. No Console do Google Cloud, acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Como excluir a Função do Cloud

A exclusão de Cloud Functions não remove nenhum recurso armazenado no Cloud Storage.

Para excluir o Cloud Function criado neste tutorial, execute o seguinte comando:

gcloud functions delete nodejs-bq-function --gen2 --region REGION

Também é possível excluir o Cloud Functions do Console do Google Cloud.