Criar tabelas particionadas
Esta página descreve como criar tabelas particionadas no BigQuery. Para uma vista geral das tabelas particionadas, consulte o artigo Introdução às tabelas particionadas.
Antes de começar
Conceda funções de gestão de identidade e acesso (IAM) que dão aos utilizadores as autorizações necessárias para realizar cada tarefa neste documento.
Autorizações necessárias
Funções necessárias
Para receber as autorizações de que precisa para criar uma tabela, peça ao seu administrador que lhe conceda as seguintes funções do IAM:
-
Utilizador da tarefa do BigQuery (
roles/bigquery.jobUser
) no projeto se estiver a criar uma tabela carregando dados ou guardando resultados de consultas numa tabela. -
Editor de dados do BigQuery (
roles/bigquery.dataEditor
) no conjunto de dados onde está a criar a tabela.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Estas funções predefinidas contêm as autorizações necessárias para criar uma tabela. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para criar uma tabela:
-
bigquery.tables.create
no conjunto de dados onde está a criar a tabela. -
bigquery.tables.getData
em todas as tabelas e vistas a que a sua consulta faz referência se estiver a guardar os resultados da consulta como uma tabela. -
bigquery.jobs.create
no projeto, se estiver a criar a tabela carregando dados ou guardando resultados de consultas numa tabela. -
bigquery.tables.updateData
na tabela se estiver a anexar ou substituir uma tabela com resultados da consulta.
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Crie uma tabela particionada vazia
Os passos para criar uma tabela particionada no BigQuery são semelhantes aos da criação de uma tabela padrão, exceto que especifica as opções de particionamento, juntamente com quaisquer outras opções de tabela.
Crie uma tabela particionada por colunas de unidades de tempo
Para criar uma tabela particionada por colunas de unidade de tempo vazia com uma definição de esquema:
Consola
Na Trusted Cloud consola, aceda à página BigQuery.
- No painel Explorador, expanda o seu projeto e, de seguida, selecione um conjunto de dados.
- Na secção Informações do conjunto de dados, clique em Criar tabela.
- No painel Criar tabela, especifique os seguintes detalhes:
- Na secção Origem, selecione Tabela vazia na lista Criar tabela a partir de.
- Na secção Destino, especifique os seguintes detalhes:
- Para Conjunto de dados, selecione o conjunto de dados no qual quer criar a tabela.
- No campo Tabela, introduza o nome da tabela que quer criar.
- Verifique se o campo Tipo de tabela está definido como Tabela nativa.
- Na secção Esquema, introduza a definição do esquema.
O esquema tem de incluir uma coluna
DATE
,TIMESTAMP
ouDATETIME
para a coluna de partição. Para mais informações, consulte a secção Especificar um esquema. Pode introduzir manualmente informações do esquema através de um dos seguintes métodos:- Opção 1: clique em Editar como texto e cole o esquema sob a forma de uma matriz JSON. Quando usa uma matriz JSON, gera o esquema através do
mesmo processo que criar um ficheiro de esquema JSON.
Pode ver o esquema de uma tabela existente no formato JSON introduzindo o seguinte comando:
bq show --format=prettyjson dataset.table
- Opção 2: clique em Tipo e Modo de cada campo. Adicionar campo e introduza o esquema da tabela. Especifique o Nome,
- Opção 1: clique em Editar como texto e cole o esquema sob a forma de uma matriz JSON. Quando usa uma matriz JSON, gera o esquema através do
mesmo processo que criar um ficheiro de esquema JSON.
Pode ver o esquema de uma tabela existente no formato JSON introduzindo o seguinte comando:
- Na secção Definições de partição e cluster, na lista
Partição, selecione Particionar por campo e, de seguida,
escolha a coluna de partição. Esta opção só está disponível se o esquema contiver uma coluna
DATE
,TIMESTAMP
ouDATETIME
. - Opcional: para exigir um filtro de partição em todas as consultas para esta tabela, selecione a caixa de verificação Exigir filtro de partição. Um filtro de partição pode reduzir o custo e melhorar o desempenho. Para mais informações, consulte o artigo Defina os requisitos do filtro de partição.
- Selecione o Tipo de partição. Apenas é suportado o agrupamento Por dia.
- Opcional: na secção Opções avançadas, se quiser usar uma chave de encriptação gerida pelo cliente, selecione a opção Usar uma chave de encriptação gerida pelo cliente (CMEK). Por predefinição, o BigQuery encripta o conteúdo do cliente armazenado em repouso através de um Google Cloud-powered encryption key.
- Clique em Criar tabela.
SQL
Para criar uma tabela particionada por colunas de unidade de tempo, use a
CREATE TABLE
declaração DDL
com uma PARTITION BY
cláusula.
O exemplo seguinte cria uma tabela com partições diárias com base na coluna transaction_date
:
Na Trusted Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE) PARTITION BY transaction_date OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
Use a cláusula
OPTIONS
para definir opções de tabelas, como a expiração da partição e os requisitos do filtro de partição.Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
O tipo de partição predefinido para colunas DATE
é a partição diária. Para especificar um tipo de partição diferente, inclua a função DATE_TRUNC
na cláusula PARTITION BY
. Por exemplo, a seguinte consulta
cria uma tabela com partições mensais:
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE) PARTITION BY DATE_TRUNC(transaction_date, MONTH) OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
Também pode especificar uma coluna TIMESTAMP
ou DATETIME
como a coluna de
partição. Nesse caso, inclua a função TIMESTAMP_TRUNC
ou DATETIME_TRUNC
na cláusula PARTITION BY
para especificar o tipo de partição. Por exemplo, a seguinte declaração cria uma tabela com partições diárias com base numa coluna TIMESTAMP
:
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_ts TIMESTAMP) PARTITION BY TIMESTAMP_TRUNC(transaction_ts, DAY) OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
bq
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Use o comando
bq mk
com a flag--table
(ou o atalho-t
):bq mk \ --table \ --schema SCHEMA \ --time_partitioning_field COLUMN \ --time_partitioning_type UNIT_TIME \ --time_partitioning_expiration EXPIRATION_TIME \ --require_partition_filter=BOOLEAN PROJECT_ID:DATASET.TABLE
Substitua o seguinte:
- SCHEMA: uma definição de esquema no formato
column:data_type,column:data_type
ou o caminho para um ficheiro de esquema JSON no seu computador local. Para mais informações, consulte o artigo Especificar um esquema. - COLUMN: o nome da coluna de partição. No esquema da tabela, esta coluna tem de ser do tipo
TIMESTAMP
,DATETIME
ouDATE
. - UNIT_TIME: o tipo de partição. Os valores suportados incluem
DAY
,HOUR
,MONTH
ouYEAR
. - EXPIRATION_TIME: o tempo de validade das partições da tabela, em segundos. A flag
--time_partitioning_expiration
é opcional. Para mais informações, consulte o artigo Defina o prazo de validade da partição. - BOOLEAN: se
true
, as consultas nesta tabela têm de incluir um filtro de partição. A flag--require_partition_filter
é opcional. Para mais informações, consulte o artigo Defina os requisitos de filtro de partição. - PROJECT_ID: o ID do projeto. Se for omitido, é usado o seu projeto predefinido.
- DATASET: o nome de um conjunto de dados no seu projeto.
- TABLE: o nome da tabela a criar.
Para outras opções de linha de comandos, consulte
bq mk
.O exemplo seguinte cria uma tabela denominada
mytable
que é particionada na colunats
, usando a partição por hora. A validade da partição é de 259 200 segundos (3 dias).bq mk \ -t \ --schema 'ts:TIMESTAMP,qtr:STRING,sales:FLOAT' \ --time_partitioning_field ts \ --time_partitioning_type HOUR \ --time_partitioning_expiration 259200 \ mydataset.mytable
- SCHEMA: uma definição de esquema no formato
- Inicie o Cloud Shell.
-
Defina o Trusted Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.
Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.
-
No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o ficheiro é denominadomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.
Copie o exemplo de código para o ficheiro
main.tf
criado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
-
Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção
-upgrade
:terraform init -upgrade
-
Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expetativas:
terraform plan
Faça as correções necessárias à configuração.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform apply
Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).
- Abra o seu Trusted Cloud projeto para ver os resultados. Na Trusted Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
Terraform
Use o recurso
google_bigquery_table
.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
O exemplo seguinte cria uma tabela denominada mytable
que é particionada
por dia:
Para aplicar a configuração do Terraform num Trusted Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
Aplique as alterações
API
Chame o método tables.insert
com um recurso de tabela definido que especifique a propriedade timePartitioning
e a propriedade schema
.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Crie uma tabela particionada por tempo de ingestão
Para criar uma tabela particionada por tempo de ingestão vazia com uma definição de esquema:
Consola
Abra a página do BigQuery na Trusted Cloud consola.
No painel Explorador, expanda o projeto e selecione um conjunto de dados.
Expanda a opção
Ações e clique em Abrir.No painel de detalhes, clique em Criar tabela
.Na página Criar tabela, na secção Origem, selecione Tabela vazia.
Na secção Destino:
- Em Nome do conjunto de dados, escolha o conjunto de dados adequado.
- No campo Nome da tabela, introduza o nome da tabela.
- Verifique se o Tipo de tabela está definido como Tabela nativa.
Na secção Esquema, introduza a definição do esquema.
Na secção Definições de partição e cluster, para Partição, clique em Particionar por hora de carregamento.
(Opcional) Para exigir um filtro de partição em todas as consultas para esta tabela, selecione a caixa de verificação Exigir filtro de partição. A exigência de um filtro de partição pode reduzir o custo e melhorar o desempenho. Para mais informações, consulte o artigo Defina os requisitos de filtro de partição.
Clique em Criar tabela.
SQL
Para criar uma tabela particionada por tempo de ingestão, use a
declaração CREATE TABLE
com uma cláusula PARTITION BY
que faz a partição em _PARTITIONDATE
.
O exemplo seguinte cria uma tabela com partições diárias:
Na Trusted Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
CREATE TABLE mydataset.newtable (transaction_id INT64) PARTITION BY _PARTITIONDATE OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
Use a cláusula
OPTIONS
para definir opções de tabelas, como a expiração da partição e os requisitos do filtro de partição.Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
O tipo de particionamento predefinido para o particionamento por tempo de ingestão é o particionamento diário. Para especificar um tipo de partição diferente, inclua a função DATE_TRUNC
na cláusula PARTITION BY
. Por exemplo, a seguinte consulta
cria uma tabela com partições mensais:
CREATE TABLE mydataset.newtable (transaction_id INT64) PARTITION BY DATE_TRUNC(_PARTITIONTIME, MONTH) OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
bq
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Use o comando
bq mk
com a flag--table
(ou o atalho-t
):bq mk \ --table \ --schema SCHEMA \ --time_partitioning_type UNIT_TIME \ --time_partitioning_expiration EXPIRATION_TIME \ --require_partition_filter=BOOLEAN \ PROJECT_ID:DATASET.TABLE
Substitua o seguinte:
- SCHEMA: uma definição no formato
column:data_type,column:data_type
ou o caminho para um ficheiro de esquema JSON no seu computador local. Para mais informações, consulte o artigo Especificar um esquema. - UNIT_TIME: o tipo de partição. Os valores suportados incluem
DAY
,HOUR
,MONTH
ouYEAR
. - EXPIRATION_TIME: o tempo de validade das partições da tabela, em segundos. A flag
--time_partitioning_expiration
é opcional. Para mais informações, consulte o artigo Defina o prazo de validade da partição. - BOOLEAN: se
true
, as consultas nesta tabela têm de incluir um filtro de partição. A flag--require_partition_filter
é opcional. Para mais informações, consulte o artigo Defina os requisitos de filtro de partição. - PROJECT_ID: o ID do projeto. Se for omitido, é usado o seu projeto predefinido.
- DATASET: o nome de um conjunto de dados no seu projeto.
- TABLE: o nome da tabela a criar.
Para outras opções de linha de comandos, consulte
bq mk
.O exemplo seguinte cria uma tabela particionada por tempo de ingestão denominada
mytable
. A tabela tem uma partição diária, com um prazo de validade da partição de 259 200 segundos (3 dias).bq mk \ -t \ --schema qtr:STRING,sales:FLOAT,year:STRING \ --time_partitioning_type DAY \ --time_partitioning_expiration 259200 \ mydataset.mytable
- SCHEMA: uma definição no formato
- Inicie o Cloud Shell.
-
Defina o Trusted Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.
Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.
-
No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o ficheiro é denominadomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.
Copie o exemplo de código para o ficheiro
main.tf
criado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
-
Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção
-upgrade
:terraform init -upgrade
-
Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expetativas:
terraform plan
Faça as correções necessárias à configuração.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform apply
Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).
- Abra o seu Trusted Cloud projeto para ver os resultados. Na Trusted Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
Terraform
Use o recurso
google_bigquery_table
.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
O exemplo seguinte cria uma tabela denominada mytable
que é particionada
por tempo de ingestão:
Para aplicar a configuração do Terraform num Trusted Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
Aplique as alterações
API
Chame o método tables.insert
com um recurso de tabela definido que especifique a propriedade timePartitioning
e a propriedade schema
.
Crie uma tabela particionada por intervalo de números inteiros
Para criar uma tabela particionada por intervalo de números inteiros vazia com uma definição de esquema:
Consola
Abra a página do BigQuery na Trusted Cloud consola.
No painel Explorador, expanda o projeto e selecione um conjunto de dados.
Expanda a opção
Ações e clique em Abrir.No painel de detalhes, clique em Criar tabela
.Na página Criar tabela, na secção Origem, selecione Tabela vazia.
Na secção Destino:
- Em Nome do conjunto de dados, escolha o conjunto de dados adequado.
- No campo Nome da tabela, introduza o nome da tabela.
- Verifique se o Tipo de tabela está definido como Tabela nativa.
Na secção Esquema, introduza a definição do esquema. Certifique-se de que o esquema inclui uma coluna
INTEGER
para a coluna de partição. Para mais informações, consulte Especificar um esquema.Na secção Definições de partição e agrupamento, na lista pendente Partição, selecione Particionar por campo e escolha a coluna de partição. Esta opção só está disponível se o esquema contiver uma coluna
INTEGER
.Forneça valores para Início, Fim e Intervalo:
- Start é o início do primeiro intervalo de partições (inclusive).
- End é o fim do intervalo da última partição (exclusivo).
- O intervalo é a largura de cada intervalo de partição.
Os valores fora destes intervalos são colocados numa
__UNPARTITIONED__
partição especial.(Opcional) Para exigir um filtro de partição em todas as consultas para esta tabela, selecione a caixa de verificação Exigir filtro de partição. A exigência de um filtro de partição pode reduzir o custo e melhorar o desempenho. Para mais informações, consulte o artigo Defina os requisitos de filtro de partição.
Clique em Criar tabela.
SQL
Para criar uma tabela particionada por intervalo de números inteiros, use a
declaração DDL CREATE TABLE
com uma cláusula PARTITION BY
.
O exemplo seguinte cria uma tabela particionada na coluna customer_id
com início 0, fim 100 e intervalo 10:
Na Trusted Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
CREATE TABLE mydataset.newtable (customer_id INT64, date1 DATE) PARTITION BY RANGE_BUCKET(customer_id, GENERATE_ARRAY(0, 100, 10)) OPTIONS ( require_partition_filter = TRUE);
Use a cláusula
OPTIONS
para definir opções de tabela, como os requisitos de filtro de partição.Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Use o comando
bq mk
com a flag--table
(ou o atalho-t
):bq mk \ --schema schema \ --range_partitioning=COLUMN_NAME,START,END,INTERVAL \ --require_partition_filter=BOOLEAN \ PROJECT_ID:DATASET.TABLE
Substitua o seguinte:
- SCHEMA: Uma definição de esquema inline no formato
column:data_type,column:data_type
ou o caminho para um ficheiro de esquema JSON no seu computador local. Para mais informações, consulte o artigo Especificar um esquema. - COLUMN_NAME: o nome da coluna de partição. No esquema da tabela, esta coluna tem de ser do tipo
INTEGER
. - START: o início do primeiro intervalo de partições (inclusive).
- END: o fim do último intervalo de partição (exclusivo).
- INTERVAL: a largura de cada intervalo de partição.
- BOOLEAN: se
true
, as consultas nesta tabela têm de incluir um filtro de partição. A flag--require_partition_filter
é opcional. Para mais informações, consulte o artigo Defina os requisitos de filtro de partição. - PROJECT_ID: o ID do projeto. Se for omitido, é usado o seu projeto predefinido.
- DATASET: o nome de um conjunto de dados no seu projeto.
- TABLE: o nome da tabela a criar.
Os valores fora do intervalo da partição são colocados numa partição especial
__UNPARTITIONED__
.Para outras opções de linha de comandos, consulte
bq mk
.O exemplo seguinte cria uma tabela denominada
mytable
que é particionada na colunacustomer_id
.bq mk \ -t \ --schema 'customer_id:INTEGER,qtr:STRING,sales:FLOAT' \ --range_partitioning=customer_id,0,100,10 \ mydataset.mytable
- SCHEMA: Uma definição de esquema inline no formato
- Inicie o Cloud Shell.
-
Defina o Trusted Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.
Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.
-
No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o ficheiro é denominadomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.
Copie o exemplo de código para o ficheiro
main.tf
criado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
-
Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção
-upgrade
:terraform init -upgrade
-
Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expetativas:
terraform plan
Faça as correções necessárias à configuração.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform apply
Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).
- Abra o seu Trusted Cloud projeto para ver os resultados. Na Trusted Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
Terraform
Use o recurso
google_bigquery_table
.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
O exemplo seguinte cria uma tabela denominada mytable
que é particionada
por intervalo de números inteiros:
Para aplicar a configuração do Terraform num Trusted Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
Aplique as alterações
API
Chame o método tables.insert
com um recurso de tabela definido que especifique a propriedade rangePartitioning
e a propriedade schema
.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Crie uma tabela particionada a partir do resultado de uma consulta
Pode criar uma tabela particionada a partir de um resultado de consulta das seguintes formas:
- Em SQL, use uma declaração
CREATE TABLE ... AS SELECT
. Pode usar esta abordagem para criar uma tabela particionada por coluna de unidade de tempo ou intervalo de números inteiros, mas não por tempo de carregamento. - Use a ferramenta de linhas de comando bq ou a API BigQuery para definir uma tabela de destino para uma consulta. Quando a consulta é executada, o BigQuery escreve os resultados na tabela de destino. Pode usar esta abordagem para qualquer tipo de partição.
Chame o método da API
jobs.insert
e especifique a partição na propriedadetimePartitioning
ou na propriedaderangePartitioning
.
SQL
Use a declaração CREATE TABLE
. Inclua uma cláusula PARTITION BY
para configurar a partição.
O exemplo seguinte cria uma tabela com partição na coluna transaction_date
:
Na Trusted Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE) PARTITION BY transaction_date AS ( SELECT transaction_id, transaction_date FROM mydataset.mytable );
Use a cláusula
OPTIONS
para definir opções de tabela, como os requisitos de filtro de partição.Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para criar uma tabela particionada a partir de uma consulta, use o comando
bq query
com a flag--destination_table
e a flag--time_partitioning_type
.Partição de colunas de unidades de tempo:
bq query \ --use_legacy_sql=false \ --destination_table TABLE_NAME \ --time_partitioning_field COLUMN \ --time_partitioning_type UNIT_TIME \ 'QUERY_STATEMENT'
Particionamento por tempo de ingestão:
bq query \ --use_legacy_sql=false \ --destination_table TABLE_NAME \ --time_partitioning_type UNIT_TIME \ 'QUERY_STATEMENT'
Partição de intervalo de números inteiros:
bq query \ --use_legacy_sql=false \ --destination_table PROJECT_ID:DATASET.TABLE \ --range_partitioning COLUMN,START,END,INTERVAL \ 'QUERY_STATEMENT'
Substitua o seguinte:
- PROJECT_ID: o ID do projeto. Se for omitido, é usado o seu projeto predefinido.
- DATASET: o nome de um conjunto de dados no seu projeto.
- TABLE: o nome da tabela a criar.
- COLUMN: o nome da coluna de partição.
- UNIT_TIME: o tipo de partição. Os valores suportados incluem
DAY
,HOUR
,MONTH
ouYEAR
. - START: o início da partição por intervalo, inclusive.
- END: o fim da partição por intervalo, exclusivo.
- INTERVAL: a largura de cada intervalo na partição.
- QUERY_STATEMENT: a consulta usada para preencher a tabela.
O exemplo seguinte cria uma tabela com partição na coluna
transaction_date
, usando a partição mensal.bq query \ --use_legacy_sql=false \ --destination_table mydataset.newtable \ --time_partitioning_field transaction_date \ --time_partitioning_type MONTH \ 'SELECT transaction_id, transaction_date FROM mydataset.mytable'
O exemplo seguinte cria uma tabela com partição na coluna
customer_id
, usando a partição de intervalo de números inteiros.bq query \ --use_legacy_sql=false \ --destination_table mydataset.newtable \ --range_partitioning customer_id,0,100,10 \ 'SELECT * FROM mydataset.ponies'
Para tabelas particionadas por tempo de carregamento, também pode carregar dados para uma partição específica através de um decorador de partição. O exemplo seguinte cria uma nova tabela particionada por tempo de ingestão e carrega dados na partição
20180201
(1 de fevereiro de 2018):bq query \ --use_legacy_sql=false \ --time_partitioning_type=DAY \ --destination_table='newtable$20180201' \ 'SELECT * FROM mydataset.mytable'
API
Para guardar os resultados da consulta numa tabela particionada, chame o método jobs.insert
.
Configure uma tarefa de query
. Especifique a tabela de destino no
destinationTable
. Especifique a partição na propriedade timePartitioning
ou na propriedade rangePartitioning
.
Converta tabelas divididas por datas em tabelas particionadas por tempo de ingestão
Se criou anteriormente tabelas divididas por datas, pode converter o conjunto completo de tabelas relacionadas numa única tabela particionada por tempo de carregamento através do comando partition
na ferramenta de linha de comandos bq.
bq --location=LOCATION partition \ --time_partitioning_type=PARTITION_TYPE \ --time_partitioning_expiration INTEGER \ PROJECT_ID:SOURCE_DATASET.SOURCE_TABLE \ PROJECT_ID:DESTINATION_DATASET.DESTINATION_TABLE
Substitua o seguinte:
- LOCATION: o nome da sua localização. A flag
--location
é opcional. - PARTITION_TYPE: o tipo de partição. Os valores possíveis incluem
DAY
,HOUR
,MONTH
ouYEAR
. - INTEGER: o tempo de validade da partição, em segundos. Não existe um valor mínimo. O tempo de expiração é avaliado como a data UTC da partição mais o valor inteiro. A flag
time_partitioning_expiration
é opcional. - PROJECT_ID: o ID do seu projeto.
- SOURCE_DATASET: o conjunto de dados que contém as tabelas divididas por datas.
- SOURCE_TABLE: o prefixo das tabelas divididas por datas.
- DESTINATION_DATASET; O conjunto de dados para a nova tabela particionada.
- DESTINATION_TABLE; O nome da tabela particionada a criar.
O comando partition
não suporta as marcas --label
, --expiration
,
--add_tags
nem --description
. Pode adicionar etiquetas, uma data de validade da tabela, etiquetas e uma descrição à tabela depois de a criar.
Quando executa o comando partition
, o BigQuery cria uma tarefa de cópia
que gera partições a partir das tabelas divididas.
O exemplo seguinte cria uma tabela particionada por tempo de ingestão denominada mytable_partitioned
a partir de um conjunto de tabelas divididas por datas com o prefixo sourcetable_
. A nova tabela é particionada diariamente, com um prazo de validade da partição de 259 200 segundos (3 dias).
bq partition \
--time_partitioning_type=DAY \
--time_partitioning_expiration 259200 \
mydataset.sourcetable_ \
mydataset.mytable_partitioned
Se as tabelas divididas por data fossem sourcetable_20180126
e
sourcetable_20180127
, este comando criaria as seguintes partições:
mydataset.mytable_partitioned$20180126
e
mydataset.mytable_partitioned$20180127
.
Segurança da tabela particionada
O controlo de acesso para tabelas particionadas é igual ao controlo de acesso para tabelas padrão. Para mais informações, consulte o artigo Introdução aos controlos de acesso a tabelas.
O que se segue?
- Para saber como gerir e atualizar tabelas particionadas, consulte o artigo Gerir tabelas particionadas.
- Para obter informações sobre como consultar tabelas particionadas, consulte o artigo Consultar tabelas particionadas.