Consultar um conjunto de dados público com biblioteca de cliente Java do BigQuery

Consultar um conjunto de dados público com biblioteca de cliente Java do BigQuery

Você vai aprender a:

  1. Ativar o Cloud Shell em um projeto do Google Cloud .
  2. Abrir o editor do Cloud Shell.
  3. Preparar dependências para consultas.
  4. Consultar um conjunto de dados público no BigQuery.
  5. Fazer a limpeza.

Tempo estimado para a conclusão:

Clique em Iniciar para começar.

Ativar o Cloud Shell em um projeto do Google Cloud

  1. Se você não ativar o faturamento de um projeto, vai trabalhar automaticamente no sandbox do BigQuery. No sandbox do BigQuery, você aprende a usar o BigQuery com um conjunto limitado de recursos sem custos financeiros. Se você não planeja usar o projeto fora deste documento, recomendamos utilizar o sandbox do BigQuery.

  2. Clique em Ativar o Cloud Shell. Mostre

Para saber como abrir o editor do Cloud Shell, clique em Próximo.

Abrir o Editor do Cloud Shell

  1. No Cloud Shell, crie um projeto Java usando o Apache Maven:

    mvn archetype:generate \
        -DgroupId=com.google.app \
        -DartifactId=bigquery-java-quickstart \
        -DinteractiveMode=false
    

    Esse comando cria um projeto Maven chamado bigquery-java-quickstart.

    A resposta será semelhante a esta: Várias linhas são omitidas para simplificar a resposta.

    [INFO] Scanning for projects...
    ...
    [INFO] Building Maven Stub Project (No POM) 1
    ...
    [INFO] BUILD SUCCESS
    ...
    

    Muitos sistemas de gerenciamento de dependências podem ser usados além do Maven. Para mais informações, consulte como configurar um ambiente de desenvolvimento Java para usar com bibliotecas de cliente.

  2. Renomeie o arquivo App.java que o Maven cria por padrão:

    mv \
        bigquery-java-quickstart/src/main/java/com/google/app/App.java \
        bigquery-java-quickstart/src/main/java/com/google/app/SimpleApp.java
    
  3. Abra o editor do Cloud Shell:

    cloudshell workspace bigquery-java-quickstart
    
  4. Se aparecer uma mensagem perguntando se você quer sincronizar o classpath ou a configuração do Java, clique em Sempre.

    Se não aparecer uma mensagem, e você encontrar um erro relacionado ao classpath durante este tutorial, faça o seguinte:

    1. Clique em Arquivo > Preferências > Abrir configurações (UI).
    2. Clique em Extensões > Java.
    3. Role até Configuração: atualizar a configuração do build e selecione automático.

Para saber como preparar dependências para consultas, clique em Próximo.

Preparar dependências para consultas

  1. No painel Explorador, localize o projeto BIGQUERY-JAVA-QUICKSTART.

  2. Clique no arquivo pom.xml para abri-lo.

  3. Dentro da tag <dependencies>, adicione a seguinte dependência depois de todas as atuais. Não substitua as dependências atuais.

    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-bigquery</artifactId>
    </dependency>
    
  4. Na linha após a tag de fechamento (</dependencies>), adicione o seguinte:

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>libraries-bom</artifactId>
          <version>26.1.5</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

Para saber como consultar um conjunto de dados público no BigQuery, clique em Próximo.

Consulte um conjunto de dados público no BigQuery

  1. No painel Explorador, no projeto BIGQUERY-JAVA-QUICKSTART, clique em src > main/java/com/google/app > SimpleApp.java. O arquivo será aberto.

  2. Para criar uma consulta no conjunto de dados bigquery-public-data.stackoverflow, mantenha a primeira linha do arquivo (package com.google.app;) e substitua o conteúdo restante do arquivo pelo seguinte código:

    
    import com.google.cloud.bigquery.BigQuery;
    import com.google.cloud.bigquery.BigQueryException;
    import com.google.cloud.bigquery.BigQueryOptions;
    import com.google.cloud.bigquery.FieldValueList;
    import com.google.cloud.bigquery.Job;
    import com.google.cloud.bigquery.JobId;
    import com.google.cloud.bigquery.JobInfo;
    import com.google.cloud.bigquery.QueryJobConfiguration;
    import com.google.cloud.bigquery.TableResult;
    
    
    public class SimpleApp {
    
      public static void main(String... args) throws Exception {
        // TODO(developer): Replace these variables before running the app.
        String projectId = "MY_PROJECT_ID";
        simpleApp(projectId);
      }
    
      public static void simpleApp(String projectId) {
        try {
          BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
          QueryJobConfiguration queryConfig =
              QueryJobConfiguration.newBuilder(
                      "SELECT CONCAT('https://stackoverflow.com/questions/', "
                          + "CAST(id as STRING)) as url, view_count "
                          + "FROM `bigquery-public-data.stackoverflow.posts_questions` "
                          + "WHERE tags like '%google-bigquery%' "
                          + "ORDER BY view_count DESC "
                          + "LIMIT 10")
                  // Use standard SQL syntax for queries.
                  // See: https://cloud.google.com/bigquery/sql-reference/
                  .setUseLegacySql(false)
                  .build();
    
          JobId jobId = JobId.newBuilder().setProject(projectId).build();
          Job queryJob = bigquery.create(JobInfo.newBuilder(queryConfig).setJobId(jobId).build());
    
          // Wait for the query to complete.
          queryJob = queryJob.waitFor();
    
          // Check for errors
          if (queryJob == null) {
            throw new RuntimeException("Job no longer exists");
          } else if (queryJob.getStatus().getExecutionErrors() != null
              && queryJob.getStatus().getExecutionErrors().size() > 0) {
            // TODO(developer): Handle errors here. An error here do not necessarily mean that the job
            // has completed or was unsuccessful.
            // For more details: https://cloud.google.com/bigquery/troubleshooting-errors
            throw new RuntimeException("An unhandled error has occurred");
          }
    
          // Get the results.
          TableResult result = queryJob.getQueryResults();
    
          // Print all pages of the results.
          for (FieldValueList row : result.iterateAll()) {
            // String type
            String url = row.get("url").getStringValue();
            String viewCount = row.get("view_count").getStringValue();
            System.out.printf("%s : %s views\n", url, viewCount);
          }
        } catch (BigQueryException | InterruptedException e) {
          System.out.println("Simple App failed due to error: \n" + e.toString());
        }
      }
    }

    A consulta retorna as 10 páginas mais visualizadas do Stack Overflow e o número de visualizações.

  3. Clique com o botão direito do mouse em SimpleApp.java e clique em Executar Java. Se for necessário autorizar o Cloud Shell e concordar com os termos, clique em Autorizar.

    O resultado será semelhante ao seguinte:

    https://stackoverflow.com/questions/35159967 : 170023 views
    https://stackoverflow.com/questions/22879669 : 142581 views
    https://stackoverflow.com/questions/10604135 : 132406 views
    https://stackoverflow.com/questions/44564887 : 128781 views
    https://stackoverflow.com/questions/27060396 : 127008 views
    https://stackoverflow.com/questions/12482637 : 120766 views
    https://stackoverflow.com/questions/20673986 : 115720 views
    https://stackoverflow.com/questions/39109817 : 108368 views
    https://stackoverflow.com/questions/11057219 : 105175 views
    https://stackoverflow.com/questions/43195143 : 101878 views
    

Você consultou um conjunto de dados público com a biblioteca de cliente em Java do BigQuery.

Para evitar cobranças na conta e saber quais são as próximas etapas, clique em Próxima.

Próximas etapas

Mantenha os recursos criados e aproveite ainda mais o BigQuery ou faça uma limpeza para evitar cobranças de faturamento.

Faça mais com o BigQuery

Limpar

Para evitar cobranças na sua conta do Google Cloud , exclua o projeto do Google Cloud ou os recursos criados neste tutorial.

Excluir o projeto

Se você criou um projeto para aprender sobre o BigQuery e não precisa mais dele, pode excluí-lo. Lembre-se de que a exclusão de um projeto exclui tudo o que está contido nele. Além disso, os IDs dos projetos personalizados são perdidos.

Excluir os recursos

Se você usou um projeto atual, exclua a pasta bigquery-java-quickstart que você criou:

  1. No Cloud Shell, mova um diretório para cima:

    cd ..
    
  2. Exclua os recursos que você criou:

    rm -R bigquery-java-quickstart
    

    A flag -R exclui todos os recursos de uma pasta.