es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo consultar un valor usando get_json_object()

Necesito extraer el valor del atributo donde el espacio de nombres es GLOBALID en el siguiente formato JSON, por ejemplo, en este ejemplo necesito extraer “123456”:

[{
        "namespace": "GLOBALID",
        "key": "ID",
        "value": "123456"
    },
    {
        "namespace": "RPS",
        "key": "ID",
        "value": "12xt12"
    }
]

Sin embargo, cuando uso select get_json_object(json_column, '$.GLOBALID.value'), no está extrayendo el valor (editado).

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para extraer el valor del atributo donde el espacio de nombres es GLOBALID en el formato JSON proporcionado, se puede utilizar la función json_tuple en Pyspark de la siguiente manera:

    from pyspark.sql.functions import json_tuple
    
    df.select(json_tuple("json_column", "namespace", "value")
              .alias("namespace", "value"))
      .filter("namespace == 'GLOBALID'")
      .select("value")
      .show()
    

    Aquí, primero utilizamos la función json_tuple para extraer los campos de namespace y value de json_column. Luego, filtramos solo las filas donde el namespace es GLOBALID y finalmente seleccionamos solo la columna value.

    Esto debería dar como resultado la salida deseada, que es "123456".

Comments are closed.