Hallo zusammen,
Ich möchte Zeilen basierend auf den Einträgen ausgewählter Zeilen aus einer anderen Tabelle auswählen. Unten ein Codeausschnitt. Die letzte Zeile ist ungültig, sollte aber klarstellen, was ich meine.
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]);
Wie kann ich die letzte Zeile dynamisch schreiben, sodass ich dort so viele mit „&“ verbundene Bedingungen habe, wie Zeilen in der Tabelle DT ausgewählt sind? Ich könnte eine Schleife schreiben und Teilmengen iterativ filtern, aber das ist irgendwie lahm. Oder ich könnte die letzte Zeile als String zusammenstellen und sie analysieren und ausführen, aber das ist auch nicht schön. Gibt es eine elegante Möglichkeit, dies zu tun?
Ich denke, Sie könnten Matrizen, SQL, Gebäudeausdrücke usw. verwenden.
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
)