Agendamento de consultas
Esta página descreve como agendar consultas recorrentes no BigQuery.
Pode agendar a execução de consultas de forma recorrente. As consultas agendadas têm de ser escritas em GoogleSQL, que pode incluir declarações de linguagem de definição de dados (LDD) e linguagem de manipulação de dados (DML). Pode organizar os resultados da consulta por data e hora parametrizando a string de consulta e a tabela de destino.
Quando cria ou atualiza a programação de uma consulta, a hora agendada da consulta é convertida da sua hora local para UTC. O UTC não é afetado pela hora de verão.
Antes de começar
- As consultas agendadas usam funcionalidades do Serviço de transferência de dados do BigQuery. Verifique se concluiu todas as ações necessárias em Ativar o Serviço de transferência de dados do BigQuery.
- Conceda funções de gestão de identidade e de acesso (IAM) que dão aos utilizadores as autorizações necessárias para realizar cada tarefa neste documento.
- Se planeia especificar uma chave de encriptação gerida pelo cliente (CMEK), certifique-se de que a sua conta de serviço tem autorizações para encriptar e desencriptar e que tem o ID de recurso da chave do Cloud KMS necessário para usar a CMEK. Para obter informações sobre como as CMEKs funcionam com o Serviço de transferência de dados do BigQuery, consulte o artigo Especifique a chave de encriptação com consultas agendadas.
Autorizações necessárias
Para agendar uma consulta, precisa das seguintes autorizações do IAM:
Para criar a transferência, tem de ter as autorizações
bigquery.transfers.update
ebigquery.datasets.get
ou as autorizaçõesbigquery.jobs.create
,bigquery.transfers.get
ebigquery.datasets.get
.Para executar uma consulta agendada, tem de ter:
- Autorizações
bigquery.datasets.get
no conjunto de dados de destino bigquery.jobs.create
- Autorizações
Para modificar ou eliminar uma consulta agendada, tem de ter as autorizações bigquery.transfers.update
e bigquery.transfers.get
, ou a autorização bigquery.jobs.create
e a propriedade da consulta agendada.
A função do IAM
Administrador do BigQuery (roles/bigquery.admin
)
predefinida inclui as autorizações de que precisa para
agendar ou modificar uma consulta.
Para mais informações sobre as funções de IAM no BigQuery, consulte o artigo Funções e autorizações predefinidas.
Para criar ou atualizar consultas agendadas executadas por uma conta de serviço, tem de ter acesso a essa conta de serviço. Para mais informações sobre como conceder aos utilizadores a função de conta de serviço, consulte o artigo Função de utilizador da conta de serviço. Para selecionar uma conta de serviço na IU de consultas agendadas da Trusted Cloud consola, precisa das seguintes autorizações do IAM:
iam.serviceAccounts.list
para listar as suas contas de serviço.iam.serviceAccountUser
para atribuir uma conta de serviço a uma consulta agendada.
Opções de configuração
As secções seguintes descrevem as opções de configuração.
String de consulta
A string de consulta tem de ser válida e escrita em GoogleSQL. Cada execução de uma consulta agendada pode receber os seguintes parâmetros de consulta.
Para testar manualmente uma string de consulta com parâmetros @run_time
e @run_date
antes de agendar uma consulta, use a ferramenta de linhas de comando bq.
Parâmetros disponíveis
Parâmetro | Tipo de GoogleSQL | Valor |
---|---|---|
@run_time |
TIMESTAMP |
Representado na hora UTC. Para consultas agendadas regularmente, run_time representa a hora de execução pretendida. Por exemplo, se a consulta agendada estiver definida como "a cada 24 horas", a run_time diferença entre duas consultas consecutivas é exatamente de 24 horas, mesmo que a hora de execução real possa variar ligeiramente. |
@run_date |
DATE |
Representa uma data do calendário lógico. |
Exemplo
O parâmetro @run_time
faz parte da string de consulta neste exemplo, que
consulta um conjunto de dados público denominado hacker_news.stories
.
SELECT @run_time AS time, title, author, text FROM `bigquery-public-data.hacker_news.stories` LIMIT 1000
Tabela de destino
Se a tabela de destino dos resultados não existir quando configurar a consulta agendada, o BigQuery tenta criá-la automaticamente.
Se estiver a usar uma consulta DDL ou DML, na Trusted Cloud consola, escolha a localização de processamento ou a região. A localização do processamento é necessária para consultas DDL ou DML que criam a tabela de destino.
Se a tabela de destino existir e estiver a usar a WRITE_APPEND
preferência de escrita, a app BigQuery anexa dados à tabela de destino e tenta mapear o esquema.
O BigQuery permite automaticamente adições e reordenações de campos, e
acomoda campos opcionais em falta. Se o esquema da tabela mudar tanto entre execuções que o BigQuery não consiga processar as alterações automaticamente, a consulta agendada falha.
As consultas podem referenciar tabelas de projetos e conjuntos de dados diferentes. Quando configurar a consulta agendada, não tem de incluir o conjunto de dados de destino no nome da tabela. Especifica o conjunto de dados de destino separadamente.
O conjunto de dados e a tabela de destino de uma consulta agendada têm de estar no mesmo projeto que a consulta agendada.
Escrever preferência
A preferência de escrita que selecionar determina a forma como os resultados da consulta são escritos numa tabela de destino existente.
WRITE_TRUNCATE
: se a tabela existir, o BigQuery substitui os dados da tabela.WRITE_APPEND
: se a tabela existir, o BigQuery anexa os dados à tabela.
Se estiver a usar uma consulta DDL ou DML, não pode usar a opção de preferência de escrita.
A criação, o truncamento ou a anexação de uma tabela de destino só ocorrem se o BigQuery conseguir concluir a consulta com êxito. As ações de criação, redução ou anexação ocorrem como uma atualização atómica após a conclusão do trabalho.
Clustering
As consultas agendadas só podem criar agrupamentos em novas tabelas quando a tabela é criada com uma declaração DDL CREATE TABLE AS SELECT
. Consulte o artigo
Criar uma tabela agrupada a partir do resultado de uma consulta
na página Usar declarações de linguagem de definição de dados.
Opções de partição
As consultas agendadas podem criar tabelas de destino particionadas ou não particionadas. A partição está disponível na Trusted Cloud consola, na ferramenta de linhas de comando bq e nos métodos de configuração da API. Se estiver a usar uma consulta DDL ou DML com a partição, deixe o campo de partição da tabela de destino em branco.
Pode usar os seguintes tipos de particionamento de tabelas no BigQuery:
- Partição de intervalo de números inteiros:
Tabelas particionadas com base em intervalos de valores numa coluna
INTEGER
específica. - Particionamento de colunas de unidades de tempo:
tabelas particionadas com base numa coluna
TIMESTAMP
,DATE
ouDATETIME
. - Particionamento por tempo de ingestão: Tabelas particionadas por tempo de ingestão. O BigQuery atribui automaticamente linhas a partições com base na hora em que o BigQuery ingere os dados.
Para criar uma tabela particionada através de uma consulta agendada na Trusted Cloud consola, use as seguintes opções:
Para usar a partição de intervalo de números inteiros, deixe o campo de partição da tabela de destino em branco.
Para usar a partição de colunas de unidades de tempo, especifique o nome da coluna no campo de partição da tabela de destino quando configurar uma consulta agendada.
Para usar a partição por tempo de carregamento, deixe o campo de partição da tabela de destino em branco e indique a partição por data no nome da tabela de destino. Por exemplo,
mytable${run_date}
. Para mais informações, consulte o artigo Sintaxe de modelos de parâmetros.
Parâmetros disponíveis
Quando configurar a consulta agendada, pode especificar como quer particionar a tabela de destino com parâmetros de tempo de execução.
Parâmetro | Tipo de modelo | Valor |
---|---|---|
run_time |
Data/hora formatada | Na hora UTC, de acordo com o horário. Para consultas agendadas regularmente, run_time representa a hora de execução pretendida. Por exemplo, se a consulta agendada estiver definida como "a cada 24 horas", a run_time diferença entre duas consultas consecutivas é exatamente de 24 horas, embora a hora de execução real possa variar ligeiramente.Consulte TransferRun.runTime . |
run_date |
String de data | A data do parâmetro run_time no seguinte formato: %Y-%m-%d ; por exemplo, 2018-01-01 . Este formato é compatível com tabelas particionadas por tempo de ingestão. |
Sistema de modelos
As consultas agendadas suportam parâmetros de tempo de execução no nome da tabela de destino com uma sintaxe de criação de modelos.
Sintaxe de modelos de parâmetros
A sintaxe de modelos suporta modelos de strings básicos e compensação de tempo. Os parâmetros são referenciados nos seguintes formatos:
{run_date}
{run_time[+\-offset]|"time_format"}
Parâmetro | Purpose |
---|---|
run_date |
Este parâmetro é substituído pela data no formato YYYYMMDD . |
run_time |
Este parâmetro suporta as seguintes propriedades:
|
- Não são permitidos espaços em branco entre run_time, offset e o formato de hora.
- Para incluir chavetas literais na string, pode ignorá-las como
'\{' and '\}'
. - Para incluir aspas literais ou uma barra vertical no time_format, como
"YYYY|MM|DD"
, pode anulá-las na string de formato da seguinte forma:'\"'
ou'\|'
.
Exemplos de modelos de parâmetros
Estes exemplos demonstram a especificação de nomes de tabelas de destino com diferentes formatos de hora e o desvio da hora de execução.run_time (UTC) | Parâmetro baseado em modelo | Nome da tabela de destino de saída |
---|---|---|
2018-02-15 00:00:00 | mytable |
mytable |
2018-02-15 00:00:00 | mytable_{run_time|"%Y%m%d"} |
mytable_20180215 |
2018-02-15 00:00:00 | mytable_{run_time+25h|"%Y%m%d"} |
mytable_20180216 |
2018-02-15 00:00:00 | mytable_{run_time-1h|"%Y%m%d"} |
mytable_20180214 |
2018-02-15 00:00:00 | mytable_{run_time+1.5h|"%Y%m%d%H"}
ou mytable_{run_time+90m|"%Y%m%d%H"} |
mytable_2018021501 |
2018-02-15 00:00:00 | {run_time+97s|"%Y%m%d"}_mytable_{run_time+97s|"%H%M%S"} |
20180215_mytable_000137 |
Usar uma conta de serviço
Pode configurar uma consulta agendada para autenticar como uma conta de serviço. Uma conta de serviço é uma conta especial associada ao seu projeto Trusted Cloud by S3NS . A conta de serviço pode executar tarefas, como consultas agendadas ou pipelines de processamento em lote, com as suas próprias credenciais de serviço em vez das credenciais de um utilizador final.
Leia mais sobre a autenticação com contas de serviço na Introdução à autenticação.
Pode configurar a consulta agendada com uma conta de serviço. Se iniciou sessão com uma identidade federada, é necessária uma conta de serviço para criar uma transferência. Se tiver iniciado sessão com uma Conta Google, uma conta de serviço para a transferência é opcional.
Pode atualizar uma consulta agendada existente com as credenciais de uma conta de serviço com a ferramenta de linhas de comando bq ou a Trusted Cloud consola. Para mais informações, consulte o artigo Atualize as credenciais de consultas agendadas.
Especifique a chave de encriptação com consultas agendadas
Pode especificar chaves de encriptação geridas pelo cliente (CMEKs) para encriptar dados para uma execução de transferência. Pode usar uma CMEK para suportar transferências de consultas agendadas.Quando especifica uma CMEK com uma transferência, o Serviço de transferência de dados do BigQuery aplica a CMEK a qualquer cache intermédia no disco dos dados carregados, para que todo o fluxo de trabalho de transferência de dados esteja em conformidade com a CMEK.
Não é possível atualizar uma transferência existente para adicionar uma CMEK se a transferência não tiver sido criada originalmente com uma CMEK. Por exemplo, não pode alterar uma tabela de destino que foi originalmente encriptada por predefinição para ser encriptada com CMEK. Por outro lado, também não pode alterar uma tabela de destino encriptada com CMEK para ter um tipo de encriptação diferente.
Pode atualizar uma CMEK para uma transferência se a configuração de transferência tiver sido criada originalmente com uma encriptação CMEK. Quando atualiza uma CMEK para uma configuração de transferência, o Serviço de transferência de dados do BigQuery propaga a CMEK para as tabelas de destino na execução seguinte da transferência, em que o Serviço de transferência de dados do BigQuery substitui todas as CMEKs desatualizadas pela nova CMEK durante a execução da transferência. Para mais informações, consulte o artigo Atualize uma transferência.
Também pode usar as chaves predefinidas do projeto. Quando especifica uma chave predefinida do projeto com uma transferência, o Serviço de transferência de dados do BigQuery usa a chave predefinida do projeto como a chave predefinida para quaisquer novas configurações de transferência.
Configure consultas agendadas
Para uma descrição da sintaxe da programação, consulte o artigo
Formatar a programação.
Para ver detalhes sobre a sintaxe de agendamento, consulte o recurso: TransferConfig
.
Consola
Abra a página do BigQuery na Trusted Cloud consola.
Execute a consulta que lhe interessa. Quando estiver satisfeito com os resultados, clique em Agendar.
As opções de consulta agendada são abertas no painel Nova consulta agendada.
No painel Nova consulta agendada:
- Em Nome da consulta agendada, introduza um nome como
My scheduled query
. O nome da consulta agendada pode ser qualquer valor que possa identificar mais tarde se precisar de modificar a consulta. Opcional: por predefinição, a consulta está agendada para ser executada diariamente. Pode alterar a programação predefinida selecionando uma opção no menu pendente Repete-se:
Para especificar uma frequência personalizada, selecione Personalizado e, de seguida, introduza uma especificação de tempo semelhante a Cron no campo Agendamento personalizado, por exemplo,
every mon 23:30
ouevery 6 hours
. Para ver detalhes sobre programações válidas, incluindo intervalos personalizados, consulte o camposchedule
em Recurso:TransferConfig
.Para alterar a hora de início, selecione a opção Começar à hora definida, introduza a data e a hora de início selecionadas.
Para especificar uma hora de fim, selecione a opção Hora de fim do agendamento, introduza a data e a hora de fim selecionadas.
Para guardar a consulta sem um agendamento, para que a possa executar a pedido mais tarde, selecione A pedido no menu Repetições.
- Em Nome da consulta agendada, introduza um nome como
Para uma consulta
SELECT
do GoogleSQL, selecione a opção Definir uma tabela de destino para os resultados da consulta e faculte as seguintes informações acerca do conjunto de dados de destino.- Para Nome do conjunto de dados, escolha o conjunto de dados de destino adequado.
- Em Nome da tabela, introduza o nome da tabela de destino.
Para Preferência de escrita da tabela de destino, escolha Anexar à tabela para anexar dados à tabela ou Substituir tabela para substituir a tabela de destino.
Escolha o Tipo de localização.
Se ativou a tabela de destino para os resultados da consulta, pode selecionar Seleção automática de localização para selecionar automaticamente a localização onde a tabela de destino reside.
Caso contrário, escolha a localização onde se encontram os dados sobre os quais está a fazer a consulta.
Opções avançadas:
Opcional: CMEK Se usar chaves de encriptação geridas pelo cliente, pode selecionar Chave gerida pelo cliente em Opções avançadas. É apresentada uma lista das suas CMEKs disponíveis para escolher. Para ver informações sobre como as chaves de encriptação geridas pelo cliente (CMEKs) funcionam com o Serviço de transferência de dados do BigQuery, consulte o artigo Especifique a chave de encriptação com consultas agendadas.
Autentique como uma conta de serviço Se tiver uma ou mais contas de serviço associadas ao seu Trusted Cloud projeto, pode associar uma conta de serviço à sua consulta agendada em vez de usar as suas credenciais de utilizador. Em Credencial de consulta agendada, clique no menu para ver uma lista das suas contas de serviço disponíveis. É necessária uma conta de serviço se tiver sessão iniciada como uma identidade federada.
Configurações adicionais:
Opcional: selecione Enviar notificações por email para permitir notificações por email de falhas de execução de transferências.
Opcional: para o tópico do Pub/Sub, introduza o nome do tópico do Pub/Sub, por exemplo:
projects/myproject/topics/mytopic
.
Clique em Guardar.
bq
Opção 1: use o comando bq query
.
Para criar uma consulta agendada, adicione as opções destination_table
(ou
target_dataset
), --schedule
e --display_name
ao seu comando
bq query
.
bq query \ --display_name=name \ --destination_table=table \ --schedule=interval
Substitua o seguinte:
name
. O nome a apresentar da consulta agendada. O nome a apresentar pode ser qualquer valor que possa identificar mais tarde se precisar de modificar a consulta.table
. A tabela de destino para os resultados da consulta.--target_dataset
é uma forma alternativa de atribuir um nome ao conjunto de dados de destino para os resultados da consulta, quando usado com consultas DDL e DML.- Use
--destination_table
ou--target_dataset
, mas não ambos.
interval
. Quando usado combq query
, transforma uma consulta numa consulta agendada recorrente. É necessário um agendamento que indique a frequência com que a consulta deve ser executada. Para ver detalhes sobre horários válidos, incluindo intervalos personalizados, consulte o camposchedule
em Recurso:TransferConfig
. Exemplos:--schedule='every 24 hours'
--schedule='every 3 hours'
--schedule='every monday 09:00'
--schedule='1st sunday of sep,oct,nov 00:00'
Sinalizadores opcionais:
--project_id
é o ID do seu projeto. Se--project_id
não for especificado, é usado o projeto predefinido.--replace
substitui a tabela de destino pelos resultados da consulta após cada execução da consulta agendada. Todos os dados existentes são apagados. Para tabelas não particionadas, o esquema também é apagado.--append_table
anexa os resultados à tabela de destino.Para consultas DDL e DML, também pode fornecer o sinalizador
--location
para especificar uma região específica para processamento. Se--location
não for especificado, é usada a localização Trusted Cloud by S3NS mais próxima.
Por exemplo, o comando seguinte cria uma consulta agendada com o nome My Scheduled Query
usando a consulta SELECT 1 from mydataset.test
.
A tabela de destino é mytable
no conjunto de dados mydataset
. A consulta agendada é criada no projeto predefinido:
bq query \
--use_legacy_sql=false \
--destination_table=mydataset.mytable \
--display_name='My Scheduled Query' \
--schedule='every 24 hours' \
--replace=true \
'SELECT
1
FROM
mydataset.test'
Opção 2: use o comando bq mk
.
As consultas agendadas são um tipo de transferência. Para agendar uma consulta, pode usar a ferramenta de linhas de comando bq para criar uma configuração de transferência.
As consultas têm de estar no dialeto StandardSQL para serem agendadas.
Introduza o comando bq mk
e forneça as seguintes flags obrigatórias:
--transfer_config
--data_source
--target_dataset
(opcional para consultas LDD e DML)--display_name
--params
Sinalizadores opcionais:
--project_id
é o ID do seu projeto. Se--project_id
não for especificado, é usado o projeto predefinido.--schedule
é a frequência com que quer que a consulta seja executada. Se--schedule
não for especificado, o valor predefinido é "a cada 24 horas" com base na hora de criação.Para consultas DDL e DML, também pode fornecer o sinalizador
--location
para especificar uma região específica para processamento. Se--location
não for especificado, é usada a localização Trusted Cloud by S3NS mais próxima.--service_account_name
destina-se a autenticar a sua consulta agendada com uma conta de serviço em vez da sua conta de utilizador individual.--destination_kms_key
especifica o ID de recurso da chave para a chave se usar uma chave de encriptação gerida pelo cliente (CMEK) para esta transferência. Para obter informações sobre como as CMEKs funcionam com o Serviço de transferência de dados do BigQuery, consulte o artigo Especifique a chave de encriptação com consultas agendadas.
bq mk \ --transfer_config \ --target_dataset=dataset \ --display_name=name \ --params='parameters' \ --data_source=data_source
Substitua o seguinte:
dataset
. O conjunto de dados de destino para a configuração de transferência.- Este parâmetro é opcional para consultas DDL e DML. É obrigatório para todas as outras consultas.
name
. O nome a apresentar da configuração de transferência. O nome a apresentar pode ser qualquer valor que possa identificar posteriormente se precisar de modificar a consulta.parameters
. Contém os parâmetros da configuração de transferência criada no formato JSON. Por exemplo:--params='{"param":"param_value"}'
.- Para uma consulta agendada, tem de fornecer o parâmetro
query
. - O parâmetro
destination_table_name_template
é o nome da tabela de destino.- Este parâmetro é opcional para consultas DDL e DML. É obrigatório para todas as outras consultas.
- Para o parâmetro
write_disposition
, pode optar porWRITE_TRUNCATE
truncar (substituir) a tabela de destino ouWRITE_APPEND
para anexar os resultados da consulta à tabela de destino.- Este parâmetro é opcional para consultas DDL e DML. É obrigatório para todas as outras consultas.
- Para uma consulta agendada, tem de fornecer o parâmetro
data_source
. A origem de dados:scheduled_query
.- Opcional: a flag
--service_account_name
destina-se à autenticação com uma conta de serviço em vez de uma conta de utilizador individual. - Opcional: o elemento
--destination_kms_key
especifica o ID do recurso da chave para a chave do Cloud KMS, por exemplo,projects/project_name/locations/us/keyRings/key_ring_name/cryptoKeys/key_name
.
Por exemplo, o comando seguinte cria uma configuração de transferência de consultas agendada
denominada My Scheduled Query
através da consulta SELECT 1
from mydataset.test
. A tabela de destino mytable
é truncada para cada gravação, e o conjunto de dados de destino é mydataset
. A consulta agendada é criada no projeto predefinido e autentica-se como uma conta de serviço:
bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Scheduled Query' \
--params='{"query":"SELECT 1 from mydataset.test","destination_table_name_template":"mytable","write_disposition":"WRITE_TRUNCATE"}' \
--data_source=scheduled_query \
--service_account_name=abcdef-test-sa@abcdef-test.s3ns.iam.gserviceaccount.com
Na primeira vez que executar o comando, recebe uma mensagem semelhante à seguinte:
[URL omitted] Please copy and paste the above URL into your web browser and
follow the instructions to retrieve an authentication code.
Siga as instruções na mensagem e cole o código de autenticação na linha de comandos.
API
Use o método projects.locations.transferConfigs.create
e forneça uma instância do recurso TransferConfig
.
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
.
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
.
Configure consultas agendadas com uma conta de serviço
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
.
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
.
Veja o estado da consulta agendada
Consola
Para ver o estado das suas consultas agendadas, no menu de navegação, clique em Agendamento e filtre por Consulta agendada. Clique numa consulta agendada para ver mais detalhes sobre a mesma.
bq
As consultas agendadas são um tipo de transferência. Para mostrar os detalhes de uma consulta agendada, pode usar primeiro a ferramenta de linhas de comando bq para listar as suas configurações de transferência.
Introduza o comando bq ls
e forneça a flag de transferência
--transfer_config
. Os seguintes indicadores também são obrigatórios:
--transfer_location
Por exemplo:
bq ls \
--transfer_config \
--transfer_location=us
Para mostrar os detalhes de uma única consulta agendada, introduza o comando bq show
e forneça o transfer_path
para essa consulta agendada ou configuração de transferência.
Por exemplo:
bq show \
--transfer_config \
projects/862514376110/locations/us/transferConfigs/5dd12f26-0000-262f-bc38-089e0820fe38
API
Use o método projects.locations.transferConfigs.list
e forneça uma instância do recurso TransferConfig
.
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
.
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
.
Atualize consultas agendadas
Consola
Para atualizar uma consulta agendada, siga estes passos:
- No menu de navegação, clique em Consultas agendadas ou Agendamento.
- Na lista de consultas agendadas, clique no nome da consulta que quer alterar.
- Na página Detalhes da consulta agendada apresentada, clique em Editar.
- Opcional: altere o texto da consulta no painel de edição de consultas.
- Clique em Programar consulta e, de seguida, selecione Atualizar consulta programada.
- Opcional: altere quaisquer outras opções de programação para a consulta.
- Clique em Atualizar.
bq
As consultas agendadas são um tipo de transferência. Para atualizar uma consulta agendada, pode usar a ferramenta de linhas de comando bq para fazer uma configuração de transferência.
Introduza o comando bq update
com a flag --transfer_config
necessária.
Sinalizadores opcionais:
--project_id
é o ID do seu projeto. Se--project_id
não for especificado, é usado o projeto predefinido.--schedule
é a frequência com que quer que a consulta seja executada. Se--schedule
não for especificado, o valor predefinido é "a cada 24 horas" com base na hora de criação.--service_account_name
só tem efeito se--update_credentials
também estiver definido. Para mais informações, consulte o artigo Atualize as credenciais de consultas agendadas.--target_dataset
(opcional para consultas LDD e LMD) é uma forma alternativa de atribuir um nome ao conjunto de dados de destino para os resultados da consulta, quando usado com consultas LDD e LMD.--display_name
é o nome da consulta agendada.--params
os parâmetros da configuração de transferência criada no formato JSON. Por exemplo: --params='{"param":"param_value"}'.--destination_kms_key
especifica o ID de recurso da chave para a chave do Cloud KMS se usar uma chave de encriptação gerida pelo cliente (CMEK) para esta transferência. Para obter informações sobre como as chaves de encriptação geridas pelo cliente (CMEK) funcionam com o Serviço de transferência de dados do BigQuery, consulte o artigo Especifique a chave de encriptação com consultas agendadas.
bq update \ --target_dataset=dataset \ --display_name=name \ --params='parameters' --transfer_config \ RESOURCE_NAME
Substitua o seguinte:
dataset
. O conjunto de dados de destino para a configuração de transferência. Este parâmetro é opcional para consultas DDL e DML. É necessário para todas as outras consultas.name
. O nome a apresentar da configuração de transferência. O nome a apresentar pode ser qualquer valor que possa identificar posteriormente se precisar de modificar a consulta.parameters
. Contém os parâmetros da configuração de transferência criada no formato JSON. Por exemplo:--params='{"param":"param_value"}'
.- Para uma consulta agendada, tem de fornecer o parâmetro
query
. - O parâmetro
destination_table_name_template
é o nome da tabela de destino. Este parâmetro é opcional para consultas DDL e DML. É obrigatório para todas as outras consultas. - Para o parâmetro
write_disposition
, pode optar porWRITE_TRUNCATE
truncar (substituir) a tabela de destino ouWRITE_APPEND
para anexar os resultados da consulta à tabela de destino. Este parâmetro é opcional para consultas de LDD e LMD. É obrigatório para todas as outras consultas.
- Para uma consulta agendada, tem de fornecer o parâmetro
- Opcional: o elemento
--destination_kms_key
especifica o ID do recurso da chave para a chave do Cloud KMS, por exemplo,projects/project_name/locations/us/keyRings/key_ring_name/cryptoKeys/key_name
. RESOURCE_NAME
: o nome do recurso da transferência (também conhecido como configuração de transferência). Se não souber o nome do recurso da transferência, encontre-o com:bq ls --transfer_config --transfer_location=location
.
Por exemplo, o comando seguinte atualiza uma configuração de transferência de consultas agendada
denominada My Scheduled Query
através da consulta SELECT 1
from mydataset.test
. A tabela de destino mytable
é truncada para cada gravação e o conjunto de dados de destino é mydataset
:
bq update \
--target_dataset=mydataset \
--display_name='My Scheduled Query' \
--params='{"query":"SELECT 1 from mydataset.test","destination_table_name_template":"mytable","write_disposition":"WRITE_TRUNCATE"}'
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
API
Use o método projects.transferConfigs.patch
e forneça o nome do recurso da transferência através do parâmetro transferConfig.name
. Se não souber o nome do recurso da transferência, use o comando bq ls --transfer_config --transfer_location=location
para listar todas as transferências ou chame o método projects.locations.transferConfigs.list
e forneça o ID do projeto através do parâmetro parent
.
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
.
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
.
Atualize consultas programadas com restrições de propriedade
Se tentar atualizar uma consulta agendada que não lhe pertence, a atualização pode falhar com a seguinte mensagem de erro:
Cannot modify restricted parameters without taking ownership of the transfer configuration.
O proprietário da consulta agendada é o utilizador associado à consulta agendada ou o utilizador que tem acesso à conta de serviço associada à consulta agendada. O utilizador associado pode ser visto nos detalhes de configuração da consulta agendada. Para ver informações sobre como atualizar a consulta agendada para assumir a propriedade, consulte o artigo Atualize as credenciais da consulta agendada. Para conceder aos utilizadores acesso a uma conta de serviço, tem de ter a função de utilizador da conta de serviço.
Os parâmetros restritos para consultas agendadas do proprietário são:
- O texto da consulta
- O conjunto de dados de destino
- O modelo de nome da tabela de destino
Atualize as credenciais da consulta agendada
Se estiver a agendar uma consulta existente, pode ter de atualizar as credenciais do utilizador na consulta. As credenciais estão automaticamente atualizadas para novas consultas agendadas.
Seguem-se outras situações que podem exigir a atualização das credenciais:
- Quer consultar dados do Google Drive numa consulta agendada.
Recebe um erro INVALID_USER quando tenta agendar a consulta:
Error code 5 : Authentication failure: User Id not found. Error code: INVALID_USERID
Recebe o seguinte erro de parâmetros restritos quando tenta atualizar a consulta:
Cannot modify restricted parameters without taking ownership of the transfer configuration.
Consola
Para atualizar as credenciais existentes numa consulta agendada:
Encontre e veja o estado de uma consulta agendada.
Clique no botão MAIS e selecione Atualizar credenciais.
Aguarde 10 a 20 minutos para que a alteração entre em vigor. Pode ter de limpar a cache do navegador.
bq
As consultas agendadas são um tipo de transferência. Para atualizar as credenciais de uma consulta agendada, pode usar a ferramenta de linha de comandos bq para atualizar a configuração de transferência.
Introduza o comando bq update
e forneça a flag de transferência
--transfer_config
. Os seguintes indicadores também são obrigatórios:
--update_credentials
Sinalizador opcional:
--service_account_name
destina-se a autenticar a sua consulta agendada com uma conta de serviço em vez da sua conta de utilizador individual.
Por exemplo, o comando seguinte atualiza uma configuração de transferência de consultas agendada para autenticar como uma conta de serviço:
bq update \
--update_credentials \
--service_account_name=abcdef-test-sa@abcdef-test.s3ns.iam.gserviceaccount.com \
--transfer_config \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
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
.
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
.
Configure uma execução manual em datas do histórico
Além de agendar a execução de uma consulta no futuro, também pode acionar
execuções imediatas manualmente. O acionamento de uma execução imediata é necessário se a sua consulta usar o parâmetro run_date
e tiver havido problemas durante uma execução anterior.
Por exemplo, todos os dias às 09:00, consulta uma tabela de origem para linhas que correspondam à data atual. No entanto, verifica que não foram adicionados dados à tabela de origem nos últimos três dias. Nesta situação, pode definir a consulta para ser executada em dados do histórico num intervalo de datas especificado por si. A consulta é executada com combinações de parâmetros run_date
e run_time
que correspondem às datas que configurou na consulta agendada.
Depois de configurar uma consulta agendada, veja como pode executar a consulta usando um intervalo de datas do histórico:
Consola
Depois de clicar em Agendar para guardar a consulta agendada, pode clicar no botão Consultas agendadas para ver a lista de consultas agendadas. Clique em qualquer nome a apresentar para ver os detalhes da programação da consulta. Na parte superior direita da página, clique em Agendar preenchimento para especificar um intervalo de datas do histórico.
Os tempos de execução escolhidos estão todos dentro do intervalo selecionado, incluindo a primeira data e excluindo a última data.
Exemplo 1
A sua consulta agendada está definida para ser executada às every day 09:00
, hora do Pacífico. Faltam-lhe dados de 1, 2 e 3 de janeiro. Escolha o seguinte intervalo de datas
histórico:
Start Time = 1/1/19
End Time = 1/4/19
A sua consulta é executada com os parâmetros run_date
e run_time
que correspondem
aos seguintes horários:
- 1/1/19 09:00 Hora do Pacífico
- 02/01/19 às 09:00 Hora do Pacífico
- 03/01/19 às 09:00, Hora do Pacífico
Exemplo 2
A sua consulta agendada está definida para ser executada às every day 23:00
, hora do Pacífico. Faltam-lhe dados de 1, 2 e 3 de janeiro. Escolha os seguintes intervalos de datas históricos (são escolhidas datas posteriores porque o UTC tem uma data diferente às 23:00, hora do Pacífico):
Start Time = 1/2/19
End Time = 1/5/19
A sua consulta é executada com os parâmetros run_date
e run_time
que correspondem
aos seguintes horários:
- 02/01/19 às 06:00 UTC ou 01/01/2019 às 23:00, hora do Pacífico
- 03/01/19 às 06:00 UTC ou 02/01/2019 às 23:00 Hora do Pacífico
- 04/01/19 às 06:00 UTC ou 03/01/2019 às 23:00 Hora do Pacífico
Depois de configurar as execuções manuais, atualize a página para as ver na lista de execuções.
bq
Para executar manualmente a consulta num intervalo de datas do histórico:
Introduza o comando bq mk
e forneça a flag de execução da transferência
--transfer_run
. Os seguintes indicadores também são obrigatórios:
--start_time
--end_time
bq mk \ --transfer_run \ --start_time='start_time' \ --end_time='end_time' \ resource_name
Substitua o seguinte:
start_time
eend_time
selecionados. Datas/horas que terminam em Z ou contêm um desvio de fuso horário válido. Exemplos:- 2017-08-19T12:11:35.00Z
- 2017-05-25T00:00:00+00:00
resource_name
. O nome do recurso da consulta agendada (ou da transferência). O nome do recurso também é conhecido como a configuração de transferência.
Por exemplo, o comando seguinte agenda um preenchimento para o recurso de consulta agendada (ou configuração de transferência):
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
.
bq mk \
--transfer_run \
--start_time 2017-05-25T00:00:00Z \
--end_time 2017-05-25T00:00:00Z \
projects/myproject/locations/us/transferConfigs/1234a123-1234-1a23-1be9-12ab3c456de7
Para mais informações, consulte bq mk --transfer_run
.
API
Use o método projects.locations.transferConfigs.scheduleRun e forneça um caminho do recurso TransferConfig.
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
.
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
.
Configure alertas para consultas agendadas
Pode configurar políticas de alerta para consultas agendadas com base em métricas de contagem de linhas. Para mais informações, consulte o artigo Configure alertas com consultas agendadas.
Elimine consultas agendadas
Consola
Para eliminar uma consulta agendada na página Consultas agendadas da Trusted Cloud consola, faça o seguinte:
- No menu de navegação, clique em Consultas agendadas.
- Na lista de consultas agendadas, clique no nome da consulta agendada que quer eliminar.
Na página Detalhes da consulta agendada, clique em Eliminar.
Em alternativa, pode eliminar uma consulta agendada na página Agendamento da consola: Trusted Cloud
- No menu de navegação, clique em Agendamento.
- Na lista de consultas agendadas, clique no menu Ações da consulta agendada que quer eliminar.
Selecione Eliminar.
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
.
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
.
Desative ou ative consultas agendadas
Para pausar as execuções agendadas de uma consulta selecionada sem eliminar o agendamento, pode desativar o agendamento.
Para desativar uma programação para uma consulta selecionada, siga estes passos:
- No menu de navegação da Trusted Cloud consola, clique em Agendamento.
- Na lista de consultas agendadas, clique no menu Ações da consulta agendada que quer desativar.
Selecione Desativar.
Para ativar uma consulta programada desativada, clique no menu
Ações da consulta programada que quer ativar e selecione Ativar.Quotas
As consultas agendadas são sempre executadas como tarefas de consulta em lote e estão sujeitas às mesmas quotas e limites do BigQuery que as consultas manuais.
Embora as consultas agendadas usem funcionalidades do Serviço de transferência de dados do BigQuery, não são transferências e não estão sujeitas à quota de tarefas de carregamento.
A identidade usada para executar a consulta determina as quotas que são aplicadas. Isto depende da configuração da consulta agendada:
Credenciais do criador (predefinição): se não especificar uma conta de serviço, a consulta agendada é executada com as credenciais do utilizador que a criou. A tarefa de consulta é faturada ao projeto do criador e está sujeita às quotas desse utilizador e projeto.
Credenciais da conta de serviço: se configurar a consulta agendada para usar uma conta de serviço, esta é executada com as credenciais da conta de serviço. Neste caso, o trabalho continua a ser faturado ao projeto que contém a consulta agendada, mas a execução está sujeita às quotas da conta de serviço especificada.
Preços
As consultas agendadas têm o mesmo preço que as consultas do BigQuery manuais.
Regiões suportadas
As consultas agendadas são suportadas nas seguintes localizações.
Regiões
A tabela seguinte lista as regiões nas Américas onde o BigQuery está disponível.Descrição da região | Nome da região | Detalhes |
---|---|---|
Columbus, Ohio | us-east5 |
|
Dallas | us-south1 |
|
Iowa | us-central1 |
|
Las Vegas | us-west4 |
|
Los Angeles | us-west2 |
|
México | northamerica-south1 |
|
Montréal | northamerica-northeast1 |
|
Virgínia do Norte | us-east4 |
|
Oregon | us-west1 |
|
Salt Lake City | us-west3 |
|
São Paulo | southamerica-east1 |
|
Santiago | southamerica-west1 |
|
Carolina do Sul | us-east1 |
|
Toronto | northamerica-northeast2 |
|
Descrição da região | Nome da região | Detalhes |
---|---|---|
Deli | asia-south2 |
|
Hong Kong | asia-east2 |
|
Jacarta | asia-southeast2 |
|
Melbourne | australia-southeast2 |
|
Mumbai | asia-south1 |
|
Osaca | asia-northeast2 |
|
Seul | asia-northeast3 |
|
Singapura | asia-southeast1 |
|
Sydney | australia-southeast1 |
|
Taiwan | asia-east1 |
|
Tóquio | asia-northeast1 |
Descrição da região | Nome da região | Detalhes |
---|---|---|
Bélgica | europe-west1 |
|
Berlim | europe-west10 |
|
Finlândia | europe-north1 |
|
Frankfurt | europe-west3 |
|
Londres | europe-west2 |
|
Madrid | europe-southwest1 |
|
Milão | europe-west8 |
|
Países Baixos | europe-west4 |
|
Paris | europe-west9 |
|
Estocolmo | europe-north2 |
|
Turim | europe-west12 |
|
Varsóvia | europe-central2 |
|
Zurique | europe-west6 |
|
Descrição da região | Nome da região | Detalhes |
---|---|---|
Damã | me-central2 |
|
Doha | me-central1 |
|
Telavive | me-west1 |
Descrição da região | Nome da região | Detalhes |
---|---|---|
Joanesburgo | africa-south1 |
Várias regiões
A tabela seguinte lista as multirregiões onde o BigQuery está disponível.Descrição multirregião | Nome multirregião |
---|---|
Centros de dados nos Estados-Membros da União Europeia1 | EU |
Centros de dados nos Estados Unidos2 | US |
1 Os dados localizados na multirregião EU
só são armazenados numa das seguintes localizações: europe-west1
(Bélgica) ou europe-west4
(Países Baixos).
A localização exata em que os dados são armazenados e processados é determinada automaticamente pelo BigQuery.
2 Os dados localizados na região múltipla US
só são armazenados numa das seguintes localizações: us-central1
(Iowa), us-west1
(Oregon) ou us-central2
(Oklahoma). A localização exata em que os dados são armazenados e processados é determinada automaticamente pelo BigQuery.
O que se segue?
- Para ver um exemplo de uma consulta agendada que usa uma conta de serviço e inclui os parâmetros
@run_date
e@run_time
, consulte o artigo Criar instantâneos de tabelas com uma consulta agendada.