Lenguaje de manipulación de datos

El lenguaje de manipulación de datos de BigQuery (DML) te permite actualizar, insertar y borrar datos de tus tablas de BigQuery.

Puedes ejecutar declaraciones DML como lo harías con una instrucción SELECT, con las siguientes condiciones:

  • Debes usar SQL estándar. Para habilitar SQL estándar, consulta la sección sobre cómo cambiar dialectos SQL.
  • No se puede especificar una tabla de destino. Por ejemplo, en la IU web debes tener Destination Table (Tabla de destino) configurada como No table selected (Sin tabla seleccionada).

    Captura de pantalla de la IU web de BigQuery que no muestra ninguna tabla de destino seleccionada

Limitaciones

  • Cada declaración DML inicia una transacción implícita, lo que significa que los cambios realizados por la instrucción se confirman de forma automática al final de cada declaración DML exitosa. No hay asistencia para transacciones con varias declaraciones.

  • Las filas que se escribieron recientemente en una tabla a través de la transmisión (con el método tabledata.insertall) no se pueden modificar con declaraciones UPDATE, DELETE o MERGE. Las operaciones de escritura recientes suelen ser las que ocurren en los últimos 30 minutos. Ten en cuenta que todas las demás filas de la tabla siguen siendo modificables mediante el uso de UPDATE, DELETE o MERGE.

  • Las subconsultas correlacionadas dentro de una when_clause, search_condition, merge_update_clause o merge_insert_clause no son compatibles con las declaraciones MERGE.

  • Las consultas que contienen instrucciones del lenguaje de manipulación de datos (DML) no pueden usar una tabla comodín como destino de la consulta. Por ejemplo, una tabla comodín se puede usar en la cláusula FROM de una consulta UPDATE, pero no se puede usar como el destino de la operación UPDATE.

Trabajos en simultáneo

BigQuery administra la simultaneidad de las declaraciones DML que agregan, modifican o borran filas en una tabla.

Simultaneidad de DML para INSERT

Durante cualquier período de 24 horas, se ejecutarán en simultáneo las primeras 1000 declaraciones que use INSERT en una tabla. Una vez que se alcanza este límite, la simultaneidad de las declaraciones INSERT que se escriben en una tabla se limita a 10. Cualquier trabajo de INSERT de DML superior a 10 se pone en cola en estado PENDIENTE. Después de que un trabajo anterior finaliza, el siguiente trabajo PENDIENTE se quita de la cola y se ejecuta. Actualmente, se pueden poner en cola hasta 100 declaraciones DML de INSERT en una tabla, en cualquier momento.

Simultaneidad de DML para UPDATE, DELETE y MERGE

Nos referimos a las declaraciones DML de UPDATE, DELETE y MERGE, como mutaciones de declaraciones DML. Cuando envías en simultáneo más de una declaración DML de mutación a una tabla, BigQuery ejecuta una cantidad fija de estas instrucciones de manera simultánea. Cualquier trabajo DML adicional de mutación en esa tabla se pone en cola de manera automática en estado PENDIENTE. Cuando finaliza un trabajo en ejecución, se pone en cola el siguiente trabajo PENDIENTE.

Los trabajos DML de prioridad INTERACTIVA que estén en cola durante más de 6 horas fallarán.

Conflictos de declaraciones DML

La ejecución simultánea de instrucciones DML mutables en una tabla puede fallar debido a conflictos en los cambios que realizan. BigQuery vuelve a intentar estas fallas.

  • Una declaración DML INSERT que inserta filas en una tabla no entrará en conflicto con ninguna otra declaración DML que se ejecute en simultáneo.

  • Las declaraciones DML MERGE que contienen solo una cláusula INSERT sin cláusulas UPDATE o DELETE no entrarán en conflicto con ninguna otra declaración DML que se ejecute en simultáneo.

  • Las declaraciones DML MERGE con cláusulas UPDATE o DELETE no entrarán en conflicto con ninguna otra declaración DML que se ejecute en simultáneo, siempre y cuando la declaración MERGE no lleve a la actualización o eliminación de filas existentes.

Precios

Para obtener información sobre los precios de DML, consulta los precios del lenguaje de manipulación de datos en la página Precios.

Qué sigue

  • Consulta la sintaxis y las muestras de DML en la página de sintaxis de DML.