Consultar un conjunto de datos público con la biblioteca de cliente de Java de BigQuery

Consultar un conjunto de datos público con la biblioteca de cliente de Java de BigQuery

Aprende a:

  1. Activar Cloud Shell en un Google Cloud proyecto.
  2. Abrir el editor de Cloud Shell.
  3. Preparar dependencias para las consultas.
  4. Consultar un conjunto de datos público en BigQuery.
  5. Limpiar.

Tiempo estimado para completar la tarea:

Haz clic en Empezar para continuar.

Activar Cloud Shell en un Google Cloud proyecto

  1. Si no habilitas la facturación en un proyecto, trabajarás automáticamente en el entorno aislado de BigQuery. El entorno aislado de BigQuery te permite aprender a usar BigQuery con un conjunto limitado de funciones de BigQuery sin coste económico. Si no tienes previsto usar tu proyecto más allá de lo que se indica en este documento, te recomendamos que uses el entorno aislado de BigQuery.

  2. Haz clic en Activar Cloud Shell. Mostrarme

Para saber cómo abrir el editor de Cloud Shell, haz clic en Siguiente.

Abrir el editor de Cloud Shell

  1. En Cloud Shell, crea un proyecto 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 llamado bigquery-java-quickstart.

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

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

    Hay muchos sistemas de gestión de dependencias que puedes usar además de Maven. Para obtener más información, consulta cómo configurar un entorno de desarrollo de Java para usarlo 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 quieres sincronizar la ruta de clases o la configuración de Java, haz clic en Siempre.

    Si no se te pregunta y se produce un error relacionado con la ruta de clases durante este tutorial, haz lo siguiente:

    1. Haz clic en Archivo > Preferencias > Abrir configuración (interfaz de usuario).
    2. Haz clic en Extensiones > Java.
    3. Desplázate hasta Configuración: Actualizar configuración de compilación y selecciona automático.

Para saber cómo preparar dependencias para las consultas, haz clic en Siguiente.

Preparar dependencias para las consultas

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

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

  3. Dentro de la etiqueta <dependencies>, añade la siguiente dependencia después de las que ya haya. No sustituyas ninguna dependencia.

    <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>), añade 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>
    

Para saber cómo consultar un conjunto de datos público en BigQuery, haz clic en Siguiente.

Consultar un conjunto de datos público en BigQuery

  1. En el panel Explorador, en tu proyecto BIGQUERY-JAVA-QUICKSTART, haz clic 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 sustituye el resto del contenido 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 de Stack Overflow más vistas y el número de visualizaciones de cada una.

  3. Haz clic con el botón derecho en SimpleApp.java y selecciona Ejecutar Java. Si se te pide que autorices 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
    

Has consultado correctamente un conjunto de datos público con la biblioteca de cliente de Java de BigQuery.

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

Pasos siguientes

Conserva los recursos que has creado y haz más cosas con BigQuery, o bien limpia para evitar que se apliquen cargos de facturación.

Hacer más cosas con BigQuery

Limpieza

Para evitar que se apliquen cargos en tu Google Cloud cuenta, elimina tu Google Cloud proyecto o los recursos que has creado en este tutorial.

Eliminar el proyecto

Si has creado un proyecto para aprender a usar BigQuery y ya no lo necesitas, elimínalo. Ten en cuenta que, al eliminar un proyecto, se elimina todo lo que contiene y se pierden los IDs de proyecto personalizados.

Eliminar los recursos

Si has usado un proyecto, elimina la carpeta bigquery-java-quickstart que has creado:

  1. En Cloud Shell, sube un directorio:

    cd ..
    
  2. Elimina los recursos que has creado:

    rm -R bigquery-java-quickstart
    

    La marca -R elimina todos los recursos de una carpeta.