Consulta un conjunto de datos públicos con la biblioteca cliente de Java para BigQuery

Consulta un conjunto de datos públicos con la biblioteca cliente de Java para BigQuery

Aprenderás a realizar estas tareas:

  1. Activar Cloud Shell en un proyecto de Google Cloud
  2. Abrir el editor de Cloud Shell
  3. Preparar dependencias para consultas
  4. Consultar un conjunto de datos públicos en BigQuery
  5. Realizar una limpieza

Tiempo estimado para completar la actividad:

Haz clic en Iniciar para comenzar.

Activa Cloud Shell en un proyecto de Google Cloud

  1. Si no habilitas la facturación para un proyecto, trabajarás de forma automática en la zona de pruebas de BigQuery. La zona de pruebas de BigQuery te permite comprender la plataforma con un conjunto limitado de funciones de BigQuery sin cargo. Si no planeas usar tu proyecto más allá de este documento, te recomendamos que uses la zona de pruebas de BigQuery.

  2. Haz clic en Activar Cloud Shell. Mostrar

Si quieres aprender a abrir el editor de Cloud Shell, haz clic en Siguiente.

Abre el Editor de Cloud Shell.

  1. En Cloud Shell, crea un proyecto nuevo de Java con Apache Maven:

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

    Este comando crea un proyecto de Maven denominado bigquery-java-quickstart.

    El resultado es similar al siguiente. Se omiten varias líneas para simplificar el resultado.

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

    Existen muchos sistemas de administración de dependencias que puedes usar que no sean Maven. Para obtener más información, consulta cómo configurar un entorno de desarrollo de Java para usar con bibliotecas cliente.

  2. Cambia el nombre del archivo App.java que Maven crea de forma predeterminada:

    mv \
        bigquery-java-quickstart/src/main/java/com/google/app/App.java \
        bigquery-java-quickstart/src/main/java/com/google/app/SimpleApp.java
    
  3. Abre el editor de Cloud Shell:

    cloudshell workspace bigquery-java-quickstart
    
  4. Si se te pregunta si deseas sincronizar la ruta de clase o la configuración de Java, haz clic en Siempre.

    Si no se te solicita y encuentras un error relacionado con la ruta de clase durante esta explicación, haz lo siguiente:

    1. Haz clic en File > Preferences > abre Settings.
    2. Haz clic en Extensions > Java.
    3. Desplázate hasta Configuration: Update Build Configuration y selecciona Automatic.

Si quieres aprender a preparar dependencias para las consultas, haz clic en Siguiente.

Prepara dependencias para consultas

  1. En el panel Explorador, ubica el proyecto BIGQUERY-JAVA-QUICKSTART.

  2. Haz clic en el archivo pom.xml para abrirlo.

  3. Dentro de la etiqueta <dependencies>, agrega la siguiente dependencia después de las existentes. No reemplaces ninguna dependencia existente.

    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-bigquery</artifactId>
    </dependency>
    
  4. En la línea que sigue a la etiqueta de cierre (</dependencies>), agrega lo siguiente:

    <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>
    

Si quieres aprender a consultar un conjunto de datos públicos en BigQuery, haz clic en Siguiente.

Consulta un conjunto de datos públicos en BigQuery

  1. En el panel Explorador, en el proyecto BIGQUERY-JAVA-QUICKSTART, haz clic en src > main/java/com/google/app > SimpleApp.java. Se abrirá el archivo.

  2. Para crear una consulta en el conjunto de datos bigquery-public-data.stackoverflow, deja la primera línea del archivo (package com.google.app;) y reemplaza el contenido restante del archivo por el siguiente 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());
        }
      }
    }

    La consulta devuelve las 10 páginas más vistas de Stack Overflow y los recuentos de vistas.

  3. Haz clic con el botón derecho en SimpleApp.java y, luego, en Run Java. Si se te solicita que autorices a Cloud Shell y aceptes los términos, haz clic en Autorizar.

    El resultado es similar al siguiente:

    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
    

Consultaste con éxito un conjunto de datos públicos con la biblioteca cliente de BigQuery para Java.

Para evitar que se apliquen cargos a tu cuenta y obtener información sobre los próximos pasos, haz clic en Siguiente.

Próximos pasos

Conserva los recursos que creaste y haz más tareas con BigQuery o realiza una limpieza para evitar cargos de facturación.

Haz más tareas con BigQuery

Realiza una limpieza

Para evitar que se apliquen cargos a tu cuenta de Google Cloud , borra tu proyecto de Google Cloud o los recursos que creaste en esta explicación.

Borra el proyecto

Si creaste un proyecto nuevo para aprender sobre BigQuery y ya no lo necesitas, bórralo. Ten en cuenta que, cuando borras un proyecto, se borra todo su contenido y se pierden los IDs personalizados.

Borra los recursos

Si usaste un proyecto existente, borra la carpeta bigquery-java-quickstart que creaste:

  1. En Cloud Shell, mueve un directorio hacia arriba:

    cd ..
    
  2. Borra los recursos que creaste:

    rm -R bigquery-java-quickstart
    

    La marca -R borra todos los elementos de una carpeta.