Ich möchte alle in einer JMP-Formel gefundenen Spaltennamenverweise in eine Liste extrahieren und insbesondere deren Spaltenabhängigkeiten identifizieren. JMP-Formeln können recht komplex sein; Sie könnten beispielsweise JSL-Code als Ausgabe erstellen, der Spaltennamen enthält. Diese Spaltennamen interessieren mich nicht, da die Formel nicht davon abhängt. Mich interessieren nur die Spaltennamen, die zur Berechnung des Ergebnisses verwendet werden. Gibt es eine einfache Möglichkeit, dies zu tun, ohne die Formel programmgesteuert zu analysieren?
Hier ist eine Skizze meines ursprünglichen Plans.
Wandeln Sie die Formel in eine Zeichenfolge um und suchen Sie nach drei Elementen: :,
!", \!".
- Entfernen Sie zunächst alle Anführungszeichen. Suchen Sie zuerst \!" ohne ein vorangehendes : und suchen Sie dann das passende \!" ohne vorangehendes : und ohne mehrfach maskierte Anführungszeichen. Erkennen Sie dies als Anführungszeichen in der Formel und entfernen Sie es (oder überspringen Sie es). Dann wiederholen Sie den Vorgang für die gesamte Formel
- Durchsuchen Sie dann die Zeichenfolge nach Namen
- Wenn : gefunden wird, fahren Sie fort, bis ein „namensbrechendes“ Zeichen wie z. B. ein Komma gefunden wird. Als einen der Namen im String-Format speichern
- Wenn
!" gefunden wird, fahren Sie fort, bis \!"n gefunden wird. Speichern Sie die Namenszeichenfolge als einen der Namen
- Deduplizieren Sie abschließend die Namensliste, damit sie eindeutig sind.
Gibt es eine elegantere Möglichkeit, dies zu tun?
Wenn nicht, was kann mit dem oben Gesagten schief gehen? Gibt es andere Möglichkeiten, einen Spaltennamen in einer Formel anzugeben?
Ich gehe davon aus, dass die Formel per traditionellem Point-and-Click im Formeleditor erstellt wurde und keinen JSL-Code verwendet. So würde beispielsweise JSL-Code, der Parse() in der Formel verwendet, um einen Spaltenverweis aufzulösen, außerhalb des Gültigkeitsbereichs liegen. Allerdings wäre es schön, wenn es das auch könnte
.
Hier sind einige Beiträge, die einige Ideen geben könnten Head Arg Rekursionsformel (Ich würde so etwas verwenden, um die String-Konvertierung zu vermeiden), Wie extrahiere ich automatisch den von der Formel verwendeten Spaltennamen im JSL-Code?