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.

La expresión JSONPath funciona con el simulador de flujo de datos pero no con las funciones de paso.

Estoy intentando usar el filtro InputPath en AWS Step Functions para seleccionar una parte del JSON de entrada del estado para usar con una expresión JSONPath.

Datos:

[
{
“ticker”: “DE30_EUR”,
“granularity”: “M”
},
{
“ticker”: “DE30_EUR”,
“granularity”: “W”
},
{
“ticker”: “DE30_EUR”,
“granularity”: “D”
},
{
“ticker”: “DE30_EUR”,
“granularity”: “H1”
}
]

Expresión JSONPath actual:

$[?(@.granularity==H1),?(@.granularity==D),?(@.granularity==W)]

Esto funciona cuando se utiliza el simulador de flujo de datos de AWS Step Functions con los datos anteriores y sólo devuelve los elementos del array con una granularidad de “H1”, “D” o “W”.

Problema:

Sin embargo, al utilizar esto en funciones de paso como InputPath o OutputPath devuelve un array vacío, lo cual no es lo mismo que el simulador de flujo de datos.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para usar el filtro InputPath en AWS Step Functions y seleccionar una parte de la entrada de estado JSON para usar con una expresión JSONPath, debes asegurarte de que la expresión JSONPath esté encerrada en paréntesis y que el filtro InputPath esté precedido por un signo de dólar ($).

    La expresión JSONPath correcta para los datos actuales es:

    $[?(@.granularity=='H1' || @.granularity=='D' || @.granularity=='W')]
    

    El problema con la expresión anterior es que utiliza el operador de igualdad (==) en lugar del operador de igualdad de cadena (‘==’) y no utiliza el operador OR lógico (||) para seleccionar múltiples condiciones.

    Por lo tanto, el filtro InputPath correcto para usar con esta expresión sería:

    $.[(InputPathPrefix)][?(@.granularity=='H1' || @.granularity=='D' || @.granularity=='W')]
    

    donde InputPathPrefix es el prefijo de la entrada de estado que deseas filtrar.

    Al usar esta expresión y filtro, deberías ser capaz de seleccionar la parte deseada de la entrada de estado JSON en AWS Step Functions.

Comments are closed.