Uma tabela pode ter qualquer combinação dos tipos enum
, integer
, date,
ou injected
de coluna de partição.
Tipo enum
Use o tipo enum
para colunas de partição cujos valores são membros de um conjunto enumerado (por exemplo, códigos de aeroporto ou Regiões da AWS).
Defina as propriedades da partição na tabela da seguinte forma:
Nome da propriedade | Exemplos de valores | Descrição |
---|---|---|
projection. |
|
Obrigatório. O tipo de projeção a ser usado para a coluna columnName . O valor deve ser enum (sem diferenciar maiúsculas e minúsculas) para sinalizar o uso do tipo de enumeração. Espaços em branco iniciais e finais são permitidos. |
projection. |
|
Obrigatório. Uma lista separada por vírgulas de valores de partição enumerados para a coluna columnName . Qualquer espaço em branco é considerado parte de um valor de enumeração. |
nota
Como prática recomendada, limite o uso de projeções de partições com base em enum
a no máximo algumas dúzias. Embora não haja um limite específico para projeções enum
, o tamanho total dos metadados da sua tabela não pode exceder o limite do AWS Glue de cerca de 1 MB quando compactado com gzip. Esse limite é compartilhado entre as partes principais da tabela, como nomes de colunas, local, formato de armazenamento etc. Se você usar mais de algumas dúzias de IDs exclusivos em sua projeção enum
, considere uma abordagem alternativa, como criar buckets de um número menor de valores exclusivos em um campo substituto. Ao compensar a cardinalidade, você pode controlar o número de valores exclusivos no campo enum
.
Tipo integer
Use o tipo integer para colunas de partição cujos valores possíveis são interpretáveis como inteiros dentro de um intervalo definido. As colunas integer projetadas estão atualmente limitadas ao intervalo de um Java assinado longo (-263 a 263-1, ambos incluídos).
Nome da propriedade | Exemplos de valores | Descrição |
---|---|---|
projection. |
|
Obrigatório. O tipo de projeção a ser usado para a coluna columnName . O valor deve ser integer (sem diferenciar maiúsculas e minúsculas) para sinalizar o uso do tipo de inteiro. Espaços em branco iniciais e finais são permitidos. |
projection. |
|
Obrigatório. Uma lista separada por vírgulas de dois elementos que fornece os valores de intervalo mínimo e máximo a serem retornados por consultas na coluna columnName . Observe que os valores devem ser separados por uma vírgula, não por um hífen. Esses valores são inclusivos, podem ser negativos e podem ter zeros à esquerda. Espaços em branco iniciais e finais são permitidos. |
projection. |
|
Opcional. Um inteiro positivo que especifica o intervalo entre valores de partição sucessivos para a coluna columnName . Por exemplo, um valor range de “1,3" com um valor interval de “1" produz os valores 1, 2 e 3. O mesmo valor range com um valor interval de “2" produz os valores 1 e 3, ignorando 2. Espaços em branco iniciais e finais são permitidos. O padrão é um. |
projection. |
|
Opcional. Um inteiro positivo que especifica o número de dígitos a serem incluídos na representação final do valor da partição para a coluna columnName . Por exemplo, um valor range de “1,3" que tem um valor digits de “1" produz os valores 1, 2 e 3. O mesmo valor range com um valor digits de “2" produz os valores 01, 02 e 03. Espaços em branco iniciais e finais são permitidos. O padrão é nenhum número estático de dígitos e nenhum zero à esquerda. |
Tipo date
Use o tipo date para colunas de partição cujos valores são interpretáveis como datas (com horas opcionais) dentro de um intervalo definido.
Importante
As colunas date projetadas são geradas no Horário Universal Coordenado (UTC) no tempo de execução da consulta.
Nome da propriedade | Exemplos de valores | Descrição |
---|---|---|
projection. |
|
Obrigatório. O tipo de projeção a ser usado para a coluna columnName . O valor deve ser date (sem diferenciar maiúsculas e minúsculas) para sinalizar o uso do tipo de data. Espaços em branco iniciais e finais são permitidos. |
projection. |
|
Obrigatório. Uma lista separada por vírgulas de dois elementos que fornece os valores Essa coluna também pode conter strings de data relativas, formatadas neste padrão de expressão regular:
Espaços em branco são permitidos. No entanto, em literais de data, eles são considerados parte das strings de data em si. |
projection. |
|
Obrigatório. Uma string de formato de data baseada no formato de data Java DateTimeFormatterJava.time.* compatível. |
projection. |
|
Um inteiro positivo que especifica o intervalo entre valores de partição sucessivos para a coluna Quando as datas fornecidas são com precisão de um dia ou um mês, o |
projection. |
|
Uma palavra de unidade de tempo que representa a forma serializada de uma ChronoUnit Quando as datas fornecidas são com precisão de um dia ou um mês, o |
exemplo - Particionamento por mês
O exemplo de configuração da tabela a seguir particiona os dados por mês, de 2015 até o presente.
'projection.month.type'='date',
'projection.month.format'='yyyy-MM',
'projection.month.interval'='1',
'projection.month.interval.unit'='MONTHS',
'projection.month.range'='2015-01,NOW',
...
Tipo injected
Use o tipo injetado para colunas de partição com valores possíveis que não podem ser gerados processualmente dentro de algum intervalo lógico, mas que são fornecidos na cláusula WHERE
de uma consulta como um único valor.
É importante ter em mente os seguintes pontos:
-
Consultas em colunas injetadas falharão se uma expressão de filtro não for fornecida para cada coluna injetada.
-
Consultas com vários valores para uma expressão de filtro em uma coluna injetada só terão êxito se os valores forem disjuntos.
-
Somente colunas do tipo
string
são permitidas. -
Quando você usa a cláusula
WHERE IN
com uma coluna de partição injetada, há um limite de 1.000 valores que podem ser especificados na listaIN
. Para consultar um conjunto de dados com mais de 1.000 partições para uma coluna injetada, divida a consulta em várias consultas menores, cada uma com até 1.000 valores na cláusulaWHERE IN
, e, em seguida, agregue os resultados.
Nome da propriedade | Valor | Descrição |
---|---|---|
projection. |
|
Obrigatório. O tipo de projeção a ser usado para a coluna columnName . Somente o tipo string é permitido. O valor especificado deve ser injected (sem diferenciação de maiúsculas e minúsculas). Espaços em branco iniciais e finais são permitidos. |
Para ter mais informações, consulte Quando usar o tipo de projeção injected.