Esta página se tradujo del inglés con ayuda de IA. Si hay diferencias entre ambas, la versión en inglés es la referencia.
JSON_EACH
Función con valores de tabla que devuelve una tabla formada por una fila por cada elemento del array o miembro del objeto.
Consulte también:
[SELECT] [DESCRIBE] [JSON_EXTRACT] [JSON_ARRAY_LENGTH] [ Tipos de datos ]
Use la función DESCRIBE para localizar los tipos de datos array que se pueden usar con la función json_each.
La función json_each se implementa como la función json_array_elements_text si usa stackql con un backend SQL postgres
Sintaxis
SELECT <alias>.<projectedField>, ... , json_each.value
FROM <multipartIdentifier> <alias>, JSON_EACH(json_array_or_object, json_path);
Argumentos
json_array_or_object
Un array u objeto JSON.
json_path
La ruta JSON a un array u objeto contenido en json_array_or_object. Consulte jsonpath.com.
Si json_path no existe en json_array_or_object, la función devuelve
NULL.
La función
json_type()genera un error si alguno de sus argumentos no está bien formado.
Valor(es) devuelto(s)
Una tabla formada por una fila por cada elemento del array o miembro del objeto.
Ejemplos
Desanidar un array de cadenas en una tabla con un join a los campos asociados
como contexto:
describe google.cloudresourcemanager.projects_iam_policies;
devuelve...
|-----------|--------|
| name | type |
|-----------|--------|
| condition | object |
|-----------|--------|
| members | array |
|-----------|--------|
| role | string |
|-----------|--------|
La siguiente consulta de stackql usa la función json_each para desanidar el array members en una tabla con un join a los campos role y, opcionalmente, condition.
select
iam.role,
SPLIT_PART(json_each.value, ':', 2) as member
from google.cloudresourcemanager.projects_iam_policies iam, json_each(members)
where projectsId = 'stackql';
devolvería...
|--------------------------------------|-------------------------------------------------------|
| role | member |
|--------------------------------------|-------------------------------------------------------|
| roles/cloudbuild.builds.builder | 1234567890@cloudbuild.gserviceaccount.com |
|--------------------------------------|---------------------------------------------- --------|
| roles/editor | 1234567890-compute@developer.gserviceaccount.com |
|--------------------------------------|-------------------------------------------------------|
| roles/editor | 1234567890@cloudservices.gserviceaccount.com |
|--------------------------------------|-------------------------------------------------------|
| roles/editor | stackql@appspot.gserviceaccount.com |
|--------------------------------------|-------------------------------------------------------|
| ... | ... |
|--------------------------------------|-------------------------------------------------------|
Para obtener más información, consulte https://www.sqlite.org/json1.html#jeach