¿Cómo consultar una tabla de datos grande en función de un nivel de columna y devolver columnas cuyo nombre contenga ese nivel?Queremos crear una aplicación de monitoreo de calidad para implementar en docenas de instalaciones de producción (y eventualmente publicarla en JMP Live).
Para cada instalación, contamos con una tabla de datos muy alta y ancha (dtBigBoy, con menos de 1000 columnas y entre 10 000 y 100 000 filas) que se actualiza desde un historial de datos de proceso. Este historial no se puede consultar directamente (obtenemos todos los datos entre las marcas de tiempo de inicio y fin y concatenamos los datos actualizados con la tabla existente). Una de las columnas, "Grade", contiene el nombre del producto que se está creando en ese momento (para esa fila). La nomenclatura de las columnas es la siguiente: Grade.Property.#. Hay al menos una columna "Grade.Property.#" por Grade. Un caso de usuario es que el usuario está interesado en un Grade específico (por ejemplo, ABCD001) y desea ver todos los datos de propiedades.
- ¿Cuál es la manera más eficiente de hacerlo? ¿Usar un filtro de datos local en dtBigBoy y continuar con los gráficos de control, etc.?
¿O seleccionar solo filas donde :Grade == Chosen.Grade y los nombres de columna contienen Chosen.Grade y crear un subconjunto?
- ¿Cómo se crea un cuadro de diálogo de selección que lea la columna "Grado" y presente los niveles en "Grado" como opciones? La elección del usuario se guarda en la variable "Elegido.Grado".
- ¿Cómo seleccionar columnas cuyo nombre contiene Chosen.Grade?
- ¿Es más eficiente hacer 1-3 O usar la consulta de tabla JMP para obtener las filas y columnas que necesitamos de dtBigBoy?
¡Gracias de antemano desde la húmeda y húmeda Kuala Lumpur, Malasia!
Automatización y scriptingAcceso a datosRe: ¿Cómo consultar una tabla de datos grande según un nivel de columna y devolver columnas cuyo nombre contenga ese nivel?No estoy seguro, pero creo que el filtro de datos local será similar a un subconjunto enlazado; la tabla filtrada depende de que la tabla permanezca abierta. 1e3 filas * 1e5 columnas * 8 bytes/número ocupa menos de 1 GB y debería caber en más de 16 GB de memoria. Los subconjuntos enlazados no deberían aumentar significativamente la memoria requerida.
Puedes probar la plataforma de resumen de forma interactiva para obtener una tabla de resumen de la columna de calificaciones. Puedes obtener el script desde ahí.
Puedes crear un script para la plataforma del subconjunto de forma similar. Escribe un bucle para elegir las columnas del subconjunto.
Creo que es improbable que alguien sepa la respuesta a la última pregunta sin probar ambas. Creo que cualquiera de las dos sería suficiente.
Re: ¿Cómo consultar una tabla de datos grande según un nivel de columna y devolver columnas cuyo nombre contenga ese nivel?Dependiendo del tipo de gráficos que tenga, no debería ser una gran cantidad de datos. ¿Está dibujando las 1000 columnas a la vez? ¿Podría el usuario procesar tantos datos a la vez? Yo empezaría con el filtro de datos local (use condicional si es lo que desea) y luego, si es necesario, usaría scripts (probablemente no funcione en JMP Live). Cambiar las columnas es probablemente la parte más difícil si no puede confiar únicamente en los selectores de columnas. Proporcionar algunos ejemplos sencillos con una explicación adicional podría ser útil.
Cuando manejaba más de 4 millones de filas, recurría a scripts con el filtro de datos local. Sin embargo, no se debía a la lentitud de mostrar una sola fila, sino a la torpeza de actualización del filtro: si se cambia algo, se actualiza inmediatamente y no puedo forzarlo a actualizarse solo con cambios específicos. Así que usé la tabla de resumen con el filtro de datos local y la función de cambio, y luego actualicé los datos mostrados en función de eso. También se podía usar un filtro totalmente personalizado usando cuadros de lista y subconjuntos vinculados.
Re: ¿Cómo consultar una tabla de datos grande según un nivel de columna y devolver columnas cuyo nombre contenga ese nivel?Craige: ¡Gracias por la información sobre la memoria y las sugerencias! Las pondremos en práctica.
Re: ¿Cómo consultar una tabla de datos grande según un nivel de columna y devolver columnas cuyo nombre contenga ese nivel?Jarmo:
Gracias por las sugerencias.
No, no estamos trazando todas las columnas a la vez. Queremos crear un gráfico IMR por Grado/Propiedad. Dado que cada Grado y Propiedad tiene especificaciones diferentes, debemos dividir el dt por Grado/Propiedad. Esto genera muchas columnas dispersas. Vea el fragmento a continuación para una sola propiedad con 12 Grados. El Generador de Gráficos de Control no acepta todas las filas en blanco.
Snippet of datatableSnippet of datatableFragmento de tabla de datos
Re: ¿Cómo consultar una tabla de datos grande según un nivel de columna y devolver columnas cuyo nombre contenga ese nivel?La situación puede haber cambiado desde 2021, pero esta publicación analiza algunas opciones con respecto a los valores faltantes en el generador de gráficos de control ¿Cómo dibujar gráficos de control que ignoren los datos faltantes? (y, por supuesto, a través de scripts hay muchas opciones diferentes).
Editar: Métodos de calidad y proceso > Generador de gráficos de control > Muestras excluidas y ocultas en el Generador de gráficos de control