Comment créer une colonne d'indicateur pour les données doubles avec une formuleJe souhaite créer une colonne d'indicateur de formule pour les données doubles en appliquant le code JSL suivant:
dt << Clear Column Selection();
dt << Select Duplicate Rows();
dt << Name Selection in Column( Selected( 1 ), Unselected( 0 ) );
dt << Clear Select();
Bien que j'obtienne les bons résultats, le code crée beaucoup de messages d'erreur. Ce serait formidable si le code pouvait être amélioré.
Re: Comment créer une colonne d'indicateur pour les données doubles avec une formuleJ'espère qu'un membre de la communauté pourra résoudre votre question mieux que la méthode que j'ai utilisée ci-dessous. Compte tenu de ce que vous voulez, il y a des problèmes contradictoires lorsque vous essayez d'utiliser la capacité de sélection de la table de données, mais vous souhaitez ensuite effacer les sélections. Cela obligerait à recalculer la formule. Donc, ce que j’ai fait, c’est de faire en sorte que la formule crée un sous-ensemble du tableau de données, effectue vos calculs sur le tableau de données du sous-ensemble (isolement des sélections), puis lit les résultats du sous-ensemble dans le tableau de données original .... puis en supprimant la table de données sous-réglée. Regardez si vous comprenez ce que je fais. Cela semble fonctionner.
If( Row() == 1,
dt = Current Data Table();
dt << Select Columns( :Column 1, :Column 2 );
dt2 = dt << subset(
private,
dt,
selected rows( 0 ),
selected columns( 1 )
);
dt2 << Select Duplicate Rows();
dt2 << Name Selection in Column(
Column Name( "MultipleData" ),
Selected( 1 ),
Unselected( 0 )
);
);
x = dt2:MultipleData[Row()];
If( Row() == N Rows( dt ),
dt << clear column selection;
Close( dt2, nosave );
);
x;
Re: Comment créer une colonne d'indicateur pour les données doubles avec une formuleSalut Jim,
Merci pour votre aide. J'ai essayé de simplifier mon sujet. Mon objectif est de créer une colonne dans laquelle les multiples données sont adressées. J'ai pu faire cela avec le JSL suivant:
Names Default To Here( 1 );
dt = Current Data Table();
dt << Select Columns( :Column 1, :Column 2);
dt << Select Duplicate Rows();
dt << Name Selection in Column(
Column Name( "MultipleData" ),
Selected( 1 ),
Unselected( 0 ));
dt << Clear Select();
pour plusieurs données des colonnes 1 et 2 du fichier joint. Cela fonctionne bien. Cependant, comme les fichiers de travail sont fréquemment mis à jour avec de nouvelles données via SQL, je préférerais créer une formule Column "MultipleData".
Malheureusement, je ne reçois que des zéros, si votre dernier code est appliqué. Quelle pourrait être une solution?
Re: Comment créer une colonne d'indicateur pour les données doubles avec une formuleOK ...... mon commentaire précédent reposait sur l'hypothèse que le code était exécuté en code ouvert, plutôt qu'en tant que formule. En utilisant ceci comme formule, il y a quelques inquiétudes.
- Le pointeur sur la table de données, dt, doit être défini dans la formule, si vous voulez le référencer.
- Vous utilisez des fonctions qui se déplacent automatiquement dans toutes les lignes lorsqu'elles sont exécutées. Les formules parcourent également toutes les lignes d'une table de données et exécutent la formule une fois pour chaque ligne. Par conséquent, si vous utilisez le code comme vous le faites, cela signifie que vous exécutez la "Sélection de lignes en double" encore et encore. En réalité, vous ne devez l'exécuter qu'une seule fois.
- La ligne rouge pour votre première ligne dans la formule est vraiment un avertissement, pas une erreur.
Vous trouverez ci-dessous une version de votre code que je voudrais utiliser si je l’utilise comme formule.
If( Row() == 1,
dt = Current Data Table();
dt << Clear Column Selection();
dt << Select Duplicate Rows();
dt << Name Selection in Column( Selected( 1 ), Unselected( 0 ) );
dt << Clear Select();
);
Je ne comprends pas vraiment pourquoi vous voudriez mettre cela dans une colonne de formule, car la colonne dans laquelle vous la placez contiendra toutes les valeurs manquantes ....... vous voudrez peut-être repenser votre processus.
Re: Comment créer une colonne d'indicateur pour les données doubles avec une formulePremier
Dans l'éditeur de formule, la première ligne de code est marquée par la ligne rouge.
Seconde
Dans le cas où la formule est appliquée, une fenêtre contextuelle contenant les messages tels que "Envoie des objets pouvant être scriptés ...; Envoyer, dt << / * ### * /" ou "Sélection () / * / ### *" apparaît. / "
Re: Comment créer une colonne d'indicateur pour les données doubles avec une formuleVotre code semble bon ...... quelles erreurs obtenez-vous?
Re: Comment créer une colonne d'indicateur pour les données doubles avec une formuleSalut Jim,
Merci pour la solution. J'ai testé votre code avec une colonne de formule, sur une grande base de données (environ 100 000 lignes et 100 colonnes). Cela a bien fonctionné.
Ma solution est le code JSL suivant:
Names Default To Here( 1 );
dt = Current Data Table();
//Delete preveious version of the indicator column
dt << Delete Columns("MultipleData");
wait(2);
//Create the new version of the indicator column
dt << Select Columns( :Column 1, :Column 2);
dt << Select Duplicate Rows();
dt << Name Selection in Column(
Column Name( "MultipleData" ),
Selected( 1 ),
Unselected( 0 ));
dt << Clear Select();
dt << Clear Column Selection();Comme je l'ai mentionné précédemment, une solution de formule, comme votre code, est préférable. C'est plus pratique si le jeu de données est mis à jour.