Agregar una referencia de tabla explícita en el código JSL genera resultados inesperadosTengo un script JSL corto que quiero añadir a un flujo de trabajo automatizado más amplio. El objetivo es iterar sobre los valores de una columna (layer_type) y, si encuentra un valor distinto de SSOD, el código debería devolver 1. Si todos los valores de las columnas son 'SSOD', debería devolver 0. Esto se utiliza en una división if/else en un flujo de trabajo para generar un error. En general, si tienen alguna recomendación sobre una mejor manera de codificar esto, estoy atento.
Dado el código existente, lo saqué del flujo de trabajo para depurarlo. El código funciona correctamente al ejecutarlo en una ventana JSL con la tabla de datos correcta seleccionada. Sin embargo, como lo estoy insertando en un flujo de trabajo para usuarios, quiero especificar el nombre de la tabla de datos, ya que me ha resultado más robusto. Sin embargo, al añadir la primera línea de código, deja de funcionar correctamente: sigue ejecutándose, pero siempre devuelve "1", independientemente de los valores de las columnas.
El siguiente JSL produce los resultados esperados al ejecutarse en una ventana de script que hace referencia a la tabla (adjunta). Tenga en cuenta que la tabla adjunta devolverá '0'. Si modifica un valor en una sola fila de la columna 'layer_type' a cualquier otro valor, debería devolver 1.

Summarize( meas = by( :layer_type ) );
result = 0;
For( i = 1, i <= N Items( meas ), i++,
If( meas[i] != "SSOD",
result = 1;
Break();
)
);
result;
However, when I modify only the beginning of the JSL to explicitly reference the table it no longer works - when I change a single value in the 'layer_type' column to anything other than SSOD it continues to return '0'. In fact I've tested this both ways by commenting out the Data Table( "layer_type_forum_help" ) << code and it seems it always returns what was previously returned when the block started with the 'Summarize' command
Data Table( "layer_type_forum_help" ) << Summarize( meas = by( :layer_type ) );
result = 0;
For( i = 1, i <= N Items( meas ), i++,
If( meas[i] != "SSOD",
result = 1;
Break();
)
);
result;
¡Gracias de antemano por tu ayuda!
Automatización y scriptingRe: Agregar una referencia de tabla explícita en el código JSL genera resultados inesperadosLa sintaxis de la función Summary() es incorrecta. Consulte el Índice de scripts para ver la definición, la sintaxis y ejemplos.
Summarize(Data Table( "layer_type_forum_help" ), meas = by( :layer_type ) );
result = 0;
For( i = 1, i <= N Items( meas ), i++,
If( meas[i] != "SSOD",
result = 1;
Break();
)
);
result;
Re: Agregar una referencia de tabla explícita en el código JSL genera resultados inesperadosCreo que puedes simplemente usar la llamada de función,
N Items( meas )
Para determinar la respuesta, busca un único valor en esta columna. Por lo tanto, debería generar un único grupo al llamar a la función Summarize(). Si el número de elementos es mayor que uno, tiene al menos una fila con una cadena diferente.
Data Table( "layer_type_forum_help" ) << Summarize( meas = By( :layer_type ) );
result = N Items( meas ) > 1;
Re: Agregar una referencia de tabla explícita en el código JSL genera resultados inesperadosGracias @Mark_Bailey Lo consideré, pero para la verificación de errores es posible que haya un valor que no sea el deseado (SSOD) y quiero diferenciarlo.
Re: Agregar una referencia de tabla explícita en el código JSL genera resultados inesperados*** Actualización: Disculpe mi respuesta a continuación. Podría ser útil, pero no responde a su solicitud. ¿Qué desea? ¿Quiere saber si algún valor no coincide y se devuelve tras la primera aparición de un valor no conforme?
Dijiste: " Tengo un script JSL corto que quiero agregar a un flujo de trabajo automatizado más amplio. El objetivo es iterar sobre los valores de una columna (layer_type) y, si encuentra algún valor distinto de SSOD, el código debería devolver 1. Si todos los valores de las columnas son 'SSOD', debería devolver 0 ".
Summarize( meas = By( :layer_type ) );
result = N Items( meas ) > 1;
Este caso solo muestra el valor "SSOD", por lo que debería devolver 0:

El resultado es 0:

Otro caso muestra valores distintos de "SSOD: por lo que debería devolver 1

El resultado es 1:

Re: Agregar una referencia de tabla explícita en el código JSL genera resultados inesperados@Mark_Bailey , no te preocupes, está tangencialmente relacionado y pregunté sobre ello en la publicación, así que agradezco tu tiempo.
Puedo explicar mejor dónde esa solución no devuelve el resultado deseado. Los ejemplos de tu publicación más reciente son precisos y devuelven el resultado deseado. El tercer escenario es cuando la columna contiene todos los valores que no son SSOD. Por ejemplo, si todo el tipo de capa se rellena con 'NAIL'. En ese caso, creo que tu código devolvería 0. El resultado deseado seguiría siendo 1 (ya que no todos los valores son SSOD).