Gera um array com os elementos especificados por uma expressão.
Formato do comando
sequence(start, stop, [step])
Descrição dos parâmetros
-
start: expressão que indica o início da sequência de elementos. A sequência inclui o valor de start.
Os tipos inteiros aceitos para start e stop são: Tinyint, SmallInt, Int e BigInt. Os tipos correspondentes para step são, respectivamente: Tinyint, SmallInt, Int e BigInt.
Os tipos de data e hora aceitos para start e stop incluem: Date, DateTime e Timestamp. O tipo correspondente para step deve ser IntervalDayTime ou IntervalYearMonth.
stop: expressão que define o fim da sequência de elementos. A sequência inclui o valor de stop.
-
step: parâmetro opcional que define o incremento da sequência.
Por padrão, quando start é menor ou igual a stop, step assume o valor 1; caso contrário, assume -1.
Em sequências temporais, o valor padrão é 1 dia ou -1 dia. Se você fornecer um valor para step, ele deverá ser negativo quando start for maior que stop e positivo no caso inverso. Caso essa condição não seja atendida, o sistema lançará uma exceção.
Valor de retorno
Retorna um array composto pelos elementos gerados conforme as expressões especificadas.
O sistema lança uma exceção se start for maior que stop com um step positivo, ou vice-versa.
O limite padrão de elementos gerados pela função sequence é 10000. Para alterar esse limite, ajuste o valor da flag
odps.sql.max.sequence.length.
Exemplos
-
SELECT sequence(1, 5);Resultado:
[1, 2, 3, 4, 5] -
SELECT sequence(5, 1);Resultado:
[5, 4, 3, 2, 1] -
SELECT sequence(to_date('2018-01-01'), to_date('2018-03-01'), interval 1 month);Resultado:
[2018-01-01, 2018-02-01, 2018-03-01]
Funções relacionadas
A função SEQUENCE pertence à categoria de funções de tipos complexos. Para obter mais informações sobre o processamento de dados de tipos complexos (como ARRAY, MAP, STRUCT e JSON), consulte Complex type functions.