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