Existe-t-il un "Concaténat virtuel"?Bonjour!J'essaie de combiner 8 tables ensemble et de mettre à jour automatiquement si la table d'origine (que ce soit la table de données Excel ou JMP).
- Les 8 tables ont les mêmes noms de colonnes et propriétés, elles ont juste des ensembles de données différents, donc ce que j'essaie techniquement de faire est de les concaténer tous ensemble.
- J'ai également besoin de la table jointe (dans laquelle les 8 alimentent) pour pouvoir mettre à jour si les données des tables d'alimentation sont ajoutées / supprimées, etc.
Je sais qu'il existe une "jointure" qui peut créer une base de données qui se mettra à jour virtuellement avec les modifications des tables de données d'entrée, mais cette fonction ne fonctionne pas pour mes besoins car elle remplace simplement les données (fonction "join" sur JMP); il ne concatène pas.
Existe-t-il une fonction pour concaténer 8 tables de données (de préférence Excel) virtuellement de telle sorte que la table de données concaténée (celle avec les 8 tables de données d'origine combinées) se mettra à jour si les tables de données d'alimentation sont modifiées?
Merci d'avance!
Tableau de donnéesRe: Existe-t-il un "Virtual Concatenate"?@AU ,
Je ne connais pas d'option intégrée JMP pour faire ce que vous voulez, mais un maître SQL pourrait avoir une méthode pour faire ce que je pense que vous voulez. Je ne suis pas sûr de vos attentes / cas d'utilisation.
Vous attendez-vous à avoir des mises à jour lors de l'analyse des données? Avez-vous des analyses que vous souhaitez mettre à jour? Ou ce fichier / analyse devrait-il être mis à jour à un intervalle de temps régulier?
Si vous fournissez une description plus détaillée de ce que vous attendez (essayez de faire), la communauté pourra peut-être vous fournir une solution, même s'il ne s'agit pas d'une solution intégrée JMP.
Re: Existe-t-il un "Virtual Concatenate"?Merci @ gzmorgan0 pour les suggestions, j'ai ajouté quelques détails supplémentaires.
Ah, ok, merci:(Un peu malheureux.Je ne suis pas familier avec SQL, mais je suis ouvert à l'apprentissage / à l'essayer si c'est simple / direct.
Re: Existe-t-il un "Virtual Concatenate"?Je ne connais pas non plus un outil analogue à une jointure virtuelle, mais il semble que vous puissiez accomplir cela avec un script pas trop complexe utilisant la concaténation traditionnelle.Voici l'approche générale avec laquelle je commencerais:
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 );