Acceso a los elementos de la matriz
Para obtener acceso a los elementos de una matriz, utilice el operador []
y especifique 1 para el primer elemento, 2 para el segundo elemento y así sucesivamente, tal y como se muestra en el siguiente ejemplo:
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
Esta consulta devuelve:
+------------------------+
| item |
+------------------------+
| {"a1":1,"a2":2,"a3":3} |
+------------------------+
Para obtener acceso a los elementos de una matriz en una determinada posición (conocida como posición de índice), utilice la función element_at()
y especifique el nombre de la matriz y la posición de índice:
-
Si el índice es mayor que 0,
element_at()
devuelve el elemento que usted especifique, contando desde el principio hasta el final de la matriz. Actúa como el operador[]
. -
Si el índice es inferior a 0,
element_at()
devuelve el elemento contando desde el final hasta el principio de la matriz.
La siguiente consulta crea una matriz words
y selecciona el primer elemento hello
de esta como first_word
, el segundo elemento amazon
(contando a partir del final de la matriz) como middle_word
y el tercer elemento athena
, como la 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
Esta consulta devuelve:
+----------------------------------------+
| first_word | middle_word | last_word |
+----------------------------------------+
| hello | amazon | athena |
+----------------------------------------+