Acessar elementos de matrizes
Para acessar elementos de matriz, use o operador []
, com 1 especificando o primeiro elemento, 2 especificando o segundo elemento e assim por diante, como neste exemplo:
WITH dataset AS ( SELECT ARRAY[CAST(MAP(ARRAY['a1', 'a2', 'a3'], ARRAY[1, 2, 3]) AS JSON)] || ARRAY[CAST(MAP(ARRAY['b1', 'b2', 'b3'], ARRAY[4, 5, 6]) AS JSON)] AS items ) SELECT items[1] AS item FROM dataset
Essa consulta retorna:
+------------------------+
| item |
+------------------------+
| {"a1":1,"a2":2,"a3":3} |
+------------------------+
Para acessar os elementos de uma matriz em uma determinada posição (conhecida como a posição de índice), use a função element_at()
e especifique o nome da matriz e a posição de índice:
-
Se o índice for maior que 0,
element_at()
retornará o elemento especificado por você, contando do início ao fim da matriz. Ele se comporta como o operador[]
. -
Se o índice for menor que 0,
element_at()
retornará o elemento, contando do fim ao início da matriz.
A consulta a seguir cria uma matriz words
e seleciona o primeiro elemento hello
dela como o first_word
, o segundo elemento amazon
(contagem a partir do final da matriz) como o middle_word
e o terceiro elemento athena
como o last_word
.
WITH dataset AS ( SELECT ARRAY ['hello', 'amazon', 'athena'] AS words ) SELECT element_at(words, 1) AS first_word, element_at(words, -2) AS middle_word, element_at(words, cardinality(words)) AS last_word FROM dataset
Essa consulta retorna:
+----------------------------------------+
| first_word | middle_word | last_word |
+----------------------------------------+
| hello | amazon | athena |
+----------------------------------------+