viernes, 3 de mayo de 2024

GCP: Creando y borrando tablas con BigQuery (Java, Python, etc.)

En un post pasado dimos un pequeño vistazo a GCP y BigQuery. Continuaremos con más ejemplos de Java y BigQuery.

Ejemplo 1. Crear una tabla con BigQuery.

CrearTableBigQuery.java

package com.codemonkey.main;

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Field;
import com.google.cloud.bigquery.Schema;
import com.google.cloud.bigquery.StandardSQLTypeName;
import com.google.cloud.bigquery.StandardTableDefinition;
import com.google.cloud.bigquery.TableDefinition;
import com.google.cloud.bigquery.TableId;
import com.google.cloud.bigquery.TableInfo;

public class CrearTableBigQuery {

   public static final String MY_DATASET_NAME = "midataset";
   public static final String MY_TABLE_NAME= "usuarios";

  public static void main(String[] args) {

    String datasetName = MY_DATASET_NAME;
    String tableName = MY_TABLE_NAME;
    Schema schema =
        Schema.of(
            Field.of("nombre", StandardSQLTypeName.STRING),
            Field.of("activo", StandardSQLTypeName.BOOL));
    createTable(datasetName, tableName, schema);
  }

  public static void createTable(String datasetName, String tableName, Schema schema) {
    try {
   
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      TableId tableId = TableId.of(datasetName, tableName);
      TableDefinition tableDefinition = StandardTableDefinition.of(schema);
      TableInfo tableInfo = TableInfo.newBuilder(tableId, tableDefinition).build();

      bigquery.create(tableInfo);
      System.out.println("Tabla creada exitosamente!!");
    } catch (BigQueryException e) {
      System.err.println("Ha ocurrido un error al crear la tabla: \n" + e.getMessage());
    }
  }
}

Si todo funciona correctamente, entonces la tabla usuarios habrá sido creada correctamente.

En Python el código tan solo consta de unas breves líneas de código:

creartablabq.py

from google.cloud import bigquery

client = bigquery.Client()
table_id = "midataset.usuarios"
schema = [
    bigquery.SchemaField("nombre", "STRING", mode="REQUIRED"),
    bigquery.SchemaField("edad", "INTEGER", mode="REQUIRED"),
]
table = bigquery.Table(table_id, schema=schema)
table = client.create_table(table)  
print(
    "Se ha creado la tabla {}.{}.{}".format(table.project, table.dataset_id, table.table_id))

Ejemplo 2. Eliminar una tabla con BigQuery.

EliminarTabla.java

package com.codemonkey.main;

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.TableId;

public class EliminarTabla {

  public static void main(String[] args) {
    String datasetName = "midataset";
    String tableName = "usuarios";
    borrarTabla(datasetName, tableName);
  }

  public static void borrarTabla(String datasetName, String tableName) {
    try {

      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
      boolean success = bigquery.delete(TableId.of(datasetName, tableName));
      if (success) {
        System.out.println("Tabla borrada exitosamente");
      } else {
        System.out.println("Tabla no encontrada");
      }
    } catch (BigQueryException e) {
      System.out.println("Ha ocurrido un error al borrar la tabla. \n" + e.getMessage());
    }
  }
}

Si funciona correctamente, la tabla será eliminada.

Ahora en Python:

eliminartablabq.py

from google.cloud import bigquery

client = bigquery.Client()

table_id = 'myproject.mydataset.usuarios'

client.delete_table(table_id, not_found_ok=True) 
print("Tabla eliminada: '{}'.".format(table_id))

¿Y qué con otros clientes cómo PHP, etc.?

Hay clientes para otros lenguajes además de Java y Python, también puede usar C#, PHP, y Go.

borrartablebq.php

use Google\Cloud\BigQuery\BigQueryClient;

/**
 * Borrar determinada tabla
 *
 * @param string $projectId El ID de tu proyecto.
 * @param string $datasetId El ID de tu dataset.
 * @param string $tableId El ID de tu tabla.
 */
function eliminarTabla(string $projectId, string $datasetId, string $tableId): void
{
    $bigQuery = new BigQueryClient([
      'projectId' => $projectId,
    ]);
    $dataset = $bigQuery->dataset($datasetId);
    $table = $dataset->table($tableId);
    $table->delete();
    printf('Tabla eliminada %s.%s' . PHP_EOL, $datasetId, $tableId);
}

Cómo se puede observar, es relativamente fácil emplear el client library de GCP para nuestros proyectos en la nube.

El código fue tomado de este enlace: https://cloud.google.com/bigquery/docs/samples/bigquery-delete-table

Enlaces:

https://codemonkeyjunior.blogspot.com/2024/04/gcp-google-cloud-bigquery.html
https://codemonkeyjunior.blogspot.com/2024/04/google-cloud-platform-gcp-en-un-vistazo.html
https://codemonkeyjunior.blogspot.com/2024/04/gcp-google-cloud-storage.html

No hay comentarios:

Publicar un comentario

Programando en C# no. 7 (uso de genéricos)

En el mundo de la programación un genérico nos permite escribir código que trabaja con cualquier tipo de datos sin perder la seguridad de t...

Etiquetas

Archivo del blog