Datentabelle: Nachrichtenspalte vorhanden (Spaltenname)? (:green_heart:)☐ coole neue Funktion
☑ könnte vielen Benutzern helfen!
☑ behebt einen „Bug“
☐ schön zu haben
☐ niemand braucht es
Gibt es in meiner Datentabelle eine Spalte mit dem Namen „colname“ ?
Dies ist eine der Fragen, die in der Community am häufigsten gestellt werden:
https://community.jmp.com/t5/Discussions/Check-column-name-if-existing/mp/312011/highlight/true#M56...
https://community.jmp.com/t5/Discussions/How-to-check-if-list-of-columns-exist-and-report-those-that...
https://community.jmp.com/t5/Discussions/If-column-exists/td-p/348
https://community.jmp.com/t5/Discussions/how-to-creat-new-column-if-same-name-column-does-not-exist/...
https://community.jmp.com/t5/Discussions/Create-a-new-Row-column-only-if-it-does-not-exist/td-p/3091...
https://community.jmp.com/t5/Discussions/Determining-if-a-column-exists/mp/6268#M6267
https://community.jmp.com/t5/Discussions/Validate-column-name-exists-before-graphing/mp/5088#M5087
Daher scheint die derzeitige Umsetzung nicht unkompliziert genug zu sein.
Aber es ist noch interessanter – und birgt viele Gefahren.
Ein Benutzer, der die Stolpersteine im Zusammenhang mit JSL-Namenskonventionen nicht kennt, schreibt höchstwahrscheinlich nur
Contains( dt << Get Column Names(String), "age" )
in seinen Code. Ganz einfach ...
aber extrem gefährlich - siehe:
https://community.jmp.com/t5/Discussions/check-if-column-exists/mp/572468
Was wie seltsame Diskussionen einiger JSL-Scripting-Nerds aussieht, zeigt, dass die obige Aussage sicherlich in vielen Fällen funktioniert, aber:
schlägt fehl, wenn die Spaltennamen Leerzeichen, Großbuchstaben oder Sonderzeichen enthalten.
Um zu verhindern, dass Benutzer solch gefährlichen Code verwenden, ist es am besten, ihn zu „institutionalisieren“.
- d. h. den Benutzern eine einfache Lösung bieten, die alle Fallstricke automatisch berücksichtigt.
Mein Wunsch:
es sollte möglich sein, eine Datentabelle abzufragen:
dt << contains column("colname")
Diese Funktion kann alle Fallstricke berücksichtigen:
- compare with exact match - or check match for as name("colname")<FONT face="arial,helvetica,sans-serif">, unter Berücksichtigung von Leerzeichen</FONT>
- zwischen Klein- und Großbuchstaben unterscheiden oder nicht unterscheiden
- Sonderzeichen verarbeiten
Der Nutzen:
- weniger Fragen in der Community
- automatisch besserer Code.
- weniger Frustration.
weitere Wünsche eingereicht von 
Automatisierung und SkriptingBetreff: Datentabelle: Nachrichtenspalte vorhanden (Spaltenname)?Danke 
Betreff: Datentabelle: Nachrichtenspalte vorhanden (Spaltenname)? - Status geändert in: Ja, bleiben Sie dran!Development is exploring a solution: "eine Nachricht auf dem Tisch haben, die man direkt fragen kann, zdt << Has Column("age"), möglicherweise mit der Option, unterschiedliche Antworten zu geben, wenn Sie genaue Übereinstimmungen oder Namensübereinstimmungen (ohne Berücksichtigung von Leerzeichen und Groß-/Kleinschreibung) wünschen.
Wechseln zu „Ja, bleiben Sie dran“.
Betreff: Datentabelle << Spalte existiert („Name“)? – Status geändert zu: Wird untersuchtBetreff: Datentabelle << Spalte existiert („Name“)?Vielen Dank @hogi und @jthi für den Kommentar. Ändern Sie den Status in „Untersuchung“.
Betreff: Datentabelle << Spalte existiert („Name“)? - Status geändert in: BestätigtHallo @hogi , danke für deinen Vorschlag! Wir haben Ihre Anfrage erfasst und werden diese prüfen.
Betreff: Datentabelle << Spalte existiert („Name“)?Könnte es besser sein, JMP klar zu machen, dass es sich entweder um dieselben oder um unterschiedliche Spaltennamen handelt? Dies kann natürlich zu Problemen führen und ist daher möglicherweise nicht so einfach umzusetzen.
Hier ist etwas etwas verwirrend:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt:age << set name("a g e");
dt:age[1] = 999;
Show(Column(dt, "age")); //Column(dt, "age") = Column("a g e");
Show(dt:age[1]); //dt:age[1] = 999;
dt << New Column("age", Numeric, Ordinal);
Show(Column Name(2) == Column Name(6)); // Column Name(2) == Column Name(6) = 1; // Columns don't need unique names?
Show(Column(dt, "age")); //Column(dt, "age") = Column("age");
dt:age[1] = 9999;
Show(dt:age[1]); //dt:age[1] = 9999;
wait(1);
dt << Delete Column("age");
Show(Column(dt, "age")); //Column(dt, "age") = Column("a g e");
Show(dt:age[1]); //dt:age[1] = 999;
Folgen Spalten einer bestimmten Benennung? Folgende Namen müssen mit alphabetischen Zeichen oder Unterstrichen beginnen , Leerzeichen sind jedoch (manchmal) für Spalten wichtig. Vielleicht liegt das Problem (falls es eines gibt) einfach darin, wie die Spaltenreferenzierung funktioniert?