Como usar instruções de linguagem de definição de dados

As instruções da linguagem de definição de dados (DDL, na sigla em inglês) permitem criar e modificar recursos do BigQuery usando a sintaxe de consulta do SQL padrão. Atualmente, você pode usar comandos DDL no BigQuery para:

Instrução CREATE TABLE

Para criar uma tabela no BigQuery, use a instrução DDL CREATE TABLE.

Sintaxe

{CREATE TABLE | CREATE TABLE IF NOT EXISTS | CREATE OR REPLACE TABLE}
table_name
[(
  column_name column_schema[, ...]
)]
[PARTITION BY partition_expression]
[CLUSTER BY clustering_column_list]
[OPTIONS(table_option_list)]
[AS query_statement]

Em que:

{CREATE TABLE | CREATE TABLE IF NOT EXISTS | CREATE OR REPLACE TABLE} é uma das seguintes instruções:

  • CREATE TABLE: cria uma nova tabela.
  • CREATE TABLE IF NOT EXISTS: cria uma nova tabela somente se a tabela não existir atualmente no conjunto de dados especificado.
  • CREATE OR REPLACE TABLE: cria uma tabela e substitui uma tabela existente com o mesmo nome no conjunto de dados especificado.

As instruções CREATE TABLE precisam obedecer às regras a seguir:

  • Apenas uma instrução CREATE é permitida.
  • A lista de colunas, a cláusula as query_statement ou ambas precisam estar presentes.
  • Quando a lista de colunas e a cláusula as query_statement estão presentes, o BigQuery ignora os nomes na cláusula as query_statement e corresponde às colunas com a lista de colunas por posição.
  • Quando a cláusula as query_statement está presente e a lista de colunas está ausente, o BigQuery determina os nomes e os tipos de coluna a partir da cláusula as query_statement.
  • É necessário especificar os nomes das colunas por meio da lista de colunas ou da cláusula as query_statement.
  • Não é permitido duplicar nomes de colunas.

table_name

table_name é o nome da tabela que você está criando. O nome da tabela precisa ser exclusivo por conjunto de dados. Esse nome pode:

  • conter até 1.024 caracteres
  • conter letras (maiúsculas e minúsculas), números e sublinhados.

column_name e column_schema

(column_name column_schema[, ...]) contém as informações de esquema da tabela, em uma lista separada por vírgulas:

  • column_name é o nome da coluna. Um nome de coluna:
    • precisa conter apenas letras (a-z, A-Z), números (0-9) ou sublinhados (_);
    • precisa começar com uma letra ou um sublinhado;
    • pode ter até 128 caracteres.
  • column_schema é semelhante a um tipo de dados, mas aceita uma restrição NOT NULL opcional para tipos diferentes de ARRAY. A instrução column_schema também é compatível com opções em colunas de nível superior e campos STRUCT.
column_schema :=
   {simple_type [NOT NULL] |
    STRUCT<field_list> [NOT NULL] |
    ARRAY<array_element_schema>}
   [OPTIONS(column_option_list)]

field_list := field_name column_schema [, ...]

array_element_schema := {simple_type | STRUCT<field_list>} [NOT NULL]

simple_type é qualquer tipo de dados compatível, exceto STRUCT e ARRAY.

field_name é o nome do campo struct. Os nomes dos campos struct têm as mesmas restrições que os nomes das colunas.

Quando a restrição NOT NULL está presente em uma coluna ou um campo, a coluna ou o campo é criado com o modo REQUIRED. Por outro lado, quando a restrição NOT NULL está ausente, a coluna ou campo é criado com o modo NULLABLE.

As colunas e os campos do tipo ARRAY não são compatíveis com o modificador NOT NULL. Por exemplo, um column_schema de ARRAY<INT64> NOT NULL é inválido, uma vez que as colunas ARRAY têm o modo REPEATED e podem estar vazias, mas não podem ser NULL. Um elemento de matriz em uma tabela nunca pode ser NULL, independentemente de a restrição NOT NULL ser especificada. Por exemplo, ARRAY<INT64> é equivalente a ARRAY<INT64 NOT NULL>.

O atributo NOT NULL de column_schema de uma tabela não se propaga por consultas nela. Se a tabela T contiver uma coluna declarada como x INT64 NOT NULL, por exemplo, o conjunto de dados CREATE TABLE dataset.newtable AS SELECT x FROM T cria uma tabela denominada dataset.newtable em que x é NULLABLE.

column_schema pode ser usada apenas na lista de definição de colunas das instruções CREATE TABLE. Não pode ser usado como um tipo em expressões. Por exemplo, CAST(1 AS INT64 NOT NULL) não é válido.

partition_expression

PARTITION BY é uma cláusula opcional que controla o particionamento de tabelas. partition_expression é uma expressão que determina como particionar a tabela. A expressão da partição pode conter os valores a seguir:

  • PARTITION BY DATE(_PARTITIONTIME): a tabela é particionada usando o carimbo de data/hora baseado em data na _PARTITIONTIME pseudo column. Essa sintaxe é compatível apenas com CREATE TABLE sem a cláusula AS query_statement.
  • PARTITION BY DATE(<timestamp_column>) - a tabela é particionada usando a data da coluna TIMESTAMP
  • PARTITION BY <date_column>: a tabela é particionada usando a coluna DATE

clustering_column_list

CLUSTER BY é uma cláusula opcional que controla o agrupamento de tabelas em cluster. clustering_column_list é uma lista separada por vírgula que determina como agrupar a tabela. A lista de colunas de agrupamento em cluster pode conter uma lista de até quatro agrupamentos de colunas em cluster.

table_option_list

Com a table_option_list você especifica outras opções de tabela, como um rótulo e um prazo de validade. Para incluir várias opções, use uma lista separada por vírgulas.

Especifique uma lista de opções de tabela no seguinte formato:

NAME=VALUE, ...

NAME e VALUE precisam ser uma das combinações a seguir:

NAME VALUE Detalhes
expiration_timestamp TIMESTAMP

Exemplo: expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC"

Essa propriedade é equivalente à propriedade de recurso de tabela expirationTime.

partition_expiration_days

FLOAT64

Exemplo: partition_expiration_days=7

Essa propriedade é equivalente à propriedade de recurso de tabela timePartitioning.expirationMs, mas usa dias em vez de milissegundos. Um dia é equivalente a 86.400.000 milissegundos, ou 24 horas.

Essa propriedade só pode ser usada na criação de uma tabela particionada.

require_partition_filter

BOOL

Exemplo: require_partition_filter=true

Essa propriedade é equivalente à propriedade de recurso de tabela timePartitioning.requirePartitionFilter.

Essa propriedade só pode ser usada na criação de uma tabela particionada.

kms_key_name

STRING

Exemplo: kms_key_name="projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING]/cryptoKeys/[KEY]"

Essa propriedade é equivalente à propriedade de recurso de tabela encryptionConfiguration.kmsKeyName.

Consulte mais detalhes sobre Como proteger dados com chaves do Cloud KMS.

friendly_name

STRING

Exemplo: friendly_name="my_table"

Essa propriedade é equivalente à propriedade de recurso de tabela friendlyName.

description

STRING

Exemplo: description="a table that expires in 2020"

Essa propriedade é equivalente à propriedade de recurso da tabela description.

labels

ARRAY<STRUCT<STRING, STRING>>

Exemplo: labels=[("org_unit", "development")]

Essa propriedade é equivalente à propriedade de recurso de tabela labels.

VALUE é uma expressão constante que contém apenas literais, parâmetros de consulta e funções escalares. Se a expressão constante for avaliada como null, a opção NAME correspondente será ignorada. A expressão constante não pode conter os itens a seguir:

  • uma referência a uma tabela
  • subconsultas ou instruções SQL, como SELECT, CREATE e UPDATE
  • funções definidas pelo usuário, funções agregadas ou funções analíticas
  • as funções escalares a seguir:
    • ARRAY_TO_STRING
    • REPLACE
    • REGEXP_REPLACE
    • RAND
    • FORMAT
    • LPAD
    • RPAD
    • REPEAT
    • SESSION_USER
    • GENERATE_ARRAY
    • GENERATE_DATE_ARRAY

column_option_list

column_option_list em column_schema permite que você especifique itens opcionais de coluna ou campo. As opções de coluna têm a mesma sintaxe e requisitos que as opções de tabela, mas com uma lista diferente de NAME e VALUE:

NAME VALUE Detalhes
description

STRING

Exemplo: description="a unique id"

Essa propriedade é equivalente à propriedade de recurso da tabela schema.fields[].description.

query_statement

Com a cláusula AS query_statement você especifica a consulta que servirá de ponto de base para criação da tabela. Para receber o formulário compatível com query_statement, veja a Referência de sintaxe SQL.

Limitações conhecidas:

  • Não é possível criar uma tabela particionada por tempo de ingestão a partir do resultado de uma consulta. Em vez disso, use uma instrução DDL CREATE TABLE para criar a tabela e, em seguida, use uma instrução DML INSERT para inserir os dados.
  • Não é possível usar o modificador OR REPLACE para substituir uma tabela por um tipo diferente de particionamento. Em vez disso, DROP a tabela e, em seguida, use a instrução CREATE TABLE ... AS SELECT ... para recriá-la.

Exemplos "CREATE TABLE"

Como criar uma nova tabela

A instrução DDL CREATE TABLE cria uma tabela com as opções especificadas. Se o nome da tabela existir no conjunto de dados, o erro a seguir será retornado:

Already Exists: [PROJECT]:[DATASET].[TABLE]

No exemplo a seguir, você cria uma tabela particionada, denominada newtable, no mydataset. Se você não tiver um projeto padrão já configurado, adicione um ao nome do conjunto de dados, no formato: `[PROJECT].[DATASET].[TABLE]`, incluindo os acentos graves. Por exemplo, "myproject.mydataset.newtable".

A tabela usa a seguinte partition_expression para particionar a tabela: PARTITION BY DATE(_PARTITIONTIME). Essa expressão particiona a tabela usando o carimbo de data/hora, baseado em data, na pseudocoluna _PARTITIONTIME.

O esquema da tabela contém duas colunas:

  • x: um inteiro, com a descrição "Um campo INTEGER opcional"
  • y: um STRUCT que contém duas colunas:

    • a: uma matriz de strings, com a descrição "Um campo STRING repetido"
    • b: um booleano

A lista de opções da tabela especifica:

  • prazo de validade da tabela: 1º de janeiro de 2020 às 00:00:00 UTC;
  • prazo de validade da partição — 1 dia;
  • descrição: uma tabela que expira em 2020;
  • rótulo: org_unit = desenvolvimento.

Para criar uma nova tabela usando DDL:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL na área de texto Nova consulta.

     #standardSQL
     CREATE TABLE mydataset.newtable
     (
       x INT64 OPTIONS(description="An optional INTEGER field"),
       y STRUCT<
         a ARRAY<STRING> OPTIONS(description="A repeated STRING field"),
         b BOOL
       >
     )
     PARTITION BY DATE(_PARTITIONTIME)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
       partition_expiration_days=1,
       description="a table that expires in 2020, with each partition living for 24 hours",
       labels=[("org_unit", "development")]
     )
     

  4. Clique em Gerar consulta. Quando a consulta é concluída, a tabela aparece no painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.newtable
(
  x INT64 OPTIONS(description="An optional INTEGER field"),
  y STRUCT<
    a ARRAY<STRING> OPTIONS(description="A repeated STRING field"),
    b BOOL
  >
)
PARTITION BY DATE(_PARTITIONTIME)
OPTIONS(
  expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
  partition_expiration_days=1,
  description="a table that expires in 2020, with each partition living for 24 hours",
  labels=[("org_unit", "development")]
)'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Como criar uma nova tabela a partir de uma existente

Com a instrução DDL CREATE TABLE ... AS SELECT, é criada uma tabela a partir da consulta. Se o nome da tabela existir no conjunto de dados, o erro a seguir será retornado:

Already Exists: [PROJECT]:[DATASET].[TABLE]

O exemplo a seguir cria uma tabela denominada top_words no mydataset. Se você não tiver um projeto padrão configurado, adicione-o ao nome do conjunto de dados neste formato: "[PROJECT].[DATASET].[TABLE]" (incluindo os backticks); por exemplo, "myproject.mydataset.rainy_days".

O esquema da tabela contém duas colunas:

  • corpus: nome de um corpus de Shakespeare
  • top_words: um ARRAY de STRUCTs contendo dois campos: word (uma STRING) e word_count (um INT64 com a contagem de palavras)

A lista de opções da tabela especifica:

  • descrição: 10 principais palavras por corpus de Shakespeare.

Para criar uma nova tabela usando DDL:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL na área de texto Nova consulta.

     #standardSQL
     CREATE TABLE mydataset.top_words
     OPTIONS(
       description="Top ten words per Shakespeare corpus"
     ) AS
     SELECT
       corpus,
       ARRAY_AGG(STRUCT(word, word_count) ORDER BY word_count DESC LIMIT 10) AS top_words
     FROM bigquery-public-data.samples.shakespeare
     GROUP BY corpus;

  4. Clique em Gerar consulta. Quando a consulta é concluída, a tabela aparece no painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
     CREATE TABLE mydataset.top_words
     OPTIONS(
       description="Top ten words per Shakespeare corpus"
     ) AS
     SELECT
       corpus,
       ARRAY_AGG(STRUCT(word, word_count)
                 ORDER BY word_count DESC LIMIT 10) AS top_words
     FROM bigquery-public-data.samples.shakespeare
     GROUP BY corpus;'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Como criar uma tabela somente se a tabela não existir

A instrução DDL CREATE TABLE IF NOT EXISTS cria uma tabela com as opções especificadas somente se o nome da tabela não existe no conjunto de dados. Se o nome da tabela existir no conjunto de dados, nenhum erro será retornado e nenhuma ação será tomada.

No exemplo a seguir, criaremos uma tabela chamada newtable em mydataset somente se nenhuma tabela chamada newtable existir em mydataset. Se você não tiver um projeto padrão configurado, adicione-o ao nome do conjunto de dados neste formato: "[PROJECT].[DATASET].[TABLE]" (incluindo os acentos graves). Por exemplo, "myproject.mydataset.newtable".

O esquema da tabela contém duas colunas:

  • x: um número inteiro
  • y: STRUCT que contém a (uma matriz de strings) e b (um booleano)

A lista de opções da tabela especifica:

  • prazo de validade: 1º de janeiro de 2020 às 00:00:00 UTC;
  • descrição: uma tabela que expira em 2020;
  • rótulo: org_unit = desenvolvimento.

Para criar uma nova tabela usando DDL somente se o nome da tabela não existir no conjunto de dados:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL na área de texto Nova consulta.

     #standardSQL
     CREATE TABLE IF NOT EXISTS mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
       description="a table that expires in 2020",
       labels=[("org_unit", "development")]
     )
     

  4. Clique em Gerar consulta. Quando a consulta é concluída, a tabela aparece no painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE IF NOT EXISTS mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
 OPTIONS(
   expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
   description="a table that expires in 2020",
   labels=[("org_unit", "development")]
 )'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Como criar ou substituir uma tabela

A instrução DDL CREATE OR REPLACE TABLE cria uma tabela com as opções especificadas. Se o nome da tabela existir no conjunto de dados, ela será substituída por uma tabela vazia.

No exemplo a seguir, criaremos uma tabela chamada newtable em mydataset, e se newtable existir em mydataset, ele será substituído. Se você não tiver um projeto padrão configurado, adicione-o ao nome do conjunto de dados neste formato: "[PROJECT].[DATASET].[TABLE]" (incluindo os acentos graves). Por exemplo, "myproject.mydataset.newtable".

O esquema da tabela contém duas colunas:

  • x: um número inteiro
  • y: STRUCT que contém a (uma matriz de strings) e b (um booleano)

A lista de opções da tabela especifica:

  • prazo de validade: 1º de janeiro de 2020 às 00:00:00 UTC;
  • descrição: uma tabela que expira em 2020;
  • rótulo: org_unit = desenvolvimento.

Para criar uma nova tabela usando DDL e substituir uma tabela com o mesmo nome:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL na área de texto Nova consulta.

     #standardSQL
     CREATE OR REPLACE TABLE mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
       description="a table that expires in 2020",
       labels=[("org_unit", "development")]
     )
     

  4. Clique em Gerar consulta. Quando a consulta é concluída, a tabela aparece no painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
CREATE OR REPLACE TABLE mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
 OPTIONS(
   expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
   description="a table that expires in 2020",
   labels=[("org_unit", "development")]
 )'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Como criar uma tabela com colunas REQUIRED

O modificador NOT NULL na lista de definição de coluna de uma instrução CREATE TABLE especifica que uma coluna ou um campo é criado no modo REQUIRED.

O exemplo a seguir cria uma tabela chamada newtable em mydataset. Se o nome da tabela existir no conjunto de dados, o erro a seguir será retornado:

Already Exists: [PROJECT]:[DATASET].[TABLE]

Se você não tiver um projeto padrão configurado, adicione-o ao nome do conjunto de dados neste formato: "[PROJECT].[DATASET].[TABLE]" (incluindo os acentos graves). Por exemplo, "myproject.mydataset.newtable".

O esquema da tabela contém três colunas:

  • x: — um número inteiro REQUIRED
  • y: — um STRUCT REQUIRED contendo a (uma matriz de strings), b (um REQUIRED booleano) e c (um NULLABLE flutuante)
  • z: — uma string NULLABLE

Para criar uma nova tabela com colunas REQUIRED usando DDL:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL na área de texto Nova consulta.

     #standardSQL
     CREATE TABLE my_dataset.new_table (
       x INT64 NOT NULL,
       y STRUCT<
         a ARRAY<STRING>,
         b BOOL NOT NULL,
         c FLOAT64
       > NOT NULL,
       z STRING
     )
     

  4. Clique em Gerar consulta. Quando a consulta é concluída, a tabela aparece no painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
 CREATE TABLE my_dataset.new_table (
   x INT64 NOT NULL,
   y STRUCT<
     a ARRAY<STRING>,
     b BOOL NOT NULL,
     c FLOAT64
   > NOT NULL,
   z STRING
 )'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Como criar uma tabela particionada

No exemplo a seguir, uma tabela particionada, chamada newtable, é criada em mydataset usando uma coluna DATE. Se você não tiver um projeto padrão configurado, adicione-o ao nome do conjunto de dados neste formato: "[PROJECT].[DATASET].[TABLE]" (incluindo os acentos graves). Por exemplo, "myproject.mydataset.newtable".

O esquema da tabela contém duas colunas:

  • transaction_id: um número inteiro
  • transaction_date: uma data

A lista de opções da tabela especifica:

  • validade da partição: três dias;
  • descrição: uma tabela particionada por transaction_date.

Para criar uma nova tabela usando DDL:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL na área de texto Nova consulta.

     #standardSQL
     CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE)
     PARTITION BY transaction_date
     OPTIONS(
       partition_expiration_days=3,
       description="a table partitioned by transaction_date"
     )
     

  4. Clique em Gerar consulta. Quando a consulta é concluída, a tabela aparece no painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE)
PARTITION BY transaction_date
OPTIONS(
  partition_expiration_days=3,
  description="a table partitioned by transaction_date"
)'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Como criar uma tabela particionada a partir do resultado de uma consulta

No exemplo a seguir, uma tabela particionada, chamada days_with_rain, é criada em mydataset usando uma coluna DATE. Se você não tiver um projeto padrão configurado, adicione-o ao nome do conjunto de dados neste formato: "[PROJECT].[DATASET].[TABLE]" (incluindo os acentos graves). Por exemplo, "myproject.mydataset.newtable".

O esquema da tabela contém duas colunas:

  • data: — a DATE da coleta de dados
  • station_name: — o nome da estação meteorológica como STRING
  • prcp: — a quantidade de precipitação em polegadas como um FLOAT64

A lista de opções da tabela especifica:

  • validade da partição: um ano;
  • Descrição: estações meteorológicas com precipitação, divididas por dia.

Para criar uma nova tabela usando DDL:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL na área de texto Nova consulta.

     #standardSQL
     CREATE TABLE mydataset.days_with_rain
     PARTITION BY date
     OPTIONS (
       partition_expiration_days=365,
       description="weather stations with precipitation, partitioned by day"
     ) AS
     SELECT
       DATE(CAST(year AS INT64), CAST(mo AS INT64), CAST(da AS INT64)) AS date,
       (SELECT ANY_VALUE(name) FROM `bigquery-public-data.noaa_gsod.stations` AS stations
        WHERE stations.usaf = stn) AS station_name,  -- Stations may have multiple names
       prcp
     FROM `bigquery-public-data.noaa_gsod.gsod2017` AS weather
     WHERE prcp != 99.9  -- Filter unknown values
       AND prcp > 0      -- Filter stations/days with no precipitation
     

  4. Clique em Gerar consulta. Quando a consulta é concluída, a tabela aparece no painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.days_with_rain
PARTITION BY date
OPTIONS (
  partition_expiration_days=365,
  description="weather stations with precipitation, partitioned by day"
) AS
SELECT
  DATE(CAST(year AS INT64), CAST(mo AS INT64), CAST(da AS INT64)) AS date,
  (SELECT ANY_VALUE(name) FROM `bigquery-public-data.noaa_gsod.stations` AS stations
   WHERE stations.usaf = stn) AS station_name,  -- Stations may have multiple names
  prcp
FROM `bigquery-public-data.noaa_gsod.gsod2017` AS weather
WHERE prcp != 99.9  -- Filter unknown values
  AND prcp > 0      -- Filter stations/days with no precipitation
'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Como criar uma tabela em cluster

Exemplo 1

No exemplo a seguir, uma tabela em cluster, chamada myclusteredtable, é criada em mydataset. É uma tabela particionada por uma coluna TIMESTAMP e agrupada por uma coluna STRING denominada customer_id.

Se você não tiver um projeto padrão já configurado, adicione um ao nome do conjunto de dados, no formato: `[PROJECT].[DATASET].[TABLE]`, incluindo os acentos graves. Por exemplo, `myproject.mydataset.myclusteredtable`.

O esquema da tabela contém três colunas:

  • timestamp — o momento da coleta de dados como um TIMESTAMP
  • customer_id — o ID do cliente como STRING
  • transaction_amount — o valor da transação como NUMERIC

A lista de opções da tabela especifica:

  • validade da partição — 3 dias
  • descrição — "uma tabela agrupada por customer_id"

Para criar uma tabela em cluster usando uma instrução DDL:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL CREATE TABLE na área de texto Nova consulta.

     #standardSQL
     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(timestamp)
     CLUSTER BY customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )

  4. Clique em Mostrar opções.

  5. Em Local de processamento, clique em Não especificado e escolha o local dos dados. Caso os dados estejam no local multirregional US ou EU, deixe o local de processamento definido como não especificado. Quando os dados estão no US ou no EU, o local de processamento é detectado automaticamente.

  6. Clique em Executar consulta. Quando a consulta é concluída, a tabela aparece no painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.myclusteredtable
(
  timestamp TIMESTAMP,
  customer_id STRING,
  transaction_amount NUMERIC
)
PARTITION BY DATE(timestamp)
CLUSTER BY customer_id
OPTIONS (
  partition_expiration_days=3,
  description="a table clustered by customer_id"
)'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Exemplo 2

No exemplo a seguir, uma tabela em cluster, chamada myclusteredtable, é criada em mydataset. É uma tabela particionada por tempo de processamento.

Se você não tiver um projeto padrão já configurado, adicione um ao nome do conjunto de dados, no formato: `[PROJECT].[DATASET].[TABLE]`, incluindo os acentos graves. Por exemplo, `myproject.mydataset.myclusteredtable`.

O esquema da tabela contém três colunas:

  • timestamp — o momento da coleta de dados como um TIMESTAMP
  • customer_id — o ID do cliente como STRING
  • transaction_amount — o valor da transação como NUMERIC

A lista de opções da tabela especifica:

  • validade da partição — 3 dias
  • descrição — "uma tabela agrupada por customer_id"

Para criar uma tabela em cluster usando uma instrução DDL:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL CREATE TABLE na área de texto Nova consulta.

     #standardSQL
     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(_PARTITIONTIME)
     CLUSTER BY
       customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )

  4. Clique em Mostrar opções.

  5. Em Local de processamento, clique em Não especificado e escolha o local dos dados. Caso os dados estejam no local multirregional US ou EU, deixe o local de processamento definido como não especificado. Quando os dados estão no US ou no EU, o local de processamento é detectado automaticamente.

  6. Clique em Executar consulta. Quando a consulta é concluída, a tabela aparece no painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.myclusteredtable
(
  timestamp TIMESTAMP,
  customer_id STRING,
  transaction_amount NUMERIC
)
PARTITION BY DATE(_PARTITIONTIME)
CLUSTER BY
  customer_id
OPTIONS (
  partition_expiration_days=3,
  description="a table clustered by customer_id"
)'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Como criar uma tabela em cluster a partir do resultado de uma consulta

No exemplo a seguir, uma tabela em cluster chamada myclusteredtable é criada em mydataset usando o resultado de uma consulta. É uma tabela particionada por uma coluna TIMESTAMP.

Se você não tiver um projeto padrão já configurado, adicione um ao nome do conjunto de dados, no formato: `[PROJECT].[DATASET].[TABLE]`, incluindo os acentos graves. Por exemplo, `myproject.mydataset.myclusteredtable`.

O esquema da tabela contém três colunas:

  • timestamp — o momento da coleta de dados como um TIMESTAMP
  • customer_id — o ID do cliente como STRING
  • transaction_amount — o valor da transação como NUMERIC

A lista de opções da tabela especifica:

  • validade da partição — 3 dias
  • descrição — "uma tabela agrupada por customer_id"

Para criar uma tabela em cluster usando uma instrução DDL:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL CREATE TABLE na área de texto Nova consulta.

     #standardSQL
     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(timestamp)
     CLUSTER BY
       customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )
     AS SELECT * FROM mydataset.myothertable

  4. Clique em Mostrar opções.

  5. Em Local de processamento, clique em Não especificado e escolha o local dos dados. Caso os dados estejam no local multirregional US ou EU, deixe o local de processamento definido como não especificado. Quando os dados estão no US ou no EU, o local de processamento é detectado automaticamente.

  6. Clique em Executar consulta. Quando a consulta é concluída, a tabela aparece no painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.myclusteredtable
  (
    timestamp TIMESTAMP,
    customer_id STRING,
    transaction_amount NUMERIC
  )
PARTITION BY DATE(timestamp)
CLUSTER BY
  customer_id
OPTIONS (
  partition_expiration_days=3,
  description="a table clustered by customer_id"
)
AS SELECT * FROM mydataset.myothertable'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Instrução CREATE VIEW

Para criar uma visualização no BigQuery, use a instrução DDL CREATE VIEW.

Sintaxe

{CREATE VIEW | CREATE VIEW IF NOT EXISTS | CREATE OR REPLACE VIEW}
view_name
[OPTIONS(view_option_list)]
AS query_expression

Em que:

{CREATE VIEW | CREATE VIEW IF NOT EXISTS | CREATE OR REPLACE VIEW} é uma das seguintes instruções:

  • CREATE VIEW: cria uma nova visualização.
  • CREATE VIEW IF NOT EXISTS: cria uma nova visualização somente se ela não existir no conjunto de dados especificado.
  • CREATE OR REPLACE VIEW: cria uma visualização e substitui uma visualização existente com o mesmo nome no conjunto de dados especificado.

view_name é o nome da visualização que você está criando. O nome da visualização precisa ser exclusivo por conjunto de dados. O nome da visualização pode:

  • conter até 1.024 caracteres;
  • conter letras (maiúsculas e minúsculas), números e sublinhados.

Com view_option_list, é possível especificar outras opções de criação de visualizações, como um rótulo e um prazo de validade.

As instruções CREATE VIEW precisam obedecer às regras a seguir:

  • Apenas uma instrução CREATE é permitida.

query_expression é a expressão de consulta SQL padrão usada para definir a visualização.

view_option_list

Com [view_option_list], é possível especificar outras opções de visualização, como um rótulo e um prazo de validade. Para incluir várias opções, use uma lista separada por vírgulas.

Especifique uma opção de visualização no seguinte formato:

NAME=VALUE, ...

NAME e VALUE precisam ser uma das combinações a seguir:

NAME VALUE Detalhes
expiration_timestamp TIMESTAMP

Exemplo: expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC"

Essa propriedade é equivalente à propriedade de recurso de tabela expirationTime.

friendly_name

STRING

Exemplo: friendly_name="my_view"

Essa propriedade é equivalente à propriedade de recurso de tabela friendlyName.

description

STRING

Exemplo: description="a view that expires in 2020"

Essa propriedade é equivalente à propriedade de recurso da tabela description.

labels

ARRAY<STRUCT<STRING, STRING>>

Exemplo: labels=[("org_unit", "development")]

Essa propriedade é equivalente à propriedade de recurso de tabela labels.

VALUE é uma expressão constante que contém apenas literais, parâmetros de consulta e funções escalares. Se a expressão constante for avaliada como null, a opção NAME correspondente será ignorada. A expressão constante não pode conter os itens a seguir:

  • uma referência a uma tabela
  • subconsultas ou instruções SQL, como SELECT, CREATE e UPDATE
  • funções definidas pelo usuário, funções agregadas ou funções analíticas
  • as funções escalares a seguir:
    • ARRAY_TO_STRING
    • REPLACE
    • REGEXP_REPLACE
    • RAND
    • FORMAT
    • LPAD
    • RPAD
    • REPEAT
    • SESSION_USER
    • GENERATE_ARRAY
    • GENERATE_DATE_ARRAY

Exemplos

Como criar uma nova visualização

A instrução DDL CREATE VIEW cria uma visualização com as opções especificadas. Se o nome da visualização existir no conjunto de dados, o erro a seguir será retornado:

Already Exists: [PROJECT]:[DATASET].[VIEW]

No exemplo a seguir, criaremos uma visualização chamada newview em mydataset. Quando você usa uma instrução DDL para criar uma visualização, é necessário especificar o projeto, o conjunto de dados e visualizar no formato a seguir: "[PROJECT]. [DATASET].[VIEW]" (incluindo os acentos graves). Por exemplo, "myproject.mydataset.newview".

A visualização é definida usando a consulta SQL padrão a seguir:

SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable

A lista de opções de visualização especifica:

  • prazo de validade: 48 horas a partir do momento em que a visualização é criada;
  • nome amigável: newview;
  • descrição: uma visualização que expira em dois dias;
  • rótulo: org_unit = desenvolvimento.

Para criar uma nova visualização usando DDL:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL na área de texto Nova consulta.

     #standardSQL
     CREATE VIEW `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. Clique em Gerar consulta. Quando a consulta é concluída, a tabela aparece no painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
CREATE TABLE myproject.mydataset.newview
 OPTIONS(
   expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
   friendly_name="newview",
   description="a view that expires in 2 days",
   labels=[("org_unit", "development")]
 )
 AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

JAVA

Chame o método BigQuery.create () para iniciar um job de consulta. Chame o método Job.waitFor () para aguardar a conclusão da consulta DDL.

// import com.google.cloud.bigquery.*;
// String projectId = "my-project";
// String datasetId = "my_dataset";
// String tableId = "new_view";
// BigQuery bigquery = BigQueryOptions.getDefaultInstance().toBuilder()
//     .setProjectId(projectId)
//     .build().getService();

String sql =
    String.format(
        "CREATE VIEW `%s.%s.%s`\n"
            + "OPTIONS(\n"
            + "  expiration_timestamp=TIMESTAMP_ADD(\n"
            + "    CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),\n"
            + "  friendly_name=\"new_view\",\n"
            + "  description=\"a view that expires in 2 days\",\n"
            + "  labels=[(\"org_unit\", \"development\")]\n"
            + ")\n"
            + "AS SELECT name, state, year, number\n"
            + "  FROM `bigquery-public-data.usa_names.usa_1910_current`\n"
            + "  WHERE state LIKE 'W%%';\n",
        projectId, datasetId, tableId);

// Make an API request to run the query job.
Job job = bigquery.create(JobInfo.of(QueryJobConfiguration.newBuilder(sql).build()));

// Wait for the query to finish.
job = job.waitFor();

QueryJobConfiguration jobConfig = (QueryJobConfiguration) job.getConfiguration();
System.out.printf(
    "Created new view \"%s.%s.%s\".\n",
    jobConfig.getDestinationTable().getProject(),
    jobConfig.getDestinationTable().getDataset(),
    jobConfig.getDestinationTable().getTable());

PYTHON

Chame o método Client.query () para iniciar um job de consulta. Chame o método QueryJob.result () para aguardar a conclusão da consulta DDL.

# from google.cloud import bigquery
# project = 'my-project'
# dataset_id = 'my_dataset'
# table_id = 'new_view'
# client = bigquery.Client(project=project)

sql = """
CREATE VIEW `{}.{}.{}`
OPTIONS(
    expiration_timestamp=TIMESTAMP_ADD(
        CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
    friendly_name="new_view",
    description="a view that expires in 2 days",
    labels=[("org_unit", "development")]
)
AS SELECT name, state, year, number
    FROM `bigquery-public-data.usa_names.usa_1910_current`
    WHERE state LIKE 'W%'
""".format(project, dataset_id, table_id)

job = client.query(sql)  # API request.
job.result()  # Waits for the query to finish.

print('Created new view "{}.{}.{}".'.format(
    job.destination.project,
    job.destination.dataset_id,
    job.destination.table_id))

Como criar uma visualização somente se ela não existir

A instrução DDL CREATE VIEW IF NOT EXISTS cria uma visualização com as opções especificadas somente se o nome da visualização não existir no conjunto de dados. Se o nome da visualização existir no conjunto de dados, nenhum erro será retornado e nenhuma ação será tomada.

No exemplo a seguir, criaremos uma visualização chamada newview em mydataset somente se nenhuma visualização chamada newview existir em mydataset. Quando você usa uma instrução DDL para criar uma visualização, é necessário especificar o projeto, o conjunto de dados e visualizar no formato a seguir: "[PROJECT]. [DATASET].[VIEW]" (incluindo os acentos graves). Por exemplo, "myproject.mydataset.newview".

A visualização é definida por meio da consulta SQL padrão a seguir:

SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable

A lista de opções de visualização especifica:

  • prazo de validade: 48 horas a partir do momento em que a visualização é criada;
  • nome amigável: newview;
  • descrição: uma visualização que expira em dois dias;
  • rótulo: org_unit = desenvolvimento.

Para criar uma nova visualização usando DDL somente se o nome dela não existir no conjunto de dados:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL na área de texto Nova consulta.

     #standardSQL
     CREATE VIEW IF NOT EXISTS `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. Clique em Gerar consulta. Quando a consulta é concluída, a tabela aparece no painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
CREATE VIEW IF NOT EXISTS myproject.mydataset.newview
 OPTIONS(
   expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
   friendly_name="newview",
   description="a view that expires in 2 days",
   labels=[("org_unit", "development")]
 )
 AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Como criar ou substituir uma visualização

A instrução DDL CREATE OR REPLACE VIEW cria uma visualização com as opções especificadas. Se o nome da visualização existir no conjunto de dados, ela será substituída usando a expressão de consulta especificada.

No exemplo a seguir, criaremos uma visualização chamada newview em mydataset e, se newview existir em mydataset, ela será substituída. Quando você usa uma instrução DDL para criar uma visualização, é necessário especificar o projeto, o conjunto de dados e visualizar no formato a seguir: "[PROJECT]. [DATASET].[VIEW]" (incluindo os acentos graves). Por exemplo, "myproject.mydataset.newview".

A visualização é definida por meio da consulta SQL padrão a seguir:

    SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`

A lista de opções de visualização especifica:

  • prazo de validade: 48 horas a partir do momento em que a visualização é criada;
  • nome amigável: newview;
  • descrição: uma visualização que expira em dois dias;
  • rótulo: org_unit = desenvolvimento.

Para criar uma nova visualização usando DDL e substituir uma visualização com o mesmo nome:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL na área de texto Nova consulta.

     #standardSQL
     CREATE OR REPLACE VIEW `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. Clique em Gerar consulta. Quando a consulta é concluída, a tabela aparece no painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
CREATE OR REPLACE VIEW myproject.mydataset.newview
 OPTIONS(
   expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
   friendly_name="newview",
   description="a view that expires in 2 days",
   labels=[("org_unit", "development")]
 )
 AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Instrução DROP TABLE

Para excluir uma tabela no BigQuery, use a instrução DDL DROP TABLE.

Sintaxe

{DROP TABLE | DROP TABLE IF EXISTS}
table_name

Em que:

{DROP TABLE | DROP TABLE IF EXISTS} é uma das seguintes instruções:

  • DROP TABLE: exclui uma tabela no conjunto de dados especificado.
  • DROP TABLE IF EXISTS: exclui uma tabela somente se ela existe no conjunto de dados especificado.

table_name é o nome da tabela que você está excluindo.

Exemplos

Como excluir tabelas

A instrução DDL DROP TABLE exclui uma tabela no conjunto de dados especificado. Se o nome da tabela não existir no conjunto de dados, o erro a seguir será retornado:

Error: Not found: Table myproject:mydataset.mytable

Se você estiver excluindo uma tabela em outro projeto, será necessário especificar o projeto, o conjunto de dados e a tabela no formato a seguir: "[PROJECT]. [DATASET].[TABLE]" (incluindo os acentos agudos). Por exemplo, "myproject.mydataset.mytable".

Para excluir uma tabela usando DDL:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL na área de texto Nova consulta.

     #standardSQL
     DROP TABLE mydataset.mytable
     

  4. Clique em Gerar consulta. Quando a consulta é concluída, a tabela é removida do painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
DROP TABLE mydataset.mytable'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Como excluir uma tabela somente se ela existir

A instrução DDL DROP TABLE IF EXISTS excluirá uma tabela no conjunto de dados especificado somente se ela existir. Se o nome da tabela não existir no conjunto de dados, nenhum erro será retornado e nenhuma ação será tomada.

Se você estiver excluindo uma tabela em outro projeto, será necessário especificar o projeto, o conjunto de dados e a tabela no formato a seguir: "[PROJECT]. [DATASET].[TABLE]" (incluindo os acentos agudos). Por exemplo, "myproject.mydataset.mytable".

Para excluir uma tabela usando DDL somente se a tabela existir:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL na área de texto Nova consulta.

     #standardSQL
     DROP TABLE IF EXISTS mydataset.mytable
     

  4. Clique em Gerar consulta. Quando a consulta é concluída, a tabela é removida do painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
DROP TABLE IF EXISTS mydataset.mytable'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Instrução DROP VIEW

Para excluir uma visualização no BigQuery, use a instrução DDL DROP VIEW.

Sintaxe

{DROP VIEW | DROP VIEW IF EXISTS}
view_name

Em que:

{DROP VIEW | DROP VIEW IF EXISTS} é uma das seguintes instruções:

  • DROP VIEW: exclui uma visualização no conjunto de dados especificado.
  • DROP VIEW IF EXISTS: exclui uma visualização somente se ela existe no conjunto de dados especificado.

view_name é o nome da visualização que você está excluindo.

Exemplos

Como excluir uma visualização

A instrução DDL DROP VIEW exclui uma visualização no conjunto de dados especificado. Se o nome da visualização não existir no conjunto de dados, o erro a seguir será retornado:

Error: Not found: Table myproject:mydataset.myview

Se você estiver excluindo uma visualização em outro projeto, será necessário especificar o projeto, o conjunto de dados e a visualização no formato a seguir: "[PROJECT]. [DATASET].[VIEW]" (incluindo os acentos agudos). Por exemplo, "myproject.mydataset.myview".

Para excluir uma visualização usando DDL:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL na área de texto Nova consulta.

     #standardSQL
     DROP VIEW mydataset.myview
     

  4. Clique em Gerar consulta. Quando a consulta é concluída, a visualização é removida do painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
DROP VIEW mydataset.myview'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Como excluir uma visualização somente se ela existir

A instrução DDL DROP VIEW IF EXISTS excluirá uma visualização no conjunto de dados especificado somente se ela existir. Se o nome da visualização não existir no conjunto de dados, nenhum erro será retornado e nenhuma ação será tomada.

Se você estiver excluindo uma visualização em outro projeto, será necessário especificar o projeto, o conjunto de dados e a visualização no formato a seguir: "[PROJECT]. [DATASET].[VIEW]" (incluindo os acentos agudos). Por exemplo, "myproject.mydataset.myview".

Para excluir uma visualização usando DDL somente se ela existir:

IU da Web

  1. Acesse a IU da Web do BigQuery.

    Acessar a IU da Web do BigQuery

  2. Clique em Escrever consulta.

  3. Digite a instrução DDL na área de texto Nova consulta.

     #standardSQL
     DROP VIEW IF EXISTS mydataset.myview
     

  4. Clique em Gerar consulta. Quando a consulta é concluída, a tabela é removida do painel de navegação.

Linha de comando

Digite o comando bq query e forneça a instrução DDL como o parâmetro de consulta.

bq query --use_legacy_sql=false '
DROP VIEW IF EXISTS mydataset.myview'

API

Chame o método jobs.query e forneça a instrução DDL na propriedade de consulta do corpo da solicitação.

A funcionalidade DDL amplia as informações retornadas por um Recurso de jobs. statistics.query.statementType inclui os valores adicionais a seguir para compatibilidade com DDL:

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query tem dois campos adicionais:

  • ddlOperationPerformed: a operação DDL realizada, possivelmente dependente da existência do destino DDL. Os valores atuais incluem os itens a seguir:
    • CREATE: a consulta criou o destino DDL.
    • SKIP: ambiente autônomo. Exemplos: CREATE TABLE IF NOT EXISTS foi enviado e a tabela existe. Ou DROP TABLE IF EXISTS foi enviado e a tabela não existe.
    • REPLACE: a consulta substituiu o destino DDL. Exemplo: CREATE OR REPLACE TABLE foi enviado e a tabela já existe.
    • DROP: a consulta excluiu o destino DDL.
  • ddlTargetTable: ao enviar uma instrução CREATE TABLE/VIEW ou DROP TABLE/VIEW, a tabela de destino é retornada como um objeto com três campos:
    • "projectId": string
    • "datasetId": string
    • "tableId": string

Recursos em desenvolvimento

Os recursos a seguir estão sendo desenvolvidos, mas atualmente não estão disponíveis na versão beta:

  • Como atualizar automaticamente a lista de tabelas na IU da Web do BigQuery depois de usar uma instrução DDL DROP TABLE.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

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