Salut,
J'ai le problème suivant:
a) Je génère une table (appelons-la table dt) avec plusieurs colonnes. Cependant, je suis intéressé à ne regarder que le modèle spécifique (disons - "ABC @ XYZ") dans les noms de colonne avec deux autres colonnes (disons - "LCOL", "WCOL"). Je génère cette table. (Appel de cette table dtB)
Prochain
b) J'utilise la table dtB, tire sa colonne et utilise une boucle for pour générer un tableau récapitulatif pour chaque colonne qui correspond au modèle dans Col Name.
c) J'ai créé une table vide dt_sum_all
d) Maintenant, mon objectif est d'obtenir toutes les valeurs récapitulatives des colonnes qui correspondent au modèle dans une table avec la colonne LCOL et WCOL. (J'obtiens N tables pour N de ces colonnes, si je n'utilise pas la nouvelle table, mais ce n'est pas ce que je veux - Je veux 1 table )
e ) Aussi à la fin une fois que j'ai une seule table, je veux renommer les Cols (généralement, il ajoute SUM au début de chaque colonne), comme SUM ( ABC @ XYZ_1AS ) à ABC @ XYZ_1AS . Comme j'ai beaucoup de colonnes, je veux le faire en boucle ou similaire.
Ce que j'ai jusqu'à présent est le suivant:
dt = currentdatatable();
Wait(1);
colsd = dt << get column names( string );
pattern = "ABC@XYZ";
nd = N Items( colsd );
selCols = {"LCOL", "WCOL"};
For( i = 1, i <= nd, i++,
If( Contains( colsd[i], pattern ),
Insert Into( selCols, colsd[i] )
)
);
dtB = dt << Subset(
All rows,
Columns(selCols)
);
colNameList= dtB << get column names( string );
Wait(1);
dt_sum_all = New Table();
For( i = 1, i <= N Items( colNameList ), i++,
If( Contains( colNameList[i], pattern),
dt_sum = dtB << Summary(
Group( :LCOL, :WCOL ),
Sum(colNameList[i]),
Freq( "None" ),
Weight( "None" )
) << show window(0);
);
Data Table (dt_sum_all) << Update (
With(Data Table(dt_sum)),
//Match Columns(:LCOL = :LCOL, :WCOL=:WCOL)
);
////column(dt_sum, "SUM("||colNameList[i] || ")" ) << set name(colNameList[i]);
);
Le code ci-dessus ne fonctionne pas et je n'obtiens pas une table. Quelqu'un peut-il aider s'il vous plait.
Si je lis correctement votre code, vous souhaitez obtenir un tableau de données de données récapitulatives pour un ensemble de colonnes correspondant à un modèle de la table de données d'origine.
Je pense que vous travailliez beaucoup plus dur que nécessaire. Vous trouverez ci-dessous un exemple de script, utilisant la majeure partie de votre code, mais travaillant sur l'exemple de table de données Semiconductor Capability, où les noms des colonnes lot et wafer sont lot_id et wafer, plutôt que vos Lcol et Wcol. J'ai éliminé la table de données dtB, car à moins que vous n'en ayez besoin pour quelque chose plus tard dans le script, il n'est certainement pas nécessaire de la créer juste pour ensuite créer des données récapitulatives. Les données récapitulatives peuvent provenir directement de la table de données d'origine. En outre, il n'est pas nécessaire de résumer chaque colonne une par une. Toutes les colonnes peuvent facilement être résumées à la fois. Ainsi, aucun Updatie ne doit être exécuté. Enfin, il existe une option dans la plateforme de résumé, qui permettra de donner aux noms de colonne le même nom que le nom de colonne d'entrée, il n'est donc pas nécessaire de renommer les colonnes dans le tableau de résumé.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
Wait( 0 );
colsd = dt << get column names( string );
pattern = "PNP";
nd = N Items( colsd );
selCols = {"lot_id", "wafer"};
For( i = 1, i <= nd, i++,
If( Contains( colsd[i], pattern ),
Insert Into( selCols, colsd[i] )
)
);
dt_sum = dt << Summary(
Group( :lot_id, :wafer ),
Sum( colNameList[Index( 3, N Items( colNameList ) )] ),
Freq( "None" ),
Weight( "None" ),
link to original data table( 0 ),
statistics column name format( "column" )
);