import: beaucoup de cols supplémentaires. L'utilisateur sélectionne-t-il ceux qu'il veut?Bonjour,
Donc, je suis nouveau à JSL et essayer de comprendre cela. Les ensembles de données que je reçois de nos serveurs contiennent une tonne de colonnes supplémentaires, souvent des colonnes vierges. J'espère pouvoir démarrer la plupart de mes scripts avec une boîte de dialogue sélectionnée par l'utilisateur leur permettant de sélectionner / ajouter / supprimer des colonnes de leur choix et éventuellement de les réorganiser dans un ordre préféré? De l'aide?
Disons que les cols sont:
| Col # | ColName | |
| 1 | date_export | |
| 2 | type de produit | |
| 3 | Numéro d'article | |
| 4 | recette | |
| 5 | date_run | |
| 6 | type_mesure | |
| 7 | Valeur | |
| 8 | Outil | |
| 9 | Cible | |
OK, donc certains de ces cols ne sont pas nécessaires et ils sont tous définitivement hors d'usage, uniquement du point de vue humain. Idéalement, j'aimerais que le script sélectionne et commande automatiquement quelque chose comme:
Col #: 2, 8, 4, 5, 6, 7, 9
et ensuite peut-être une boîte de dialogue utilisateur permettant à l'utilisateur de sélectionner une autre colonne à ajouter à la sortie reformatée s'il le souhaite.
Qu'est-ce que tu penses?
Re: import: beaucoup de colonnes supplémentaires. L'utilisateur sélectionne-t-il ceux qu'il veut?En supposant que je comprenne votre question:
// Open Sample Data Table
dt = Open( "$SAMPLE_DATA\Air Traffic.jmp" );
// Define list of columns to delete
DelList = {"Carrier Code","Flight Number"};
// Delete Columns
dt << Delete Columns(DelList); Re: import: beaucoup de colonnes supplémentaires. L'utilisateur sélectionne-t-il ceux qu'il veut?impressionnant! Qu'en est-il d'une liste prédéterminée de noms de colonnes? Comme mes tables de données viennent avec des dizaines ou des colonnes supplémentaires (souvent non vides).
sélectionnez colname (crap1, crap2, crap3 ...)
supprimer les colonnes sélectionnées
puis continuez pour permettre à l'utilisateur de sélectionner le reste coupé?
Re: import: beaucoup de colonnes supplémentaires. L'utilisateur sélectionne-t-il ceux qu'il veut?Voici un morceau de code que j'utilise pour créer un script de table qui zappera les colonnes vides lorsque je lis des données dans:
// add a table script that will remove empty columns
dt << Set Property( "Remove Empty Columns",
dt = Current Data Table();
lstToDelete = {};
For (i=1,i<=NCols(dt),i++,
col = Column(dt,i);
If (Col Number(col)==0,
InsertInto(lstToDelete,i)
)
);
If (NItems(lstToDelete)>0,
dt << Delete Columns(lstToDelete)
);
);Re: import: beaucoup de colonnes supplémentaires. L'utilisateur sélectionne-t-il ceux qu'il veut?J'aime beaucoup cela, en sélectionnant les cols souhaités, puis en les inversant et en supprimant les cols indésirables.
Avez-vous des conseils pour exécuter un prestep, où je peux faire une "suppression" en masse de cols pré-spécifiés pour réduire la sélection de l'utilisateur?
Malheureusement, mes fichiers de données contiennent quelques dizaines de colonnes inutiles pour des éléments inutiles.
Peut-être que quelque chose que je pourrais juste écrire au début de chaque dt = open (), pour supprimer les 'cols inutiles' connus?
Re: import: beaucoup de colonnes supplémentaires. L'utilisateur sélectionne-t-il ceux qu'il veut?dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// Get Column Names
ColNames = dt << Get Column Names("String");
// Open a window for user selection
NW1 = New Window("User Selection",
<< Modal,
V List Box(
Lineup Box(
Lb1 = List Box(ColNames);
)
),
H List Box(
Button Box("OK",
// Unload User Inputs
Rb1Val = Lb1 << Get Selected();
)
)
);
// Select Columns
for(i = 1, i <= N Items(ColNames), i ++,
If(Contains(Rb1Val,ColNames[i]),
Col = Column(dt,i); ;
Col << Set Selected(1);
);
);
// Delete Unwanted Columns
dt << Invert Column Selection ;
dt << Delete Columns ;Re: import: beaucoup de colonnes supplémentaires. L'utilisateur sélectionne-t-il ceux qu'il veut?Espérons que la nature du format de fichier étranger est stable. Vous pouvez essayer d’utiliser cet argument pour la fonction Open () lors de l’importation:
Select Columns( "col", ... )
En supposant que vous ayez stocké la référence de données dans une variable (telle que dt) à son ouverture, vous pouvez ensuite réorganiser les colonnes de manière itérative en utilisant ce modèle:
dt << Go to Column( col ref ) // select column to move
<< Move Selected Columns( ... ) // move column to new location
<< Clear Column Selection; //
J'espère que cette réponse vous fera avancer sur votre chemin.
Re: import: beaucoup de colonnes supplémentaires. L'utilisateur sélectionne-t-il ceux qu'il veut?Hé Marc,
Toutes les bonnes questions. J'aimerais pouvoir juste écrire une requête sur le front-end, mais la base de données de mon entreprise est verrouillée. Nous devons faire des demandes et nous sortons un fichier plat .csv contenant toutes ces colonnes inutiles et ces en-têtes mal nommés dans un ordre incorrect (comme 35 colonnes). Je cherche à obtenir un accès en lecture seule, mais le problème est différent.
Re: import: beaucoup de colonnes supplémentaires. L'utilisateur sélectionne-t-il ceux qu'il veut?Les fichiers source sont-ils plats ou relationnels? Quel est le type de fichier source? Quel type de fichiers importez-vous? Devez-vous importer le fichier entier?
Pouvez-vous interroger une base de données pour le résultat? Si c'est le cas, vous pouvez créer une requête pour vous donner ce que vous voulez.