Daniel Valente, PhD, JMP Gerente sénior de productos, SAS
Jon Weisz , vicepresidente de ventas y marketing de JMP, SAS
Abstracto
JMP 13 introduce dos nuevas herramientas que facilitan al analista la resolución de problemas comunes de datos. A menudo, dos o más tablas de datos están relacionadas por una clave común, pero difieren mucho en cuanto a la frecuencia de muestreo de hechos o las dimensiones (p. ej., largo frente a ancho). Realizar una unión de estas dos (o más) tablas puede generar una tabla resultante que ocupa mucho espacio en memoria. Si bien esto resulta problemático cuando las tablas de hechos y dimensiones son relativamente compactas, puede generar rápidamente una tabla unida demasiado grande para caber en memoria. La solución es usar una unión virtual, que conserva la relación unida sin crear realmente la tabla unida, lo que enriquece eficazmente la tabla de hechos sin sobrecargarla. Los analistas a menudo se ven en la necesidad de realizar uniones de tablas complejas o resúmenes en bases de datos y escribir SQL, lo cual genera sus propios inconvenientes, especialmente cuando existen relaciones complejas, como dimensiones que cambian lentamente. JMP Query Builder sirve como una herramienta sencilla para generar y escribir SQL, cuyo código puede ejecutarse posteriormente en una base de datos. Después de arrastrar y soltar la consulta correcta y deseada, Query Builder escribe automáticamente el código SQL para usted, eliminando la necesidad de un trabajo manual tedioso y propenso a errores.
Descripción general de las estructuras de tablas relacionales
Los analistas necesitan datos en un formato que incluya variables en columnas y observaciones en filas. Los datos también pueden requerir columnas categóricas que subagrupen claramente las observaciones (p. ej., nivel de ingresos, país, máquina, etc.). Los datos también pueden tener atributos que clarifiquen las observaciones (p. ej., dirección, número de serie, ID del cliente, etc.).
A menudo, los datos fuente para dicho análisis son estructuras de datos relacionales almacenadas en bases de datos. Muchos cursos modernos de ciencia de datos abarcan temas relacionados con estructuras de datos relacionales, bases de datos y SQL. Sin embargo, la mayoría de los ingenieros, científicos y estadísticos no están expuestos a estos temas en el ámbito académico, por lo que deben aprender sobre ellos como parte de una formación continua e informal. JMP Query Builder ofrece a los analistas un puente entre las estructuras de datos relacionales y los datos listos para el análisis. Al aprender algunos términos y conceptos, los analistas pueden usar Query Builder para generar datos listos para el análisis.
La breve discusión de las estructuras de datos relacionales en este documento no pretende reemplazar un estudio exhaustivo del tema; más bien, presenta los términos y definiciones utilizados cuando se trabaja con Query Builder y sus capacidades de unión virtual en JMP.
¿Por qué tener más de una tabla para almacenar datos importantes?
Imagina que necesitas idear una forma de almacenar datos sobre las compras de los productos de tu empresa por parte de los clientes. Puedes empezar enumerando todas las variables que podrían ser necesarias, como:
- Fecha de compra
- Monto de la compra
- Método de compra (PO o CC)
- SKU del producto
- Descripción del Producto
- Nombre del cliente
- Dirección del cliente
- Número de teléfono del cliente
Esta no es una lista exhaustiva, pero es un buen comienzo. Ahora piense en el mantenimiento de estos datos. Esta tabla tendrá ocho columnas y una fila para cada compra. Algunos campos pueden tener muchos valores distintos, como el Importe o la Fecha de Compra. Otros campos tendrán muchos menos valores distintos y muchos valores repetidos, como el SKU y la Descripción del Producto.
Una forma común de reducir el tamaño de una tabla es dividirla en tres grupos lógicos. Primero, la tabla que contiene las transacciones o datos , como la fecha y el importe de la compra. La segunda tabla contiene la información del cliente y la tercera, la del producto. Para mantener los vínculos entre las columnas de datos, se debe agregar una columna con información de enlace para relacionar las tres tablas. Estas columnas se denominan claves . Una forma común de representar este diseño es mediante un diagrama de entidad-relación (ER) . Cada entidad tiene un nombre de tabla, una clave o conjunto de claves que identifican de forma única cada fila y un conjunto de atributos o variables que proporcionan información sobre cada fila. El diagrama ER para la fecha de compra del cliente se muestra en la Figura 1.

Figura 1. Diagrama de relación entre entidades para datos de compra de clientes
El símbolo de llave junto al ID de cliente en la tabla de dimensión "Clientes" significa que, si conoce un ID de cliente, puede encontrarlo de forma única en la tabla y toda la información asociada. El ID de cliente también se encuentra en la tabla de datos de compras. El ID de cliente se denomina clave externa cuando se encuentra en la tabla de datos de compras, ya que puede aparecer varias veces y define filas de una tabla externa de forma única, a diferencia de la que aparece.
Con el diseño de la Figura 1, es muy fácil ver cómo actualizar la descripción de un producto. Para ello, basta con editar la tabla "Dimensiones del producto" y ese cambio se aplicaría a todas las compras realizadas, una ventaja conocida como mantenibilidad . Si se tratara de una sola tabla con la descripción del producto repetida muchas veces, habría que editar muchas filas, lo que inevitablemente generaría errores y problemas de calidad de los datos.
Caso 1: Encuesta de población actual
Veamos ahora un ejemplo con el Generador de Consultas. El gobierno de EE. UU. recopila una gran cantidad de datos interesantes con la Encuesta de Población Actual (CPS) [USGCPS]. La CPS es:
“La Encuesta de Población Actual (CPS) es una de las encuestas más antiguas, extensas y reconocidas de Estados Unidos. Es fundamental, ya que proporciona información sobre muchos de los aspectos que nos definen como individuos y como sociedad: nuestro trabajo, nuestros ingresos y nuestra educación. Además de ser la principal fuente de estadísticas mensuales sobre la fuerza laboral, la CPS se utiliza para recopilar datos para diversos estudios que mantienen al país informado sobre el bienestar económico y social de su población. Esto se logra añadiendo un conjunto de preguntas complementarias a las preguntas básicas mensuales de la CPS. Estas preguntas complementarias varían mensualmente y abarcan una amplia variedad de temas, como la manutención infantil, el voluntariado, la cobertura del seguro médico y la matriculación escolar. Las consultas complementarias suelen realizarse anual o bianualmente, pero la frecuencia y la recurrencia de cada una dependen completamente de lo que mejor se adapte a las necesidades de su patrocinador.
Estos datos están disponibles para descargar como 36 archivos de texto, que se abren fácilmente en JMP, ya que están delimitados por tabulaciones. Al analizar las tablas de JMP, se creó un diagrama ER (Figura 2) para fundamentar el trabajo en el Generador de Consultas.

Figura 2. Diagrama ER para las tablas de datos de estadísticas de la fuerza laboral de la CPS
Para utilizar el generador de consultas, deberá definir una tabla principal (hecho) y una o más tablas secundarias (dimensión ).
La tabla de hechos para los datos de CPS se llamaTodos los datos.jmpLa tabla tiene más de 5 millones de filas, pero solo cinco columnas. Las columnas tienen un "id_de_serie", fechas y una columna "valor". Para comprender los datos, necesita averiguar qué...serie_id.jmp significa. El diagrama ER de la Figura 2 muestra que “series_id” está relacionado con elserie.jmpTabla. A continuación, abra ambas tablas en JMP y utilice el Generador de consultas para definir la unión.
En JMP, seleccioneTodos los datos.jmpcomo la tabla primaria (de hechos) yserie.jmpComo la tabla secundaria (de dimensión) (Figura 3). JMP buscará automáticamente las claves que encajen y configurará la unión, pero debe verificarla haciendo clic en el diagrama de Venn a la derecha de la tabla de series. El Generador de consultas encontró "footnote_codes" en ambas tablas, pero no desea unirlas como clave, solo el "series_id", por lo que debe eliminar esa relación de clave.

Figura 3. Generador de consultas para la unión deTodos los datos.jmpySerie.jmp
Ahora debe definir las columnas en la tabla unida (Figura 4). Para ello, seleccioneTodos los datos.jmpEn la esquina superior izquierda, seleccione las columnas necesarias de esa tabla. Omita "series_id" ahora, ya que no necesitará esa clave en la tabla resultante (series y datos.jmp).

Figura 4. Generador de consultas para unirseseries y datos.jmpa todos “_código.jmp" mesas
Tenga en cuenta queseries y datos.jmpes aproximadamente cinco veces más grande que elTodos los datos.jmpTabla. Esta inflación se debe a los valores repetidos de todos los campos "_code". Por lo tanto, almacenar los datos en 36 tablas reduce considerablemente los requisitos de almacenamiento . A continuación, seleccioneseries y datos.jmp como la tabla principal y todas las“_código.jmp” tablas como tablas secundarias (Figura 5).

Figura 5. Generador de consultas para unir todos los “_código.jmp”
Cree la consulta solo con los campos "_text" de las tablas "_code", ya que ya no necesita las variables clave. Con el Visor de Columnas de JMP, puede obtener fácilmente un resumen de las 42 columnas de la tabla.Unión completa.jmp.Todavía tendrás 5,7 millones de filas, lo que es lo mismo queTodos los datos.jmp, pero ahora tienes los campos de texto que describen los datos. Aunque la tabla...Unión completa.jmpsigue siendo seis veces más grande que la mesaAllData.jmp,Ahora tienes una tabla útil para el análisis.
Utilice Graph Builder para trazar la tendencia del desempleo manufacturero desdeUnión completa.jmpEn la Figura 6, la disrupción en este sector durante la recesión se muestra con la línea de tendencia roja. Los niveles de desempleo en 2016 volvieron a los niveles observados en 2006-2007. La línea de tendencia verde muestra los niveles de empleo en el sector de fabricación de automóviles. Entre 2010 y 2015, se crearon más de 300.000 empleos en la industria automotriz.

Figura 6. Generador de gráficos que muestra datos de las estadísticas de la fuerza laboral de CPS
Caso 2: Datos de inspección de restaurantes
Este caso explora el uso de unión virtual y JMP Query Builder para analizar los resultados de la inspección de restaurantes de la ciudad de Nueva York del DOHMH.[DOHMH]Imagínese como un inspector nuevo en el puesto y explorando datos históricos para ver qué revelan. Desde el sitio webhttps://data.cityofnewyork.us/Health/DOHMH-New-York-City-Restaurant-Inspection-Results/xx67-kt59Puede descargar una versión .csv de estos datos, que se puede abrir fácilmente en JMP. La descarga completa, realizada el 17 de julio de 2016, genera un archivo de 163,3 MB que incluye 448.149 registros.
Estos datos tienen una columna FECHA DE INSPECCIÓN, que corresponde al día/día/año del evento de inspección. Para ver cuántos años incluyen estos datos, haga clic derecho y seleccione Nueva columna de fórmula > Fecha y hora > Año. La conversión de continuo a nominal y luego seleccione Analizar > Distribución se muestra en la Figura 7. El nivel 1900 probablemente indica datos faltantes, algo que deberá corregir. No es problema editar estos datos de forma destructiva (ya que JMP se utiliza como entorno de pruebas y los datos reales siempre se almacenan en el servidor); a continuación, utilice la utilidad Recodificar para cambiar estos niveles a faltantes.

Figura 7. Fechas de inspección del conjunto de datos completo
En la ventana de recodificación, hay 1151 registros con fecha 01/01/1900. Cambie este valor anterior a • eliminando la cadena y haciendo clic en Listo -> En su lugar. Dado que la FECHA DE REGISTRO corresponde a la fecha en que se extrajeron los datos y no es relevante para este análisis, elimine la columna.
Este artículo trata sobre la unión virtual y el Constructor de Consultas, por lo que quizás se pregunte por qué analizamos una tabla desnormalizada. Parece existir la posibilidad de normalizar estos datos. Cabe destacar que, en estos datos sin procesar, no se incluye la ubicación geocodificada de cada restaurante, una tarea que puede realizarse posteriormente con un complemento de JMP. Dado que este proceso es costoso computacionalmente, resulta lógico geocodificar únicamente ubicaciones únicas, que pueden tener múltiples inspecciones en estos datos. Además, parece existir la posibilidad de tener una tabla adicional de infracciones, que son mucho menos frecuentes que las inspecciones únicas.
Antes de dividir los datos, tome una muestra de estos datos para que los números sean más manejables para su ejercicio de exploración.
El muestreo se puede realizar fácilmente con el Constructor de consultas. En Tablas > Constructor de consultas JMP, se abrirá el cuadro de diálogo de inicio. Dado que en este caso no se realiza una unión, utiliceDOHMH_Nueva_York_Ciudad_Restaurante_Inspección_Resultados.jmpComo tabla principal, sin tablas secundarias en este momento. En el Constructor de consultas, hay una pestaña llamada "Muestra". Al activar la casilla "Muestra de este conjunto de resultados", puede elegir "Primeras N filas" o "N filas aleatorias". Tome una muestra aleatoria del 10 % de estos datos; por lo tanto, coloque 44 815 en "N filas aleatorias". Agregue todas las columnas a la sección "Incluir columnas" y luego inspeccione el SQL. El Constructor de consultas ha generado automáticamente el SQL para realizar esta consulta:
SELECCIONE t1.CAMIS, t1.DBA, t1.BORO, t1.EDIFICIO,
t1.CALLE, t1.CÓDIGO POSTAL, t1.TELÉFONO, t1."DESCRIPCIÓN DE LA COCINA",
t1."FECHA DE INSPECCIÓN", t1."ACCIÓN", t1."CÓDIGO DE INFRACCIÓN", t1."DESCRIPCIÓN DE LA INFRACCIÓN",
t1."BANDERA CRÍTICA", t1.PUNTUACIÓN, t1.CALIFICACIÓN, t1."FECHA DE CALIFICACIÓN",
t1."TIPO DE INSPECCIÓN", t1."Año[FECHA DE INSPECCIÓN]"
DE LOS RESULTADOS DE LA INSPECCIÓN DE RINCONES DE LA CIUDAD DE NUEVA YORK DEL DOHMH t1
ORDENAR POR ALEATORIO() LÍMITE 44815;
Después de usarOrden aleatorio () Para nuestro muestreo, esta consulta generará el subconjunto de datos adecuado. Guárdelo como subconjunto y luego separe los datos demográficos del restaurante y los códigos de infracción. El Constructor de Consultas también se puede usar aquí. Comience con los códigos de infracción. Nuevamente, solo necesita una Tabla Principal. Arrastre y suelte CÓDIGO DE INFRACCIÓN y DESCRIPCIÓN DE LA INFRACCIÓN en la lista de variables y luego arrastre de nuevo CÓDIGO DE INFRACCIÓN, lo que le permite agregar por conteo y generar la tabla con las propiedades deseadas. Cambie el Nombre JMP de la columna de agregación a RECUENTO DE INFRACCIONES. Esta capacidad de generar un alias para una columna o columna derivada es una función potente del Constructor de Consultas. También puede optar por ordenar automáticamente por la columna agregada recién creada arrastrando RECUENTO DE INFRACCIONES a la función Ordenar por, como se muestra en la Figura 8.

Figura 8. Columna de agregación renombrada como Recuento de infracciones, con una propiedad Ordenar por
Con solo 88 códigos de infracción únicos, la consulta resultante es mucho más compacta. Tras nombrar esta tabla como D-ViolationCodes.jmp , es un buen momento para usar el Constructor de Gráficos y explorar qué códigos tienen más registros. Arrastre "DESCRIPCIÓN DE LA INFRACCIÓN" al eje X y "CONTADOR DE INFRACCIONES" al eje Y. A continuación, haga clic con el botón derecho en "DESCRIPCIÓN DE LA INFRACCIÓN" y seleccione "Ordenar por CONTADOR DE INFRACCIONES" (en orden descendente). Para centrarse solo en las categorías principales, puede usar el filtro de Datos Locales en "CONTADOR DE INFRACCIONES" con categorías de infracción que tengan más de 2500 registros únicos (Figura 9).

Figura 9. Número de infracciones más frecuentes (más de 2500 registros únicos en la tabla muestreada)
Dejando de lado la tabla de infracciones por ahora, puede centrarse en los datos demográficos específicos del restaurante. En este punto, también puede eliminar la descripción de la infracción, lo que ahorra varias filas duplicadas en la tabla de hechos principal. Utilice el CÓDIGO DE INFRACCIÓN, que es una forma mucho más compacta de organizar estos datos (cadenas de tres letras en lugar de cadenas de una oración).
Nuevamente, use el Constructor de Consultas para extraer los datos demográficos de cada restaurante. Es muy probable que haya más de una pizzería con el mismo nombre en Nueva York, pero el Constructor de Consultas puede gestionar esa situación. La columna CAMIS funciona como un ID que puede usarse para identificar restaurantes únicos. En el Constructor de Consultas, arrastre CAMIS dos veces; una de las columnas debe agregarse por recuento y renombrarse como RECUENTO DE INSPECCIÓN. El resto de los datos demográficos son DBA, BORO, EDIFICIO, CALLE, CÓDIGO POSTAL, TELÉFONO y DESCRIPCIÓN DE LA COCINA. Finalmente, calcule una columna llamada DIRECCIÓN para el geocodificador, lo cual se realizará como un script posterior a la consulta. Ejecute la consulta y luego utilice una columna de fórmula con la siguiente fórmula:
:EDIFICIO ||" "|| :CALLE ||" "|| :BORO ||"NUEVA YORK,"||Carbonizarse( :CÓDIGO POSTAL )
Esta fórmula crea la dirección correcta. Escribiendo:DIRECCIÓN <<obtener el script; En un editor de scripts, se generará el JSL necesario para generar la columna para un script posterior a la consulta. Copie y pegue ese código en la pestaña correspondiente del Constructor de consultas y luego genere una columna que divida los datos en 20 grupos para una mejor interfaz con el geocódigo. Después de generar una nueva columna llamada "Agrupar e inicializar datos: Datos de secuencia, del 1 al 20, Paso 1, Repetir 1", puede obtener el script y pegarlo en el script posterior a la consulta. Ahora que ambas columnas son scripts, puede eliminar la tabla de consulta y volver a ejecutar la consulta. Guarde esta tabla de datos comoD-Restaurantes.jmp. Como paso final, elimine las columnas adicionales de la tabla de hechos actual, incluidas: DBA, BORO, EDIFICIO, CALLE, CÓDIGO POSTAL, TELÉFONO y DESCRIPCIÓN DE LA COCINA.
Guardar esta tabla como F-Inspecciones.jmp. Ahora está listo para geocodificar los grupos de restaurantes con un complemento creado por Xan Gregg, disponible en JMP File Exchange [GREGG], que utiliza OpenStreetMaps.org para geocodificar ubicaciones. Este servicio es costoso en términos computacionales y propenso a fallos, por lo que es mejor dividirlo.D-Restaurantes Por grupo mediante Tablas > Subconjunto. La función "Subconjunto por" de esta plataforma, que se muestra en la Figura 10, resulta útil en este caso.

Figura 10. Plataforma de subconjuntos de tablas para la división por grupo de restaurantes
Las 20 tablas recién creadas se pueden geocodificar individualmente mediante el complemento. El campo de dirección ayuda a determinar la latitud y longitud correctas. Finalmente, se pueden guardar los resultados en la misma tabla de datos.
Para que la tabla de datos vuelva a ser una tabla de una sola dimensión con ubicaciones, utilice la función Tablas > Concatenar, combinando los 20 grupos; se llama D-RestauranteswUbicación.jmp.
Ahora que ha desglosado esta tabla utilizando el Generador de consultas, puede volver a reconstruirla utilizando una unión virtual.
Primero, comencemos con nuestras dos tablas de dimensiones: Restaurantes-wLocation.jmp yCódigos de violación.jmp. Al hacer clic derecho en el CÓDIGO DE INFRACCIÓN y seleccionar ID de enlace, se iniciará la unión virtual. Observe que aparece un pequeño icono de llave en la lista de columnas. Vaya a la tabla Restaurantes y haga lo mismo con CAMIS. Para finalizar la unión virtual, vaya a la tabla de hechos, que contiene todas las inspecciones, y seleccione Referencia de enlace tanto para CAMIS como para el CÓDIGO DE INFRACCIÓN.
Todas las columnas se muestran en la tabla de hechos sin necesidad de unir físicamente las tablas en memoria. La unión virtual también se puede programar mediante una propiedad de columna:
Para la referencia del enlace:
Establecer propiedad("Referencia de enlace", Tabla de referencia("D(f)-Restaurantes-wLocation.jmp"));
Para el ID del enlace:
Establecer propiedad("ID de enlace", 1);

Figura 11. Unión virtual
La figura 11 muestra que tiene acceso a las columnas de ambas tablas de dimensiones sin sobrecargar la tabla de hechos.
Por último, cree un tablero para visualizar y explorar estos datos aprovechando las columnas unidas virtualmente.
La Figura 12 muestra cómo el Constructor de Paneles muestra una colección de cinco gráficos. Para usar dos de los gráficos como filtros de selección, comience con la plantilla Filtro Jerárquico del Constructor de Paneles, utilizando la BANDERA CRÍTICA y BORO como filtro y filtro jerárquico. A continuación, utilice un gráfico de los recuentos de calificaciones, la puntuación media por cuantil en un mapa y, finalmente, un mapa de calor de los recuentos de fechas por tipo de inspección.

Figura 12. Modo de creación de paneles de control de Application Builder con el panel de control de inspección final de NYC
Este es solo un ejemplo del tipo de visualización que se puede crear con estos datos, aprovechando las tablas vinculadas que ofrece la unión virtual. Los datos geocodificados también permiten, por ejemplo, analizar la ubicación de los restaurantes por tipo de cocina (Figura 13).

Figura 13. Restaurantes geocodificados coloreados por categoría que se muestran en un mapa a nivel de calle.
Generación e implementación de SQL
Otra gran ventaja de usar el Constructor de Consultas es la generación de Lenguaje de Consulta Estructurado (SQL). SAS puede usar SQL dentro de Proc SQL, y la mayoría de las bases de datos usan SQL como lenguaje de programación para unir y administrar tablas. SQL se puede generar a partir de una consulta que se define en la interfaz intuitiva del Constructor de Consultas.
A continuación se muestra el SQL creado por Query Builder para la unión de todas las tablas de dimensión a la tabla unida deserie.jmpyTodos los datos.jmp(del Caso 1) y el SQL de la unión deUnión completa.jmpy todo el_código.jmpmesas. Lasnombre de bibliotecadeclaración, referencias libname asociadas en las tablas y laprocedimiento SQL Se añadieron las declaraciones. El resto del código fue generado por el Generador de consultas.
Tenga en cuenta que la mayor parte del código es una lista de las columnas dentro de las sentencias SELECT. Usar el Constructor de Consultas para generar dicho código es de gran ayuda, incluso si el usuario conoce SQL. ¿Para qué escribir tantos nombres de tablas y columnas si no es necesario?
nombre de biblioteca fuente 'la ubicación de su archivo';
procedimiento SQL;
crear mesafuente.dataNseriescomo
SELECCIONARt1.año, t1.periodo, t1.valor, t1.códigos de nota al pie,
t2.lfst_code, t2.periodicidad_code, t2.serie_title, t2.absn_code,
t2.código_de_actividad, t2.código_de_edades, t2.código_de_clase, t2.código_de_duración,
t2.código_educación, t2.código_entr, t2.código_expr, t2.código_hheader,
t2.código_de_hora, t2.código_de_indy, t2.código_de_jdes, t2.código_de_aspecto,
t2.código_mari, t2.código_mjhs, t2.código_ocupación, t2.código_orig,
t2.pcts_código, t2.race_código, t2.rjnw_código, t2.rnlf_código,
t2.rwns_código, t2.seek_código, t2.sexs_código, t2.tdat_código,
t2.código_veterinario, t2.código_semanal, t2.código_nacido, t2.código_niño,
t2.disa_code, t2.seasonal, t2.footnote_codes, t2.begin_year,
t2.inicio_periodo, t2.fin_año, t2.fin_periodoDEfuente.AllData t1
IZQUIERDAUNIÓN EXTERNA source.series t2
EN ( t1.serie_id = t2.serie_id ) ;
SELECCIONARt1.año, t1.periodo, t1.valor, t1.título_de_serie,
t1.estacional, t1.año_de_inicio, t1.periodo_de_inicio, t1.año_de_fin,
t1.fin_periodo, t13.texto_nota_pie, t34.texto_trabajo, t33.texto_veterinario,
t32.tdat_text, t31.sexs_text, t30.seek_text, t29.rwns_text,
t28.rnlf_text, t27.RJNW_TEXT, t26.race_text, t25.periodicity_text,
t24.pcts_text, t23.orig_text, t22.ocupación_text, t21.mjhs_text,
t20.texto mari, t19.texto look, t18.texto lfst, t17.texto jdes,
t16.indy_text, t15.hora_texto, t14.hheader_text, t12.expr_texto,
t11.texto_entr, t10.texto_educativo, t9.texto_duración, t8.texto_disa,
t7.texto_de_clase, t6.texto_del_niño, t5.texto_del_nacido, t4.texto_de_las_edades,
t3.texto_de_actividad, t2.texto_de_absnDEfuente.dataNseries t1
IZQUIERDAUNIÓN EXTERNA source.footnote t13
EN ( t1.códigos_de_nota_al_pie = t13.código_de_nota_al_pie )
IZQUIERDAUNIÓN EXTERNA source.wkst t34
EN ( t34.wkst_código = t1.wkst_código )
IZQUIERDAUNIÓN EXTERNA source.vets t33
EN ( t33.código_veterinario = t1.código_veterinario )
IZQUIERDAUNIÓN EXTERNA source.tdat t32
EN ( t32.tdat_código = t1.tdat_código )
IZQUIERDAUNIÓN EXTERNA source.sexs t31
EN ( t31.código_sexo = t1.código_sexo )
IZQUIERDAUNIÓN EXTERNA source.seek t30
EN ( t30.código_de_búsqueda = t1.código_de_búsqueda )
IZQUIERDAUNIÓN EXTERNA source.rwns t29
EN ( t29.rwns_código = t1.rwns_código )
IZQUIERDAUNIÓN EXTERNA source.rnlf t28
EN ( t28.rnlf_código = t1.rnlf_código )
IZQUIERDAUNIÓN EXTERNA source.rjnw t27
EN ( t27.RJNW_CODE = t1.rjnw_code )
IZQUIERDAUNIÓN EXTERNA source.race t26
EN ( t26.código_de_carrera = t1.código_de_carrera )
IZQUIERDAUNIÓN EXTERNA origen.periodicidad t25
EN ( t25.código_de_periodicidad = t1.código_de_periodicidad )
IZQUIERDAUNIÓN EXTERNA source.pcts t24
EN ( t24.pcts_código = t1.pcts_código )
IZQUIERDAUNIÓN EXTERNA source.orig t23
EN ( t23.orig_code = t1.orig_code )
IZQUIERDAUNIÓN EXTERNA origen.ocupación t22
EN ( t22.código_de_ocupación = t1.código_de_ocupación )
IZQUIERDAUNIÓN EXTERNA source.mjhs t21
EN ( t21.mjhs_código = t1.mjhs_código )
IZQUIERDAUNIÓN EXTERNA source.mari t20
EN ( t20.código_mari = t1.código_mari )
IZQUIERDAUNIÓN EXTERNA source.look t19
EN ( t19.código_de_apariencia = t1.código_de_apariencia )
IZQUIERDAUNIÓN EXTERNA source.lfst t18
EN ( t18.código_lfst = t1.código_lfst )
IZQUIERDAUNIÓN EXTERNA source.jdes t17
EN ( t17.jdes_code = t1.jdes_code )
IZQUIERDAUNIÓN EXTERNA source.indy t16
EN ( t16.indy_código = t1.indy_código )
IZQUIERDAUNIÓN EXTERNA source.hour t15
EN ( t15.código_hora = t1.código_hora )
IZQUIERDAUNIÓN EXTERNA source.hheader t14
EN ( t14.hheader_code = t1.hheader_code )
IZQUIERDAUNIÓN EXTERNA source.expr t12
EN ( t12.expr_código = t1.expr_código )
IZQUIERDAUNIÓN EXTERNA source.entr t11
EN ( t11.entr_code = t1.entr_code )
IZQUIERDAUNIÓN EXTERNA source.education t10
EN ( t10.código_educativo = t1.código_educativo )
IZQUIERDAUNIÓN EXTERNA origen.duración t9
EN ( t9.código_duración = t1.código_duración )
IZQUIERDAUNIÓN EXTERNA source.disa t8
EN ( t8.disa_code = t1.disa_code )
IZQUIERDAUNIÓN EXTERNA source.class t7
EN ( t7.código_de_clase = t1.código_de_clase )
IZQUIERDAUNIÓN EXTERNA source.chld t6
EN ( t6.chld_code = t1.chld_code )
IZQUIERDAUNIÓN EXTERNA source.born t5
EN ( t5.código_de_nacimiento = t1.código_de_nacimiento )
IZQUIERDAUNIÓN EXTERNA source.ages t4
EN ( t4.edades_código = t1.edades_código )
IZQUIERDAUNIÓN EXTERNA origen.actividad t3
EN ( t3.código_de_actividad = t1.código_de_actividad )
IZQUIERDAUNIÓN EXTERNA source.absn t2
EN ( t1.absn_código = t2.absn_código );
abandonar;
Resumen
Los analistas necesitan datos en una tabla, organizados de forma que permitan la visualización y el análisis. Sin embargo, Los datos a menudo se organizan para su carga, mantenimiento y almacenamiento en muchas tablas (normalizadas), de modo que los analistas tienen el desafío de unir y resumir muchas tablas en una sola tabla lista para el análisis.
El Generador de Consultas de JMP es una forma eficaz de unir varias tablas desde JMP. La función de vista previa permite al usuario comprobar si la unión está correctamente definida antes de ejecutar una operación de unión de tablas que requiere mucho tiempo. El SQL generado se puede implementar en SAS o en una base de datos, ahorrando así mucho tiempo al no tener que escribir dicho código manualmente.
Referencias
[UGSCPS] Estadísticas de la Fuerza Laboral – Encuesta de Población Actual – CPS. Consultado el 18 de agosto de 2016.http://www.bls.gov/cps/data.htm.
Resultados de la inspección de restaurantes del DOHMH en la ciudad de Nueva York. Consultado el 17 de agosto de 2016.https://data.cityofnewyork.us/Health/DOHMH-New-York-City-Restaurant-Inspection-Results/xx67-kt59.
[GREGG]Gregg, X. (28 de mayo de 2014). Geocodificación de topónimos. Recuperado el 18 de agosto de 2016 dehttps://community.jmp.com/docs/DOC-6175.