Extraer valor basado en una clave específica de una matriz de JSONs en Amazon Redshift.
Tengo una tabla en Redshift llamada T1, con el nombre de columna col1 y el tipo de dato varchar. Sin embargo, los datos almacenados en col1 son datos json.
Valor de col1:
[{"id":1,"value":null},{"id":2,"value":null},{"id":3,"value":"https://www.google.co.in"},{"id":4,"value":"India"}]
Ahora quiero extraer datos basados en la clave, es decir, si proporciono el valor de id en la cláusula WHERE, debería recuperar el valor correspondiente a ese id.
He intentado la siguiente consulta:
select json_extract_array_element_text(col1, 0) as json_value,
json_extract_path_text(json_value, 'value') as value
from T1
No puedo encontrar una manera de filtrar según el id en la consulta anterior.
Agradecería si alguien pudiera ayudarme con eso.
davy.ai
Para filtrar basado en la identificación en el escenario dado, puedes utilizar la función json_extract_path_text en combinación con la cláusula WHERE. La consulta modificada se vería así:
En esta consulta, estamos utilizando la función json_extract_path_text para extraer la identificación de los datos JSON y filtrar los resultados basados en el valor de identificación proporcionado en la cláusula WHERE. Estamos utilizando una tabla temporal para asegurarnos de extraer todos los elementos del arreglo JSON.
Reemplaza ‘‘ con el valor real de la identificación para la cual deseas obtener los datos.