¿Existe un "Concatenar Virtual"?¡Hola!Estoy tratando de combinar 8 tablas juntas y actualizar automáticamente si la tabla original (ya sea Excel o la tabla de datos JMP).
- Las 8 tablas tienen los mismos nombres de columna y propiedades, solo tienen diferentes conjuntos de datos, por lo que lo que estoy tratando de hacer técnicamente es concatenarlos todos juntos.
- También necesito la tabla unida (en la que se alimentan los 8) para poder actualizar si los datos en las tablas del alimentador se agregan / eliminan, etc.
Sé que hay una "unión" que puede crear una base de datos que se actualizará virtualmente con cambios en las tablas de datos de entrada, pero esa función no funciona para mis necesidades porque simplemente reemplaza los datos (función "unión" en JMP); no se concatena.
¿Existe una función para concatenar 8 tablas de datos (preferiblemente Excel) virtualmente de modo que la tabla de datos concatenados (la que tiene las 8 tablas de datos originales combinadas) se actualizará si se cambian las tablas de datos del alimentador?
¡Gracias de antemano!
Tabla de datosRe: ¿Existe un "Concatenar Virtual"?@AU ,
No conozco una opción incorporada de JMP para hacer lo que quiere, pero un maestro SQL podría tener un método para hacer lo que creo que quiere. No estoy seguro de cuál es su expectativa / caso de uso.
¿Espera tener actualizaciones mientras analiza los datos? ¿Tiene análisis que desea actualizar? ¿O se espera que este archivo / análisis se actualice en algún intervalo de tiempo regular?
Si proporciona una descripción más detallada de lo que está esperando (tratando de hacer), entonces la comunidad podría brindarle una solución, incluso si no es una solución incorporada de JMP.
Re: ¿Existe un "Concatenar Virtual"?Gracias @ gzmorgan0 para las sugerencias, agregué algunos detalles más.
Ah, ok gracias:(Un poco desafortunado.No estoy familiarizado con SQL, pero estoy abierto a aprenderlo / probarlo si es simple / directo.
Re: ¿Existe un "Concatenar Virtual"?Tampoco conozco una herramienta análoga a una unión virtual, pero parece que podría lograr esto con un script no demasiado complejo utilizando el concatenado tradicional.Aquí está el enfoque general con el que comenzaría:
Names Default to here(1);
//reference the current data table (the one you are already working in)
dtLatest = current data table();
//list of all source files and variable to hold references to source tables
SourceFile = {"C:\file1.xlsx", "C:\file2.xlsx", ... };
dtSource = list();
//If all files have the same format, use a function to open them all
openfile = Function({fn},
//Open function, copy this from the source script after opening a file interactively
dt = Open(
fn,
Worksheets( "Sheet 1" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 1 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
dt << New Column(..); //add any more columns, filter or clean data as appropriate
dt;
);
//Open source tables
for( f=1, f<= n items(SourceFile), f++,
dtSource = openfile( SourceFile[f] )
);
//Join all the files together
dtJoined = Concatenate(dtSource);
//Close the source tables
dtSource << Close Window()
//In the source table, delete all rows
dtLatest << Select all Rows;
dtLatest << Delete Rows;
//Concatenate the new rows again
dtLatest << Concatenate( dtJoined );