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

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

Saiba como:

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

Tempo estimado para concluir:

Clique em Iniciar para começar.

Ative o Cloud Shell num Google Cloud projeto

  1. Se não ativar a faturação para um projeto, trabalha automaticamente no sandbox do BigQuery. O sandbox do BigQuery permite-lhe aprender a usar o BigQuery com um conjunto limitado de funcionalidades do BigQuery sem custo financeiro. Se não planear usar o seu projeto para além deste documento, recomendamos que use o sandbox do BigQuery.

  2. Clique em Ativar Cloud Shell. Mostrar-me

Para saber como abrir o editor do Cloud Shell, clique em Seguinte.

Abra o editor do Cloud Shell

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

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

    Este comando cria um projeto Maven com o nome bigquery-java-quickstart.

    O resultado é semelhante ao seguinte. Omitiram-se várias linhas para simplificar o resultado.

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

    Existem muitos sistemas de gestão de dependências que pode usar em vez do Maven. Para mais informações, saiba como configurar um ambiente de desenvolvimento Java para usar com bibliotecas de cliente.

  2. Mude o nome do ficheiro App.java que o Maven cria por predefiniçã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 lhe for perguntado se quer sincronizar o classpath ou a configuração Java, clique em Sempre.

    Se não lhe for perguntado e encontrar um erro relacionado com o classpath durante este tutorial, faça o seguinte:

    1. Clique em Ficheiro > Preferências > Abrir definições (IU).
    2. Clique em Extensões > Java.
    3. Desloque a página até Configuration: Update Build Configuration e selecione automatic.

Para saber como preparar as dependências para as consultas, clique em Seguinte.

Prepare as dependências para as consultas

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

  2. Clique no ficheiro pom.xml para o abrir.

  3. Na etiqueta <dependencies>, adicione a seguinte dependência após as existentes. Não substitua nenhuma dependência existente.

    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-bigquery</artifactId>
    </dependency>
    
  4. Na linha a seguir à etiqueta de fecho (</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 Seguinte.

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 ficheiro é aberto.

  2. Para criar uma consulta no conjunto de dados bigquery-public-data.stackoverflow, deixe a primeira linha do ficheiro (package com.google.app;) e substitua o conteúdo restante do ficheiro 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 devolve as 10 páginas do Stack Overflow com mais visualizações e os respetivos números de visualizações.

  3. Clique com o botão direito do rato em SimpleApp.java e, de seguida, em Executar Java. Se lhe for pedido que autorize o Cloud Shell e aceite os termos, clique em Autorizar.

    O resultado é 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
    

Consultou com êxito um conjunto de dados público com a biblioteca de cliente Java do BigQuery.

Para evitar custos na sua conta e saber os passos seguintes, clique em Seguinte.

Passos seguintes

Mantenha os recursos que criou e faça mais com o BigQuery ou limpe para evitar custos de faturação.

Faça mais com o BigQuery

Limpe

Para evitar custos na sua Google Cloud conta, elimine o seu Google Cloud projeto ou elimine os recursos que criou neste tutorial.

Elimine o projeto

Se criou um novo projeto para saber mais acerca do BigQuery e já não precisa do projeto, elimine-o. Tenha em atenção que a eliminação de um projeto elimina tudo no projeto e os IDs de projetos personalizados são perdidos.

Elimine os recursos

Se usou um projeto existente, elimine a pasta bigquery-java-quickstart que criou:

  1. No Cloud Shell, avance um diretório:

    cd ..
    
  2. Elimine os recursos que criou:

    rm -R bigquery-java-quickstart
    

    A sinalização -R elimina todos os recursos numa pasta.