dt << Update // Syntaxrisiko!<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo,
Ich habe einen potenziell gefährlichen "Fehler" in der Aktualisierungsfunktion gefunden. Wenn Sie eine Datentabelle mit "Nach übereinstimmenden Spalten" aktualisieren und das abschließende "s" weglassen, wird dieses Skript zeilenweise aktualisiert. Dies ist ein einfacher Fehler, der schwer zu fassen ist (da kein Fehler ausgegeben wird). Kann dies beim nächsten JMP-Update behoben werden? Dieses Problem wurde in JMP12 gefunden.
Vielen Dank!!
Namensvorgabe bis hier ( 1 ) ;
dt = Öffnen ( "$ SAMPLE_DATA / Big Class.jmp" ) ;
dt << Neue Spalte ( "Eindeutige ID" .
Charakter .
Nominal .
Formel ( : Name || "," || Verkohlen ( : Alter ) || "," || : Sex || "," || Verkohlen ( : Höhe ) || "," || Verkohlen ( : Gewicht ) )
) ;
dt << Neue Spalte ( "Nummer" . Numerisch . Kontinuierlich . Format ( "Beste" . 12 ) . Formel ( Sequenz ( 1 . N Reihen () . 1 . 1 ) ) ) ;
Säule ( dt . "Eindeutige ID" ) << Formel löschen ;
Säule ( dt . "Nummer" ) << Formel löschen ;
dt2 = dt << Teilmenge ( Säulen ( "Eindeutige ID" . "Nummer" ) ) ;
dt2 << Sortieren ( Tabelle ersetzen . Durch ( : Nummer ) . Auftrag ( Absteigend ) ) ;
dt2 << Neue Spalte ( "Einige Spalte" . Charakter . Nominal . Legen Sie jeden Wert fest ( "x" ) ) ;
dt << Aktualisieren ( Mit ( dt2 ) . Durch übereinstimmende Spalte ( : Eindeutige ID == : Eindeutige ID ) ) ;
// dt << Update (mit (dt2), durch übereinstimmende Spalten (: UniqueID ==: UniqueID));
dt << Bringen Sie das Fenster nach vorne ;
Re: dt << Update // Syntaxrisiko!Die Forderung nach einem bestimmten, präzisen Wortlaut für JMP-Plattformen, -Elemente und -Nachrichten gilt für JMP. Sie müssen gewissenhaft auf die korrekte Angabe der Syntax achten.
Re: dt << Update // Syntaxrisiko!Hallo Roboter .
Ich kann bestätigen, dass dies auch in JMP11 geschieht.
Das Problem bleibt auch dann bestehen, wenn Sie stattdessen "Übereinstimmungsspalte" verwenden. Die Wahrheit ist, dass jede Kombination von Buchstaben, die nicht "durch übereinstimmende Spalten" oder "übereinstimmen mit Spalten" sind, dazu führt, dass JMP es ignoriert und zeilenweise aktualisiert wird (Standardeinstellung, sofern nicht durch Spalten angegeben).
dt << Aktualisieren ( Mit ( dt2 ) . Übereinstimmungsspalte ( : Eindeutige ID == : Eindeutige ID ) ) ; // noch nach Reihe übereinstimmen
// dt << Aktualisieren ( Mit ( dt2 ) . Spalten stimmen ( : Eindeutige ID == : Eindeutige ID ) ) ; // das funktioniert gut - nach spalten
// dt << Aktualisieren ( Mit ( dt2 ) . Msfgsdfsfgatvvch-Spalte ( : Eindeutige ID == : Eindeutige ID ) ) ; // auch keine Fehlermeldung - Übereinstimmung von Zeile zu Zeile
Was für eine Bedrohung.
Der einzige Trost ist, dass die meisten Leute, einschließlich mir, fast nie den Aktualisierungsbefehl schreiben, sondern ihn einfach von JMP erhalten, nachdem er manuell ausgeführt wurde. Ansonsten wären inzwischen einige unangenehme Konsequenzen verflogen.