Linguagem de manipulação de dados

A Linguagem de manipulação de dados (DML, na sigla em inglês) do BigQuery permite atualizar, inserir e excluir dados das suas tabelas do BigQuery.

É possível executar instruções DML como se fossem uma instrução SELECT, com as seguintes condições:

  • É necessário usar o SQL padrão. Para ativá-lo, consulte Como ativar o SQL padrão.
  • Não é possível especificar uma tabela de destino. Por exemplo, na IU da Web, é necessário definir Tabela de destino como Nenhuma tabela selecionada.

    Captura de tela da IU da Web do BigQuery mostrando que não há tabelas de destino selecionadas

Limitações

  • Uma instrução DML inicia uma transação implícita. Isso significa que as alterações feitas por ela são confirmadas automaticamente no final de cada instrução bem-sucedida. Transações de múltiplas instruções não são aceitas.
  • Somente as seguintes combinações de instruções DML têm permissão para serem executadas simultaneamente em uma tabela:

    • UPDATE e INSERT
    • DELETE e INSERT
    • INSERT e INSERT

    Caso contrário, uma das instruções DML será cancelada. Por exemplo, se duas instruções UPDATE forem executadas simultaneamente em uma tabela, só uma delas será bem-sucedida.

  • As linhas que foram escritas em uma tabela recentemente via streaming, ou seja, usando o método tabledata.insertall, não podem ser modificadas por meio das instruções UPDATE, DELETE ou MERGE. Consideramos gravações recentes aquelas que ocorreram nos últimos 30 minutos. Todas as outras linhas da tabela podem ser alteradas usando UPDATE, DELETE ou MERGE.

  • Subconsultas correlacionadas dentro de when_clause, search_condition, merge_update_clause ou merge_insert_clause não aceitam instruções MERGE.

  • Se houver apenas cláusulas INSERT (pode haver mais de uma), MERGE se comportará como uma instrução INSERT. Uma instrução MERGE somente INSERT pode ser executada simultaneamente a outras instruções DML (INSERT, UPDATE, DELETE ou MERGE).

    Se a instrução MERGE não estiver limitada a cláusulas INSERT, ou seja, se tiver uma ou mais cláusulas UPDATE ou DELETE, ela não poderá ser executada simultaneamente a outras instruções MERGE que contenham cláusulas UPDATE ou DELETE. A instrução também não poderá ser executada simultaneamente a outras instruções DELETE ou UPDATE.

  • Consultas em que há instruções DML em linguagem de manipulação de dados não podem ter uma tabela de caractere curinga como destino. Por exemplo, uma tabela curinga pode ser usada na cláusula FROM de uma consulta UPDATE, mas não pode como o destino da operação UPDATE.

Cotas

Para mais informações sobre as cotas de DML, consulte Instruções DML na página Cotas e limites.

Preços

Para saber mais sobre os preços das instruções DML, consulte Preços da linguagem de manipulação de dados, na página "Preços".

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.