Pregunta sobre las referencias de la tabla (de Russel)
Esta pregunta surgió en el hilo sobre " Re: 2022Q1 Sesión práctica - Principiantes" - y me gustaría que otros también se unieran a la discusión, así que lo puse en el foro de discusión.
Pregunta sobre las referencias de la tabla que mostraste hoy: si procesas varias tablas secuencialmente como parte de un script, ¿iteras las referencias de la tabla hasta el infinito (dt1, dt2, dt3,...) o hay una solución más inteligente?
Antecedentes: con frecuencia manipulo tablas (unir, concatenar, dividir, etc.) y, a veces, tengo bastantes tablas que abro, proceso y cierro secuencialmente antes de pasar a la siguiente tabla en el mismo script hasta que tengo la tabla final que quiero. .
Re: Pregunta sobre las referencias de la tabla (de Russel)Hola @Ressel ,
realmente depende de lo que quieras hacer finalmente. Si tiene, digamos, 100 tablas de datos que desea procesar de la misma manera y cerrarlas después, puede que un bucle (para abrir, procesar, cerrar cada tabla) funcione mejor que abrir las 100 tablas y luego procesarlas una tras otra. el otro. Una razón es que no crea tantos identificadores de ventanas que podrían provocar otro problema en el lado del sistema.
En general, sería un poco más descriptivo en el nombre de la variable de la tabla, por lo que entiendo mejor qué es, si tiene sentido. "dt" es principalmente para el truco sucio;)
También puede obtener todas las tablas de datos abiertas y luego recorrerlas usando
Get Data Table List();
Esto probablemente sería un movimiento inteligente.
¿Cómo se sienten los demás acerca de esto?
Re: Pregunta sobre las referencias de la tabla (de Russel)estoy de acuerdo con @martindemel , depende de dónde existan los archivos, el orden en que los procese y qué desee hacer con ellos. JSL tiene muchas funciones integradas fuera del registro mejorado que pueden ayudar. Por ejemplo, Archivos en el directorio le da una lista de todos los archivos en un directorio. Seleccionar archivo le permite seleccionar de forma interactiva uno o más archivos de un directorio. Si bien el Registro mejorado hace un buen trabajo al capturar operaciones interactivas, aún desea reemplazar las referencias de nombres de tablas codificadas con referencias variables a las tablas. @martindemel mostró algo de esto usando dt = Abierto(... En la mayoría de los casos, una operación JSL que abre un archivo devolverá un identificador a la tabla de datos que se crea. Los identificadores de tablas de datos también se crean cuando envía un mensaje a una tabla con una operación desde el Mesas menú. Por ejemplo, si está creando un subconjunto, la sintaxis
subsetDT = dt << Subset(...
le permitirá capturar la referencia a la tabla recién creada. Las otras operaciones de la tabla funcionan de manera similar.
Re: Pregunta sobre las referencias de la tabla (de Russel)Gracias por las respuestas. Un poco más sobre el trasfondo de lo que estoy trabajando.
Cargo las tablas desde nuestra implementación de Google Cloud Platform a través de ODBC. Estas tablas se actualizan regularmente con datos de fabricación recientes. Por ejemplo, la primera tabla que cargo (hago referencia a ella como dt ) tiene ID de lote, nombres de parámetros para diferentes parámetros de control de calidad, resultados de medición y unidades de medición en columnas separadas. Lo divido por nombre de parámetro de control de calidad (y hago referencia a la salida como dt2 , clausura dt ). Luego, por ejemplo, cargo otra tabla que hace referencias cruzadas de ID de lote con ubicaciones de fabricación (a las que hago referencia como dt3 ). Después de eso puedo unirme dt2 con dt3 , creando dt4 y así sucesivamente, hasta que tenga una tabla que tenga toda la información que creo que necesito antes de continuar con cualquier análisis. En algunos scripts, estoy procesando cerca de 10 tablas, todas referenciadas como dt(n) . Esto es lo que me permite mi nivel de habilidad actual.
Tengo un plan a mediano plazo para usar un script de este tipo para los gráficos de control. Por el momento, solo evalúo visualmente las tendencias y envío capturas de pantalla o gráficos html exportados a diferentes partes interesadas.
Lo que me llevo de esta conversación es usar referencias de tablas más descriptivas. Estos son también lo que se conoce como mangos?
Re: Pregunta sobre las referencias de la tabla (de Russel)Los nombres descriptivos de identificadores/referencias lo ayudarán a usted (oa otra persona que tenga que modificar su código) en algún momento. Esto también facilita la impresión de depuración, cuando puede usar Show(dt_batchid_loc); por ejemplo para ver el nombre de las tablas creadas.
También podría ser útil usar la tabla de salida ("nombre de la tabla") al crear tablas. Esto lo ayudará si (cuando) tiene que depurar el código. Si no hace esto (tiendo a omitir esto y me atormenta de vez en cuando) es mucho más fácil ver qué tabla está abierta con un nombre como "BatchID_with_Loc" en comparación con "Untitled 3041 summary by QC" , Loc" o algo así.
Re: Pregunta sobre las referencias de la tabla (de Russel)También existe la posibilidad de manipular la tabla en la base de datos (definición de consultas, por ejemplo, Query Builder o en SQL nativo). Esto es ventajoso para grandes conjuntos de datos, ya que evita el tráfico y coloca una gran carga en el servidor. Entonces también necesita manejar menos tablas en JMP.
Re: Pregunta sobre las referencias de la tabla (de Russel)He intentado usar el generador de consultas antes. Era increíblemente lento y se bloqueaba constantemente. Así que me puse en contacto con el soporte técnico de SAS, pero no pudieron resolver el problema. Como resultado, me limité a manejar tablas individuales en un script, lo cual; dado el pésimo rendimiento del generador de consultas; es mucho más conveniente y eficiente. Puede ser que esto se deba a que las tablas que estoy cargando tienen más de 100 000 filas, al menos esa fue la conclusión del soporte técnico. Por desgracia, no tengo prácticamente ningún otro lugar al que acudir que estas mesas "enormes".
Además, creo que necesito urgentemente familiarizarme con la depuración. Si bien me las arreglo para "discutir" algunas líneas útiles de código, no estoy considerando la arquitectura, la estética o; como una cuestión de hecho; cómo crear un script que se pueda depurar. Desafortunadamente, todavía es un concepto extraño para mí.