Cómo administrar datos de tablas

En este documento, se describe cómo administrar datos de tablas en BigQuery. Puedes trabajar con datos de tablas de BigQuery de las siguientes maneras:

  • Cargar datos en una tabla
  • Explorar (o bien, obtener vista previa) datos de tablas
  • Consultar datos de tablas
  • Adjuntar datos de tablas o reemplazarlos
  • Modificar datos de tablas con el uso del lenguaje de manipulación de datos
  • Copiar datos de tablas
  • Exportar datos de tablas

Si deseas obtener más información sobre cómo administrar esquemas de tablas, consulta Cómo modificar esquemas de tablas.

Cómo cargar datos en una tabla

Puedes cargar datos cuando creas una tabla, o puedes crear una tabla vacía y cargar los datos más tarde. Cuando cargas datos, puedes usar la detección automática de esquemas para los formatos de datos admitidos o puedes especificar el esquema.

A fin de obtener más información sobre la carga de datos, consulta la documentación para el formato y la ubicación de tus datos de origen:

Cómo explorar datos de tablas

Puedes explorar los datos de tablas de las siguientes maneras:

  • Usando GCP Console o la IU web de BigQuery clásica
  • Usando el comando bq head de la herramienta de línea de comandos
  • Mediante una llamada al método tabledata.list de la API
  • Mediante las bibliotecas cliente

Permisos necesarios

Como mínimo, para examinar los datos de la tabla y la partición, se te deben otorgar permisos bigquery.tables.getData. Las siguientes funciones predefinidas de Cloud IAM incluyen los permisos bigquery.tables.getData:

  • bigquery.dataViewer
  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

Además, si un usuario tiene permisos bigquery.datasets.create, cuando crea un conjunto de datos, se le otorga el acceso bigquery.dataOwner. El acceso bigquery.dataOwner le da al usuario la capacidad de explorar datos sobre tablas y particiones en el conjunto de datos.

Si deseas obtener más información sobre las funciones de Cloud IAM y los permisos en BigQuery, consulta Control de acceso.

Cómo explorar datos de tablas

Para explorar datos de tablas:

Console

  1. Abre la IU web de BigQuery en GCP Console.
    Ir a GCP Console

  2. En el panel de navegación, en la sección Recursos, expande tu proyecto y selecciona un conjunto de datos. Esta acción muestra las tablas y vistas del conjunto de datos.

  3. Haz clic en una tabla de la lista.

  4. Haz clic en Detalles (Details) y anota el valor en Número de filas (Number of rows). Es posible que necesites este valor para controlar el punto de partida de tus resultados mediante la CLI o la API.

  5. Haz clic en Vista previa. Verás un conjunto de datos de muestra:

    Vista previa de la tabla

IU clásica

  1. En la IU web clásica de BigQuery, en el panel de navegación, haz clic en la flecha azul que se encuentra a la izquierda del conjunto de datos para expandirlo o haz doble clic en el nombre del conjunto de datos. Esta acción muestra las tablas y vistas del conjunto de datos.

  2. Haz clic en una tabla de la lista.

  3. Haz clic en Detalles y anota el valor en Número de filas. Es posible que necesites este valor para controlar el punto de partida de tus resultados mediante la CLI o la API.

  4. Haz clic en Vista previa. Verás un conjunto de datos de muestra:

    Vista previa de la tabla

Línea de comandos

Emite el comando bq head con la marca --max_rows para enumerar todas las columnas en una cantidad particular de filas en la tabla. Si no se especifica --max_rows, el valor predeterminado es 100.

Para explorar un subconjunto de columnas en la tabla (incluidas las columnas anidadas y repetidas), usa la marca --selected_fields y, luego, ingresa las columnas como una lista separada por comas.

Para especificar la cantidad de filas que se deben omitir antes de mostrar los datos de la tabla, usa la marca --start_row=integer (o la combinación de teclas -s). El valor predeterminado es 0. Puedes recuperar el número de filas en una tabla; para ello, usa el comando bq show a fin de recuperar la información de la tabla.

Si la tabla en la que navegas está en un proyecto que no es tu proyecto predeterminado, agrega el ID del proyecto al comando en el formato siguiente: project_id:dataset.table

bq head \
--max_rows integer1 \
--start_row integer2 \
--selected_fields "columns" \
project_id:dataset.table

En el que:

  • integer1 es la cantidad de filas para mostrar.
  • integer2 es la cantidad de filas que se deben omitir antes de mostrar los datos.
  • columns es una lista de columnas separadas por comas.
  • project_id es el ID del proyecto.
  • dataset es el nombre del conjunto de datos que contiene la tabla.
  • table es el nombre de la tabla que se debe explorar.

Ejemplos:

Ingresa el siguiente comando para hacer una lista de todas las columnas en las primeras 10 filas en mydataset.mytable. mydataset se encuentra en tu proyecto predeterminado.

bq head --max_rows=10 mydataset.mytable

Ingresa el siguiente comando para hacer una lista de todas las columnas en las primeras 100 filas en mydataset.mytable. mydataset se encuentra en myotherproject, no en tu proyecto predeterminado.

bq head myotherproject:mydataset.mytable

Ingresa el siguiente comando para mostrar solo field1 y field2 en mydataset.mytable. El comando utiliza la marca --start_row para saltar a la fila 100. mydataset.mytable está en el proyecto predeterminado.

bq head --start_row 100 --selected_fields "field1,field2" mydataset.mytable

Debido a que el comando bq head no crea un trabajo de consulta, los comandos bq head no aparecen en el historial de consultas y no se te cobran.

API

Navega a través de los datos de la tabla con una llamada a tabledata.list. Especifica el nombre de la tabla en el parámetro tableId.

Configura estos parámetros opcionales para controlar el resultado:

  • maxResults: cantidad máxima de resultados para mostrar
  • selectedFields: lista de columnas separadas por comas para mostrar; si no se especifica, se muestran todas las columnas
  • startIndex: índice basado en cero de la fila inicial para leer

Los valores se muestran unidos en un objeto JSON que debes analizar, como se describe en la documentación de referencia de tabledata.list.

C#

Antes de probar esta muestra, sigue las instrucciones de configuración para C# que se encuentran en la Guía de inicio rápido de BigQuery con bibliotecas cliente. Si necesitas más información, consulta la documentación de referencia de la API de BigQuery para C#.


using Google.Api.Gax;
using Google.Apis.Bigquery.v2.Data;
using Google.Cloud.BigQuery.V2;
using System;
using System.Collections.Generic;
using System.Linq;

public class BigQueryBrowseTable
{
    public void BrowseTable(
        string projectId = "your-project-id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        TableReference tableReference = new TableReference()
        {
            TableId = "shakespeare",
            DatasetId = "samples",
            ProjectId = "bigquery-public-data"
        };
        // Load all rows from a table
        PagedEnumerable<TableDataList, BigQueryRow> result = client.ListRows(
            tableReference: tableReference,
            schema: null
        );
        // Print the first 10 rows
        foreach (BigQueryRow row in result.Take(10))
        {
            Console.WriteLine($"{row["corpus"]}: {row["word_count"]}");
        }
    }
}

Go

Antes de probar este ejemplo, sigue las instrucciones de configuración de Go incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la Documentación de referencia de la API de Go de BigQuery.

La biblioteca cliente de Google Cloud para Go se pagina automáticamente de forma predeterminada, por lo que no necesitas implementar la paginación. Por ejemplo:

table := client.Dataset(datasetID).Table(tableID)
it := table.Read(ctx)
for {
	var row []bigquery.Value
	err := it.Next(&row)
	if err == iterator.Done {
		break
	}
	if err != nil {
		return err
	}
	fmt.Println(row)
}

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración de Java incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

TableId tableIdObject = TableId.of(datasetName, tableName);
// This example reads the result 100 rows per RPC call. If there's no need to limit the number,
// simply omit the option.
TableResult tableData =
    bigquery.listTableData(tableIdObject, TableDataListOption.pageSize(100));
for (FieldValueList row : tableData.iterateAll()) {
  // do something with the row
}

Node.js

Antes de probar esta muestra, sigue las instrucciones de configuración para Node.js que se encuentran en la Guía de inicio rápido de BigQuery con bibliotecas cliente. Para obtener más información, consulta la Documentación de referencia de la API de Node.js de BigQuery.

La biblioteca cliente de Google Cloud para Node.js se pagina automáticamente de forma predeterminada, por lo que no necesitas implementar la paginación. Por ejemplo:


// Import the Google Cloud client library and create a client
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function browseRows() {
  // Displays rows from "my_table" in "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = "my_dataset";
  // const tableId = "my_table";

  // List rows in the table
  const [rows] = await bigquery
    .dataset(datasetId)
    .table(tableId)
    .getRows();

  console.log('Rows:');
  rows.forEach(row => console.log(row));
}

PHP

Antes de probar esta muestra, sigue las instrucciones de configuración de PHP que se encuentran en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la documentación de referencia de la API de BigQuery para PHP.

La paginación se realiza de forma automática en la biblioteca cliente de Google Cloud para PHP con el uso de la función de generador rows, que recupera la siguiente página de resultados durante la iteración.

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';
// $tableId   = 'The BigQuery table ID';
// $maxResults = 10;

$maxResults = 10;
$startIndex = 0;

$options = [
    'maxResults' => $maxResults,
    'startIndex' => $startIndex
];
$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->table($tableId);
$numRows = 0;
foreach ($table->rows($options) as $row) {
    print('---');
    foreach ($row as $column => $value) {
        printf('%s: %s' . PHP_EOL, $column, $value);
    }
    $numRows++;
}

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración de Python incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la Documentación de referencia de la API de Python de BigQuery.

# from google.cloud import bigquery
# client = bigquery.Client()

dataset_ref = client.dataset("samples", project="bigquery-public-data")
table_ref = dataset_ref.table("shakespeare")
table = client.get_table(table_ref)  # API call

# Load all rows from a table
rows = client.list_rows(table)
assert len(list(rows)) == table.num_rows

# Load the first 10 rows
rows = client.list_rows(table, max_results=10)
assert len(list(rows)) == 10

# Specify selected fields to limit the results to certain columns
fields = table.schema[:2]  # first two columns
rows = client.list_rows(table, selected_fields=fields, max_results=10)
assert len(rows.schema) == 2
assert len(list(rows)) == 10

# Use the start index to load an arbitrary portion of the table
rows = client.list_rows(table, start_index=10, max_results=10)

# Print row data in tabular format
format_string = "{!s:<16} " * len(rows.schema)
field_names = [field.name for field in rows.schema]
print(format_string.format(*field_names))  # prints column headers
for row in rows:
    print(format_string.format(*row))  # prints row data

Ruby

Antes de probar esta muestra, sigue las instrucciones de configuración para Ruby que se encuentran en la Guía de inicio rápido de BigQuery con bibliotecas cliente. Si deseas obtener más información, consulta la Documentación de referencia de la API de BigQuery de Ruby.

La paginación se realiza de forma automática en la biblioteca cliente de Google Cloud para Ruby mediante Table#data y Data#next.

require "google/cloud/bigquery"

def browse_table
  bigquery = Google::Cloud::Bigquery.new project_id: "bigquery-public-data"
  dataset  = bigquery.dataset "samples"
  table    = dataset.table "shakespeare"

  # Load all rows from a table
  rows = table.data

  # Load the first 10 rows
  rows = table.data max: 10

  # Print row data
  rows.each { |row| puts row }
end

Cómo consultar los datos de tablas

Después de cargar los datos en BigQuery, puedes consultar los datos en las tablas. BigQuery admite dos tipos de consultas:

BigQuery ejecuta consultas interactivas de forma predeterminada, lo que significa que la consulta se ejecuta lo antes posible.

BigQuery también ofrece consultas por lotes. BigQuery pone en cola cada consulta por lotes a tu nombre y, además, inicia la consulta tan pronto como los recursos inactivos se vuelven disponibles, por lo general, en el plazo de unos minutos.

Puedes ejecutar consultas interactivas y por lotes con las siguientes opciones:

Si deseas obtener más información sobre cómo consultar las tablas de BigQuery, ve Introducción a la consulta de datos de BigQuery.

Además de consultar los datos almacenados en las tablas de BigQuery, puedes consultar los datos almacenados externamente. Si deseas obtener más información, consulta Introducción a las fuentes de datos externas.

Cómo adjuntar y reemplazar datos de tablas

Puedes reemplazar los datos de tablas mediante una operación de carga o consulta. Puedes agregar datos adicionales a una tabla existente; para ello, realiza una operación de adición de carga o agrega los resultados de la consulta a la tabla.

Si deseas obtener más información sobre cómo agregar o reemplazar una tabla cuando se cargan datos, consulta la documentación para el formato de datos de origen:

Para agregar o reemplazar una tabla mediante los resultados de la consulta, especifica una tabla de destino y configura la disposición de escritura en:

  • Agregar a la tabla: Agrega los resultados de la consulta a una tabla existente.
  • Reemplazar la tabla: reemplaza una tabla existente con el mismo nombre mediante los resultados de la consulta.

Si deseas obtener más información sobre cómo usar los resultados de la consulta para agregar o reemplazar datos, consulta Cómo escribir los resultados de la consulta.

Cómo modificar los datos de tablas

Con el uso del dialecto SQL estándar, puedes modificar los datos en una tabla mediante las declaraciones DML. Las declaraciones DML te permiten realizar actualizaciones, inserciones y eliminaciones de filas masivas. Si deseas obtener ejemplos sobre el uso de DML, consulta Actualiza datos de tablas con el lenguaje de manipulación de datos.

El dialecto SQL heredado no admite declaraciones DML. Para actualizar o borrar datos con SQL heredado, debes borrar la tabla y, a continuación, volver a crearla con datos nuevos. También puedes escribir una consulta que modifique los datos y escribir los resultados de la consulta en una tabla de destino nueva.

Cómo copiar los datos de tablas

Puedes copiar una tabla de las siguientes maneras:

  • Usando GCP Console o la IU web de BigQuery clásica
  • Usando el comando bq cp de la herramienta de línea de comandos.
  • Mediante una llamada al método de API jobs.insert y configurar un trabajo de copia
  • Mediante las bibliotecas cliente

Para obtener más información sobre cómo copiar tablas, consulta Copia una tabla.

Cómo exportar datos de tablas

Puedes exportar datos de tablas en formato CSV, JSON o Avro. Por el momento, debes exportar datos en un depósito de Cloud Storage. No se admite la exportación a tu máquina local; sin embargo, puedes descargar y guardar los resultados de la consulta con GCP Console o la IU web clásica de BigQuery.

Para obtener más información, consulta Exporta datos de tabla.

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.