Hola,
Tengo una consulta de base de datos que devuelve una tabla grande, más de 200 columnas, y me gustaría limpiarla antes de trabajar con ella.
Las columnas tienen términos iniciales que significan la fuente de la herramienta de metrología como Raman, XRD, XRF, BET, PSA,...
Para cada uno de estos términos, me gustaría crear un grupo y utilizar el nombre de la lista anterior para que actúe como nombre del grupo.
por ejemplo, hay 20 columnas que comienzan con el término Raman y me gustaría que estuvieran todas agrupadas.
¿Cómo debo crear el script? Intenté crear una lista usando Nombre comienza con ("Raman") pero parece que devuelve una lista vacía.
Nota al margen: Le pregunté a ChatGPT pero fue inútil.
Andy
Esto depende en parte de sus datos, pero la idea general suele ser
- Obtener lista de tus columnas
- recorrer la lista mientras se recopilan las columnas en grupos apropiados
- Recorrer los grupos apropiados y crear los grupos de columnas
For Each() para bucles, Associative Array() para estructuras de datos y posiblemente Starts With() para buscar grupos (o Word(1,...))
Aquí es donde estoy empezando y no, esto no funciona.
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
Algunas preguntas:
- ¿Desea agrupar todas las columnas?
- ¿Sus columnas tienen un separador claro para el grupo, como un guión bajo (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);
Y un ejemplo completo basado en los ejemplos que tengo.
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);
);
