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 declaració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 Tabla de destino (Destination Table) establecido en No table selected.

    IU web de BigQuery que muestra que no hay 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 se admiten las transacciones con varias declaraciones.

  • Las filas que se escribieron hace poco en una tabla mediante la transmisión (el método tabledata.insertall) no se pueden modificar con declaraciones UPDATE, DELETE ni MERGE. Las operaciones de escritura recientes suelen ser las que ocurrieron 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 Declaraciones DML no pueden usar una tabla comodín como destino de la consulta. Por ejemplo, se puede usar una tabla comodín en la cláusula FROM de una consulta UPDATE, pero no se puede usar una como 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, las primeras 1,000 declaraciones que se inserten en una tabla mediante INSERT se ejecutan en simultáneo. 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. Si envías una o más declaraciones DML mutables en una tabla mientras que otros trabajos de DML que cambian se siguen ejecutando (o pendientes), BigQuery los ejecutará en simultáneo, hasta un número fijo de mutación simultánea. Declaraciones DML. Si alcanzas el límite de simultaneidad, BigQuery pone en cola automáticamente cualquier trabajo DML adicional de mutación en un estado PENDIENTE. Cuando finaliza un trabajo en ejecución, se pone en cola el siguiente trabajo PENDIENTE.

Los trabajos de DML de prioridad INTERACTIVOS que están en cola durante más de 6 horas fallan.

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 entra 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 entran 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 entran en conflicto con ninguna otra Declaración DML que se ejecute en simultáneo, siempre que la declaración MERGE no ocasione 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.