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 combina as colunas com a lista de colunas por posição.
  • Quando a cláusula as query_statement está presente e a lista de colunas não existe, o BigQuery determina os nomes e os tipos de coluna com base na cláusula as query_statement.
  • Você precisa especificar os nomes das colunas pela lista de colunas ou pela 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. 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): particiona a tabela 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>): particiona a tabela usando a data da coluna TIMESTAMP.
  • PARTITION BY <date_column>: particiona a tabela 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

A lista de opções permite que você defina opções de tabela, como um rótulo e um prazo de expiração. 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.

Só é possível definir essa propriedade se a tabela for particionada.

require_partition_filter

BOOL

Exemplo: require_partition_filter=true

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

Só é possível definir essa propriedade se a tabela for 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. Consulte a referência de sintaxe SQL para o formulário compatível de query_statement.

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 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.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 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.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 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 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 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 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 REQUIRED STRUCT contendo a (uma matriz de strings), b (um booleano REQUIRED) e c (um flutuante NULLABLE)
  • 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 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 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 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.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 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.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 em cluster 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 CREATE TABLE DDL 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. (Opcional) Em Local de processamento, clique em Não especificado e escolha o local dos dados.

  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 CREATE TABLE DDL 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. (Opcional) Em Local de processamento, clique em Não especificado e escolha o local dos dados.

  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 CREATE TABLE DDL 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. (Opcional) Em Local de processamento, clique em Não especificado e escolha o local dos dados.

  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

view_option_list permite que você especifique opções adicionais de criação de visualizações, como um rótulo e um prazo de expiração.

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

A lista de opções permite que você defina opções de visualização, como um rótulo e um prazo de expiração. Para incluir várias opções, use uma lista separada por vírgulas.

Especifique uma lista de opções 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 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 `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 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 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 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 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 ALTER TABLE SET OPTIONS

Para definir as opções em uma tabela no BigQuery, use a instrução DDL ALTER TABLE SET OPTIONS.

Sintaxe

{ALTER TABLE | ALTER TABLE IF EXISTS}
table_name
SET OPTIONS(table_set_options_list)

Em que:

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

  • ALTER TABLE: altera as opções em uma tabela existente.
  • ALTER TABLE IF EXISTS: altera as opções em uma tabela somente se ela existir.

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

table_set_options_list

A lista de opções permite que você defina opções de tabela, como um rótulo e um prazo de expiração. 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.

Só é possível definir essa propriedade se a tabela for particionada.

require_partition_filter

BOOL

Exemplo: require_partition_filter=true

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

Só é possível definir essa propriedade se a tabela for 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

A definição de VALUE substitui o valor existente dessa opção para a tabela (se havia um). Definir o VALUE como NULL limpa o valor da tabela para essa opção.

Exemplos

Como configurar o carimbo de data e hora de expiração e descrição em uma tabela

O exemplo a seguir define o registro de data e hora de expiração em uma tabela para sete dias a partir do tempo de execução da instrução ALTER TABLE e também define a descrição:

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
     ALTER TABLE mydataset.mytable
     SET OPTIONS (
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
       description="Table that expires seven days from now"
     )
     

  4. Clique em Executar consulta. Quando a consulta é concluída, a propriedade é estabelecida na tabela.

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 '
ALTER TABLE mydataset.mytable
SET OPTIONS (
  expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
  description="Table that expires seven days from now"
)'

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 configurar o atributo do filtro de partição necessário em uma tabela particionada

O exemplo a seguir define o atributo timePartitioning.requirePartitionFilter em uma tabela particionada. Quando definido como true, as consultas que fazem referência a essa tabela devem usar um filtro na coluna de particionamento, caso contrário, o BigQuery retorna um erro. Definir essa opção como true pode ajudar a evitar erros na consulta de mais dados do que o pretendido:

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
     ALTER TABLE mydataset.mypartitionedtable
     SET OPTIONS (require_partition_filter=true)
     

  4. Clique em Executar consulta. Quando a consulta é concluída, a propriedade é estabelecida na tabela.

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 '
ALTER TABLE mydataset.mypartitionedtable
SET OPTIONS (require_partition_filter=true)'

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 limpar o carimbo de data e hora de expiração em uma tabela

O exemplo a seguir limpa o carimbo de data e hora de expiração em uma tabela para que ela não expire:

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
     ALTER TABLE mydataset.mytable
     SET OPTIONS (expiration_timestamp=NULL)
     

  4. Clique em Executar consulta. Quando a consulta é concluída, a tabela deixa de ter um prazo de expiraçã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 '
ALTER TABLE mydataset.mytable
SET OPTIONS (expiration_timestamp=NULL)'

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 ALTER VIEW SET OPTIONS

Para definir as opções em uma visualização no BigQuery, use a instrução DDL ALTER VIEW SET OPTIONS.

Sintaxe

{ALTER VIEW | ALTER VIEW IF EXISTS}
view_name
SET OPTIONS(view_set_options_list)

Em que:

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

  • ALTER VIEW: altera as opções em uma visualização existente.
  • ALTER VIEW IF EXISTS: altera as opções em uma exibição somente visualização, se ela existir.

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

view_set_options_list

A lista de opções permite que você defina opções de visualização, como um rótulo e um prazo de expiração. Para incluir várias opções, use uma lista separada por vírgulas.

Especifique uma lista de opções 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

A definição de VALUE substitui o valor existente dessa opção para a visualização (se havia um). Definir o VALUE como NULL limpa o valor da visualização para essa opção.

Exemplos

Como configurar o carimbo de data e hora de expiração e descrição em uma visualização

O exemplo a seguir define o registro de data e hora de expiração em uma visualização para sete dias a partir do tempo de execução da instrução ALTER VIEW e também define a descrição:

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
     ALTER VIEW mydataset.myview
     SET OPTIONS (
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
       description="View that expires seven days from now"
     )
     

  4. Clique em Executar consulta. Quando a consulta é concluída, a propriedade é estabelecida na visualizaçã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 '
ALTER VIEW mydataset.myview
SET OPTIONS (
  expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 7 DAY),
  description="View that expires seven days from now"
)'

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 existir 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 Executar 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 Executar 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 Executar 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 Executar 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
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

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