Salut,
J'ai une requête de base de données qui renvoie une grande table, plus de 200 colonnes, et j'aimerais la nettoyer avant de travailler dessus.
Les colonnes contiennent des termes initiaux qui signifient la source de l'outil de métrologie tel que Raman, XRD, XRF, BET, PSA,...
Pour chacun de ces termes, je voudrais créer un groupe et utiliser le nom de la liste ci-dessus comme nom du groupe.
par exemple, il y a 20 colonnes qui commencent par le terme Raman et je voudrais qu'elles soient toutes regroupées.
Comment dois-je écrire ce script ? J'ai essayé de créer une liste en utilisant Name begins with("Raman") mais cela semble renvoyer une liste vide.
Note complémentaire : j'ai demandé à ChatGPT mais cela n'a servi à rien.
Andy
Cela dépend en partie de vos données, mais l’idée générale est généralement la suivante
- Obtenez la liste de vos colonnes
- parcourir la liste tout en collectant les colonnes dans des groupes appropriés
- faites une boucle sur les groupes appropriés et créez les groupes de colonnes
For Each() pour la boucle, Associative Array() pour la structure de données et éventuellement Starts With() pour la vérification des groupes (ou Word(1,...))
C'est là que je commence et non, cela ne fonctionne pas.
Names Default to Here(1);
dt = Current Data Table();
CL = dt << Get Column Names();
Raman={};
For Each ( {value,index},CL,if(starts with(value,"Raman"),Raman<<INSERT item=""></INSERT>Next steps
Andy
Quelques questions:
- Souhaitez-vous regrouper toutes les colonnes ?
- Vos colonnes ont-elles un séparateur clair pour le groupe tel qu'un trait de soulignement (Raman_)
Names Default To Here(1);
dt = Current Data Table();
CL = dt << Get Column Names();
Raman = {};
For Each({value}, CL,
If(Starts With(value, "Raman"),
Insert Into(Raman, value);
);
);
dt << Group Columns("Raman", Raman);
Et un exemple complet basé sur les exemples que j'ai
Names Default To Here(1);
dt = New Table("Untitled 2",
Add Rows(1),
Compress File When Saved(1),
New Column("Raman1", Numeric, "Continuous", Format("Best", 12), Set Values([.])),
New Column("Raman2", Numeric, "Continuous", Format("Best", 12), Set Values([.])),
New Column("XRD1", Numeric, "Continuous", Format("Best", 12), Set Values([.])),
New Column("Raman3", Numeric, "Continuous", Format("Best", 12), Set Values([.])),
New Column("XRD2", Numeric, "Continuous", Format("Best", 12), Set Values([.]))
);
collist = dt << Get Column Names("String");
aa_groups = Associative Array();
aa_groups["Raman"] = {};
aa_groups["XRD"] = {};
For Each({groupname}, aa_groups << get keys,
For Each({value}, collist,
If(Starts With(value, groupname),
Insert Into(aa_groups[groupname], value);
);
);
);
For Each({{groupname, cols}}, aa_groups,
dt << Group Columns(groupname, cols);
);
