Parâmetros de tempo de execução em transferências do Cloud Storage
Quando configura uma transferência de dados no Cloud Storage, no Azure Blob Storage ou no Amazon Simple Storage Service (Amazon S3), pode parametrizar o URI (ou o caminho dos dados) e a tabela de destino. A parametrização permite-lhe carregar dados de contentores organizados por data. Estes parâmetros são denominados parâmetros de tempo de execução para os distinguir dos parâmetros de consulta.
Quando usa parâmetros de tempo de execução numa transferência, pode fazer o seguinte:
- Especifique como quer particionar a tabela de destino
- Recupere ficheiros que correspondem a uma data específica
Parâmetros de tempo de execução disponíveis
Quando configura a transferência do Cloud Storage, Blob Storage ou Amazon S3, pode especificar como quer particionar a tabela de destino através de 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 transferências agendadas regularmente, run_time representa a hora de execução pretendida. Por exemplo, se a transferência estiver definida como "a cada 24 horas", a diferença run_time entre duas consultas consecutivas será 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, 20180101. Este formato é compatível com tabelas particionadas por tempo de ingestão. |
Sistema de modelos
As transferências do Cloud Storage, Blob Storage e Amazon S3 suportam parâmetros de tempo de execução no nome da tabela de destino através de uma sintaxe 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 |
Opções de partição
Existem dois tipos de tabelas particionadas no BigQuery:
- Tabelas particionadas por tempo de ingestão. Para transferências do Cloud Storage, Blob Storage e Amazon S3, o tempo de carregamento é o tempo de execução da transferência.
- Tabelas particionadas com base numa coluna. O tipo de coluna tem de ser uma coluna
TIMESTAMP
ouDATE
.
Se a tabela de destino estiver particionada numa coluna, identifica a coluna de partição quando cria a tabela de destino e especifica o respetivo esquema. Saiba como criar tabelas particionadas baseadas em colunas no artigo Criar e usar tabelas particionadas.
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
- Tenha em atenção que não é possível especificar minutos.
- Tabela de destino:
- Tabela particionada por colunas
- Tabela de destino:
mytable
- Especifique a coluna de partição como uma coluna
TIMESTAMP
ouDATE
quando criar o esquema da tabela.
- Tabela de destino:
Notas sobre a utilização de parâmetros
- Se particionar os dados com base no fuso horário local, tem de calcular manualmente a diferença de horas em relação ao UTC através do mecanismo de compensação na sintaxe de modelos.
- Não é possível especificar minutos nos parâmetros.
- É permitido usar carateres universais para o URI ou o caminho de dados em combinação com parâmetros no nome da tabela de destino.
Exemplos de parâmetros de tempo de execução
Os exemplos seguintes mostram formas de combinar o caráter universal e os parâmetros para exemplos de utilização comuns. Suponha que o nome da tabela é mytable
e que a data/hora run_time
é 2018-02-15 00:00:00
(UTC) para todos os exemplos.
Transfira dados para uma tabela não particionada
Este exemplo de utilização aplica-se ao carregamento de novos ficheiros de um contentor do Cloud Storage, Blob Storage ou Amazon S3 para uma tabela não particionada. Este exemplo usa um caráter universal no URI ou no caminho de dados e usa uma transferência de atualização ad hoc para recolher novos ficheiros.
Origem 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 |
Carregue uma imagem instantânea de todos os dados numa tabela particionada por tempo de ingestão
Neste caso, todos os dados no URI ou no caminho de dados especificado são transferidos para uma tabela particionada pela data atual. Numa transferência de atualização, esta configuração seleciona os ficheiros adicionados desde o último carregamento e adiciona-os a uma partição específica.
Origem de dados | URI de origem ou caminho de dados | Nome da tabela de destino parametrizado | 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 exemplo de utilização 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 obtém ficheiros adicionados recentemente que correspondem a uma determinada data e carrega os dados na partição correspondente.
Origem de dados | URI ou caminho de dados parametrizado | Nome da tabela de destino parametrizado | 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 |
O que se segue?
- Saiba como configurar uma transferência do Cloud Storage.
- Saiba mais acerca do Serviço de transferência de dados do BigQuery.