Salut tout le monde,
Je voudrais sélectionner des lignes en fonction des entrées des lignes sélectionnées dans une autre table. Ci-dessous un extrait de code. La dernière ligne n'est pas valide, mais elle devrait clarifier ce que je veux dire.
selected_row_idx = DT << Get Selected Rows;
measurement_starts = DT:MeasurementStart[selected_row_idx];
measurement_ends = DT:MeasurementEnd[selected_row_idx];
DTmeas << Select Where(measurement_starts[1] <= :TimeStamp <= measurement_ends[1] & measurement_starts[2] <= :TimeStamp <= measurement_ends[2] & ... & measurement_starts[n] <= :TimeStamp <= measurement_ends[n]);
Comment puis-je écrire la dernière ligne de manière dynamique, afin d'avoir autant de conditions liées à "&" que de lignes sélectionnées dans la table DT ? Je pourrais écrire une boucle et filtrer les sous-ensembles de manière itérative, mais c'est un peu nul. Ou je pourrais rassembler la dernière ligne sous forme de chaîne, l'analyser et l'exécuter, mais ce n'est pas bien non plus. Existe-t-il une manière élégante de procéder ?
Je pense que vous pourriez utiliser des matrices, SQL, créer une expression,...
Names Default To Here(1);
dt1 = New Table("Untitled",
Add Rows(3),
Compress File When Saved(1),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([1, 1, 5])),
New Column("B", Numeric, "Continuous", Format("Best", 12), Set Values([2, 3, 6]))
);
dt1 << Select Rows(1::3);
starts = dt1[dt1 << get selected rows, {"A"}];
ends = dt1[dt1 << get selected rows, {"B"}];
dt1 << clear select;
dt2 = New Table("Untitled 2",
Add Rows(5),
Compress File When Saved(1),
New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2, 3, 4, 5]))
);
dt2 << Select Where(
N Items(Loc((starts <= :Column 1)` + (ends >= :Column 1)` >= 2)) > 0
)