Buenas prácticas para uniones/actualizaciones repetidas en scripts JMPHola a todos,
I’m running a JSL script that performs Update/Join operations between calculation tables and filtered data tables. I noticed the following behavior:
-
Cuando el script se ejecuta varias veces, JMP cambia automáticamente el nombre de las columnas duplicadas para evitar conflictos de nombres, por ejemplo:
<SPAN><SPAN class="hljs-title class_">Número</SPAN> <SPAN class="hljs-title class_">de lote</SPAN> - <SPAN class="hljs-title class_">Número</SPAN> <SPAN class="hljs-title class_">de lote</SPAN> de la tabla <SPAN class="hljs-number">1,</SPAN> <SPAN class="hljs-title class_">Número</SPAN> <SPAN class="hljs-title class_">de lote</SPAN> <SPAN class="hljs-keyword">de</SPAN> la tabla <SPAN class="hljs-number">2</SPAN></SPAN>
-
Aunque cierre las tablas desde el panel, las variables (objetos de columna) siguen existiendo en la memoria, por lo que al volver a ejecutar el script se crean columnas duplicadas adicionales.
-
Mi solución temporal actual consiste en salir de JMP y reiniciarlo antes de ejecutar el script para evitar columnas duplicadas.
Preguntas para la comunidad:
-
Are there best practices for repeated Update or Join operations that avoid generating duplicate columns?
-
¿Existe alguna forma recomendada de "limpiar" las tablas/variables después de ejecutar un script para que las ejecuciones posteriores no creen duplicados?
-
¿Existen funciones o patrones JSL para renombrar o sobrescribir columnas de forma segura sin generar copias adicionales?
¡Cualquier sugerencia o estrategia será muy apreciada!
También probé este código para manejarlos dinámicamente, pero no funcionó.
RenameColumn = Function({dt, oldNamePattern, newName},
colList = dt << Get Column Names; // returns a column list object
n = N Items(colList); // number of columns
For(i = 1, i <= n, i++,
c = colList[i]; // get the column name as string
If(Contains(c, oldNamePattern),
Column(dt, c) << Set Name(newName);
Break(); // optional: stop after first match
);
);
);
Automatización y scriptingRe: Mejores prácticas para uniones/actualizaciones repetidas en scripts JMP¿Qué quieres hacer con esas columnas? Si ya existen, ¿no quieres actualizarlas ni volver a añadirlas? ¿Podrías proporcionar un script de ejemplo con datos para que la comunidad lo revise?
Re: Mejores prácticas para uniones/actualizaciones repetidas en scripts JMPTengo curiosidad por conocer los detalles del problema descrito.
En particular, las variables (objetos de columna) aún existen en la memoria, por lo que volver a ejecutar el script crea columnas duplicadas adicionales.
Además, tenga en cuenta lo siguiente:
En el caso de Tablas/Actualización, este problema se debe a una nueva funcionalidad de JMP19:
Permitir que la plataforma de actualización cree nuevas columnas si ya existen en la tabla que se va a actualizar.
La funcionalidad adicional es genial, ¡pero la gente no tuvo en cuenta el efecto colateral!
efecto colateral:
Con JMP19, ya no es posible utilizar la función en el modo:
"Por favor, agregue las columnas que aún no están en la tabla de destino".
Más detalles: ¡Tablas/Actualización modificadas!
Los scripts se comportan de manera diferente y el usuario obtendrá tablas como esta:
(Las columnas adicionales son inútiles; solo ensucian la tabla).

Espero que los desarrolladores comprendan el problema y lo solucionen en la próxima versión.
Una posible solución: 2 modos
tablas automáticas/actualización
- Utilice el nuevo método y añada una columna (con un sufijo) SI (!!!!) el usuario selecciona la columna

- No utilice este truco en el modo "Todos":

-> permitirá de nuevo
"Agregar columnas que aún no están en la tabla de destino"
(como en versiones anteriores de JMP).
... alternativa: una configuración adicional para activar/desactivar el nuevo modo.
Para garantizar la compatibilidad con versiones anteriores: deshabilite la configuración de forma predeterminada.
Re: Mejores prácticas para uniones/actualizaciones repetidas en scripts JMPParece que necesitas usar la función "Columnas de salida" en la operación JOIN para evitar incluir datos duplicados. A menos que incluyas columnas con el mismo nombre, usar "Columnas de salida" no generará el sufijo "... de la tabla 2" en los nombres de las columnas.
En la opción Actualizar, debes seleccionar las columnas que deseas agregar, para que no se incluyan nombres de columnas duplicados.
Re: Mejores prácticas para uniones/actualizaciones repetidas en scripts JMPCódigo:
// Filtering Table A using RequiredBatches
FilteredA = TableA << Join(
With(RequiredBatches),
By Matching Columns(:Batch Number = :Batch Number),
Drop Multiples(0,0),
Include Matches(0,0),
Output Table("FilteredA"),
Invisible(0)
);
// Filtering Table B using RequiredBatches
FilteredB = TableB << Join(
With(RequiredBatches),
By Matching Columns(:Batch Number = :Batch Number),
Drop Multiples(0,0),
Include Nonmatches(0,0),
Output Table("FilteredB"),
Prevent Name Collision(1),
Invisible(0)
);
// Rename joined key columns
Column(FilteredA, "Batch Number of TableA") << Set Name("Batch Number");
Column(FilteredB, "Batch Number of TableB") << Set Name("Batch Number");
Si ejecuto este script una segunda vez sin reiniciar JMP , ocurre lo siguiente:
- JMP añade automáticamente sufijos a los nombres de las tablas:
FilteredA → FilteredA 2
FilteredB → FilteredB 2
También he intentado usar `for all tables` al principio del script, esto parece funcionar en Mac ya que no tengo ningún problema, pero en Windows creo que no funciona o realmente estoy confundido sobre su comportamiento.
Try(TableA << Close(No Save));
Incluso después de cerrar la ventana principal de JMP usando "Cerrar todo excepto esto" en mi script [donde se muestran las tablas], las tablas se cierran, pero probablemente las variables siguen en memoria. Así que no estoy seguro de cómo solucionar esto.
¿Esto ayudaría o existe alguna otra forma que no implique reutilizar el código?

Re: Mejores prácticas para uniones/actualizaciones repetidas en scripts JMPDónde es
Prevent Name Collision(1)
¿De dónde viene?
Realice la unión de forma interactiva en la plataforma JMP Join, asegúrese de que se vea como desea en la vista previa, ejecútela y copie el script del registro mejorado.
Re: Mejores prácticas para uniones/actualizaciones repetidas en scripts JMP¿Has intentado activar " Actualizar la tabla principal con datos de la segunda tabla "?

[sin columnas nuevas - actualizar cualquier fila coincidente]
o " ¿Columna con el mismo nombre ?"

[Similar al primero, pero añade nuevas columnas.]
Re: Mejores prácticas para uniones/actualizaciones repetidas en scripts JMPyes, but this would be impractical for large list of columns</CODE></P>
</LINGO-BODY>
<LINGO-SUB id="lingo-sub-914649" slang="en-US" mode="CREATE" translate="no">Re: Mejores prácticas para uniones/actualizaciones repetidas en scripts JMP</LINGO-SUB>
<LINGO-BODY id="lingo-body-914649" slang="en-US" mode="CREATE">
<BLOCKQUOTE>
<HR />
<A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/63230" target="_blank">@zetaVagabond1</A> wrote:
<BR />
<P>yes, but this would be impractical for large list of columns<CODE class=" language-jsl">
Esto es una respuesta a...?