Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filasEsta opción o función simplificaría la creación de una transformación de columna personalizada para resolver el problema descrito por @hogi en una de las respuestas posteriores a contar único
Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filasLa investigación de este problema está en curso y lo actualizaremos si llegamos a una solución.
Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filasOtro ejemplo: escribir una función personalizada más fluida como un filtro Savitzky-Golay que ignora las filas excluidas.Esto se puede calcular de manera eficiente para toda la columna a la vez cuando se evalúa la primera fila. Me gustaría almacenar en caché los valores de toda la columna en la primera evaluación y luego simplemente devolver el resultado precalculado en cada fila en lugar de volver a calcularlo. cada vez.
Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filasSí, también me di cuenta de eso, pero seguro si lo estuvieras usando de esa manera. Parece que se está tomando demasiado en serio la parte "constante" para lo que me gustaría. Tendremos que investigar, pero probablemente necesite nueva funcionalidad para el reconocimiento de dependencia/reejecución.
Para casos como el suyo, normalmente hago que la fórmula dependa de una variable de la tabla y actualizo la variable de la tabla cada vez que recorre el ciclo para tener un nuevo valor aleatorio.
Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filasHola @XanGregg ,
Podría faltarme algo, pero parece que no logro que As Constant se vuelva a evaluar cuando se vuelven a ejecutar las fórmulas de la tabla.Parece almacenar en caché (probablemente correctamente) su valor siempre que la tabla esté abierta. Aquí hay ejemplos más completos que resuelven este problema usando una variable global.
Ver más... Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filas¿Has visto la función As Constant(x)? Eso debería manejar la parte única de la solicitud.
Local(
{startofweek = As Constant(
Random Uniform(
Col Min( :Timestamp ),
Col Max( :Timestamp ) - In Days( 7 )
)
)},
If( :timestamp > startofweek & :timestamp < startofweek + In Days( 7 ),
1,
0
)
)Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filasGracias por el ejemplo y la información adicional. @ih . Se cambió el estado a investigando.
Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o valores en caché entre filas - Estado cambiado a: InvestigandoRe: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filasAquí hay un par de posibles casos de uso, sé que hay otros que estoy olvidando en este momento.Muchos de estos se pueden resolver fácilmente para tablas pequeñas o mediante el uso de múltiples columnas o variables de tabla, pero proporcionar una variable de contexto de columna los haría más fáciles.
- Utilice un valor aleatorio en la fórmula de la columna para poder intercambiarlo en una simulación
// this value should be cached and re-used for all rows,
// but it should change each time the column is recalculated
startofweek = Random Uniform(
Col Min( :Timestamp ),
Col Max( :Timestamp ) - In Days( 7 )
);
If( :Timestamp > startofweek & :Timestamp < startofweek + In Days( 7 ),
1,
0
);
- El número de filas desde el inicio de la última muestra fuera de especificación.
- El tiempo hasta que finalice esta campaña
- Promedio móvil de las últimas 10 muestras para este código de producto
Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filasCreo que esta publicación podría demostrar el problema. Creación de una función estadística personalizada (fórmula) que tiene byVar
Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o valores en caché entre filas - Estado cambiado a: Necesita información@ih ¿Podrías compartir un ejemplo de una tabla de datos que ilustre el problema que describe?
Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filas@hogi - Estás sacando de contexto mi respuesta en el caso de soporte técnico. me estaba refiriendo a Transformaciones personalizadas ya que eso es lo que preguntaste.
No dije nada sobre funciones personalizadas en general.
Dentro del propio editor de fórmulas, normalmente hay formas de pasar una referencia de columna a una función personalizada, por ejemplo envolviéndola en Expr(). O formas para que JMP reconozca que debe usar una columna, por ejemplo, en el envío de mensajes.
Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filasAy, la respuesta es aún más triste: *)

*) TS-00063463
Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filas
@ih escribió:
La fórmula también necesitaría acceso a toda la columna en lugar de solo a la fila actual, por lo que la referencia de la columna debe pasarse sin evaluar.
@Jeff_Perkinson , en cuanto a TS-00063463, creo que la triste respuesta es: todavía no.
Entonces, además de la velocidad, muchas tareas son imposibles de implementar a través de funciones personalizadas en este momento.
estado: investigando -> suena prometedor 
Espero que haya una manera de ajustar las funciones personalizadas para aceptar referencias de columnas como parámetro en una de las próximas versiones...
https://community.jmp.com/t5/Discussions/Column-reference-in-custom-function/mp/265085/highlight/true#M51645
Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filasPara ser específico, necesito esta funcionalidad para funciones personalizadas que se agregan a través de:
agregar funciones personalizadas (nueva función personalizada ())
Las transformaciones personalizadas son sólo una de las aplicaciones de este maravilloso marco.
editar:
p.ej
Names Default To Here( 1 );
Add Custom Functions(
New Custom Function(
"COL",
"Median",
Function( {value, byGroup},
Col Median( value, byGroup )
),
<
<FORMULA category=""></FORMULA>
<P><A href="https://community.jmp.com/t5/Discussions/Fast-Way-to-calculate-quot-nested-quot-Col-aggregations-like-MAD/m-p/887467/highlight/true#M104961" target="_blank">https://community.jmp.com/t5/Discussions/Fast-Way-to-calculate-"nested-quot-Col-aggregations-like-MAD/mp/887467/highlight/true#M104961</A> </P>
Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filasAlgunas fórmulas de columna integradas como Col Mean() son muy rápidas porque solo calculan valores costosos una vez y los devuelven o modifican para cada fila.Con fórmulas personalizadas esto es más difícil de lograr porque cada fila se evalúa por separado.A veces, usar una columna separada para almacenar valores intermedios puede acelerar las cosas (por ejemplo, almacenar los índices de filas que cumplen con ciertos criterios, en lugar de volver a calcularlos en cada fila), pero eso se vuelve complicado y difícil de seguir. Si existiera algún concepto de contexto de columna tal que la evaluación de una fila pudiera acceder a los valores intermedios calculados en la fila anterior, entonces un script podría calcular los resultados para todas las filas a la vez y luego devolverlos rápidamente y pasar los resultados intermedios a la siguiente. fila. La fórmula también necesitaría acceso a toda la columna en lugar de solo a la fila actual, por lo que la referencia de la columna debe pasarse sin evaluar.
Automatización y secuencias de comandosRe: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filasLa mitad de una solución, o digamos 1/4:

es una característica bastante útil que aprendí hace algún tiempo de una solución proporcionada por @txnelson :
https://community.jmp.com/t5/JMP-Wish-List/Option-or-function-to-evaluate-a-custom-column-formula-at-once/idc-p/695311/highlight/true# M5011
Si sabes que la parte única siempre dar el mismo resultado, podría considerar usar Como constante una función personalizada.
(a continuación el código adaptado de https://community.jmp.com/t5/Discussions/Differentiate-between-entire-column-and-current-row/mp/677710/highlight/true#M86405 por @jthi )
Lo interesante: sólo se evaluará una vez y nunca más (!)
En general, esta será una versión demasiado extrema de "una vez" 
Cualquier posibilidad de cambiar el comportamiento de Como constante en una fórmula personalizada?
Por ejemplo, ejecútelo cada vez fila()==1?
Names Default To Here(1);
row_count = 10;
dt = New Table("test",
Add Rows(row_count),
New Column("Die X", set each value(row())),
New Column("Die Y", set each value(Random Integer(1, row_count * 2)))
);
dt << New Column("Formula As Constant", Numeric, Nominal, Formula(
As Constant(print("direct","");x_m = :Die X << get values);
Contains(x_m, :Die Y) > 0;
));
Add Custom Functions(
New Custom Function(
"test",
"myFunc",
Function( {},
As Constant(print("custom","");x_m2 = :Die X << get values);
Contains(x_m2, :Die Y) > 0;
)));
dt << New Column("Formula via Custom Formula", Numeric, Nominal, Formula(test:myFunc()));
Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filas - Estado cambiado a: ReconocidoRe: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filasCon JMP19, habrá algunas mejoras:
Por ejemplo, será posible calcular órdenes de magnitud de Col MAD() más rápido, incluso sin columnas ficticias intermedias:
Una forma rápida de calcular agregaciones Col "anidadas" - como MAD
Re: Opción o función para evaluar una fórmula de columna personalizada a la vez o almacenar en caché valores entre filasEsto es válido para el tipo de funciones personalizadas que se crean manualmente en el Editor de fórmulas, y con un truco para las funciones personalizadas que se crean mediante Función().
No contiene "Funciones personalizadas" que se crean mediante la adición de funciones personalizadas (nueva función personalizada ().