Parâmetros do ambiente de execução em transferências do Armazenamento de blobs
Ao configurar uma transferência de dados no Cloud Storage, no Armazenamento de blobs do Azure ou no Amazon Simple Storage Service (Amazon S3), é possível parametrizar o URI (ou caminho de dados) e a tabela de destino. A parametrização permite carregar dados de buckets organizados por data. Esses parâmetros são chamados de parâmetros de ambiente de execução para diferenciá-los dos parâmetros de consulta.
Ao usar os parâmetros de ambiente de execução em uma transferência, é possível:
- especificar o modo de particionamento da tabela de destino;
- recuperar arquivos que correspondem a uma data específica.
Parâmetros de ambiente de execução disponíveis
Ao configurar a transferência do Cloud Storage, Armazenamento de blobs ou Amazon S3, é possível especificar como você quer particionar a tabela de destino usando parâmetros de ambiente de execução.
Parâmetro | Tipo de modelo | Valor |
---|---|---|
run_time |
Carimbo de data/hora formatado | Na hora UTC, de acordo com a programação. Para transferências programadas regularmente, run_time representa o tempo de execução pretendido. Por exemplo, se a transferência for definida como “a cada 24 horas”, a diferença de run_time entre duas consultas consecutivas será de exatamente 24 horas, mesmo que o tempo real de execução varie um pouco.Consulte TransferRun.runTime |
run_date |
String de data | A data do parâmetro run_time no formato a seguir: %Y%m%d ; por exemplo, 20180101. Esse formato é compatível com tabelas particionadas por tempo de ingestão. |
Sistema de modelo
As transferências do Cloud Storage, Armazenamento de blobs e do Amazon S3 são compatíveis com os parâmetros de ambiente de execução no nome da tabela de destino usando uma sintaxe de modelo.
Sintaxe de modelos de parâmetros
A sintaxe de modelos é compatível com modelos básicos de strings e ajuste de horário. A referência aos parâmetros é feita nos seguintes formatos:
{run_date}
{run_time[+\-offset]|"time_format"}
Parâmetro | Objetivo |
---|---|
run_date |
Este parâmetro é substituído pela data no formato YYYYMMDD . |
run_time |
O parâmetro é compatível com as propriedades a seguir:
|
- Nenhum espaço em branco é permitido entre run_time, offset e time_format.
- Para incluir as chaves literais na string, insira caracteres de escape como
'\{' and '\}'
. - Para incluir aspas literais ou uma barra vertical em "time_format", como
"YYYY|MM|DD"
, insira-os como caracteres de escape na string de formatação como'\"'
ou'\|'
.
Exemplos de modelos de parâmetros
Nestes exemplos, são demonstrados a especificação de nomes de tabelas de destino com formatos de tempo diferentes e o ajuste do ambiente de execução.run_time (UTC) | Parâmetro modelado | Nome da tabela de destino da 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 |
Opções de particionamento
Há dois tipos de tabelas particionadas no BigQuery:
- Tabelas particionadas por tempo de ingestão. Para transferências do Cloud Storage, do Armazenamento de blobs e do Amazon S3, o tempo de ingestão é o ambiente de execução da transferência.
- Tabelas particionadas com base em uma coluna. O tipo de coluna precisa ser
TIMESTAMP
ouDATE
.
Se a tabela de destino estiver particionada em uma coluna, você identificará a coluna de particionamento quando criar a tabela de destino e especificar o esquema. Saiba mais sobre como criar tabelas particionadas baseadas em colunas nesta página.
Exemplos de particionamento
- Tabela sem particionamento
- Tabela de destino:
mytable
- Tabela de destino:
- Tabela particionada por tempo de ingestão
- Tabela de destino:
mytable$YYYYMMDD
- Os minutos não podem ser especificados.
- Tabela de destino:
- Tabela particionada por coluna
- Tabela de destino:
mytable
- Especifique a coluna de particionamento como
TIMESTAMP
ouDATE
ao criar o esquema da tabela.
- Tabela de destino:
Observações sobre o uso de parâmetros
- Se você particionar os dados com base no fuso horário local, precisará calcular manualmente o deslocamento de hora a partir do UTC. Basta usar o mecanismo de deslocamento na sintaxe de modelo.
- Os minutos não podem ser especificados em parâmetros.
- É permitido usar caracteres curinga no URI ou no caminho de dados em combinação com parâmetros no nome da tabela de destino.
Exemplos de parâmetros de ambiente de execução
Os exemplos a seguir mostram maneiras de combinar o caractere curinga e os parâmetros em casos de uso comuns. Suponha que o nome da tabela seja mytable
e run_time
seja 2018-02-15 00:00:00
(UTC) em todos os exemplos.
Transferir dados para uma tabela não particionada
Este caso de uso se aplica ao carregamento de novos arquivos de um bucket do Cloud Storage, Armazenamento de blobs ou do Amazon S3 em uma tabela não particionada. Neste exemplo, usamos um caractere curinga no URI ou caminho de dados e uma transferência de atualização ad hoc para coletar novos arquivos.
Fonte de dados | URI de origem ou caminho de dados | Nome da tabela de destino |
---|---|---|
Cloud Storage | gs://bucket/*.csv |
mytable |
Amazon S3 | s3://bucket/*.csv |
mytable |
Armazenamento de blobs | *.csv |
mytable |
Carregar um snapshot de todos os dados em uma tabela particionada por tempo de processamento
Nesse caso, todos os dados no URI ou caminho de dados especificado são transferidos para uma tabela particionada até a data de hoje. Em uma transferência de atualização, essa configuração seleciona os arquivos adicionados desde o último carregamento e os inclui em uma partição específica.
Fonte de dados | URI de origem ou caminho de dados | Nome da tabela de destino parametrizada | Nome da tabela de destino avaliada |
---|---|---|---|
Cloud Storage | gs://bucket/*.csv |
mytable${run_time|"%Y%m%d"} |
mytable$20180215 |
Amazon S3 | s3://bucket/*.csv |
mytable${run_time|"%Y%m%d"} |
mytable$20180215 |
Armazenamento de blobs | *.csv |
mytable${run_time|"%Y%m%d"} |
mytable$20180215 |
Este caso de uso transfere os dados de hoje para uma tabela particionada na data de hoje. Este exemplo também se aplica a uma transferência de atualização que recupera arquivos recém-adicionados que correspondem a uma determinada data, além de carregar os dados na partição correspondente.
Fonte de dados | Caminho de dados ou URI parametrizado | Nome da tabela de destino parametrizada | URI ou caminho de dados avaliado | Nome da tabela de destino avaliada |
---|---|---|---|---|
Cloud Storage | gs://bucket/events-{run_time|"%Y%m%d"}/*.csv |
mytable${run_time|"%Y%m%d"} |
gs://bucket/events-20180215/*.csv |
mytable$20180215 |
Amazon S3 | s3://bucket/events-{run_time|"%Y%m%d"}/*.csv |
mytable${run_time|"%Y%m%d"} |
s3://bucket/events-20180215/*.csv |
mytable$20180215 |
Armazenamento de blobs | events-{run_time|"%Y%m%d"}/*.csv |
mytable${run_time|"%Y%m%d"} |
events-20180215/*.csv |
mytable$20180215 |
A seguir
- Saiba mais sobre como configurar uma transferência do Armazenamento de blobs do Azure.
- Saiba mais sobre o serviço de transferência de dados do BigQuery.