Skript verketten SpaltenHallo
Ich habe ein Skript zum Verketten von Spalten in Spalte "PIN_NAME" geschrieben.
Mein Problem ist, dass ich keine konstante Anzahl von Spalten habe.
Ich sollte die Spalte von Test_name 10 bis Test_name 15 verketten, aber manchmal habe ich nur Test_name 10 bis Test_name 13 (zum Beispiel)
und ich habe einen Fehler erhalten, weil das Skript versucht, Test_Name 14 und Test_Name 15 zu verketten, die nicht existieren.
Können Sie mir bei diesem Problem helfen?

Column(dt_split,"PIN_NAME") << Formula(Char(:TEST_NAME 10 || " " ||
:TEST_NAME 11 || " " ||
:TEST_NAME 12 || " " ||
:TEST_NAME 13 || " " ||
:TEST_NAME 14 || " " ||
:TEST_NAME 15)
);
SkripterstellungFensterBetreff: Skript verketten SpaltenDies erfordert, dass die interessierenden Spalten Zeichenspalten sind, Sie über JMP16 verfügen und die Spalten Regex „Column \d{2}“ übergeben.
Grund Idee
- Liste der Spaltennamen abrufen
- Erstellen Sie eine Liste mit Spaltennamen, an denen Sie interessiert sind, indem Sie einen Filter verwenden (ich verwende Regex).
- Bilden Sie den Ausdruck für die Formel mit der Liste aus 2.
- Verwenden Sie Eval(EvalExpr()), um es mit einer Formel zu einer neuen Spalte hinzuzufügen
Names Default To Here(1);
dt = New Table("Untitled 2",
Add Rows(0),
Compress File When Saved(1),
New Column("Column 1", Character, "Nominal", Set Values({"a"})),
New Column("Column 2", Character, "Nominal", Set Values({"b"})),
New Column("Column 10", Character, "Nominal", Set Values({"c"})),
New Column("Column 11", Character, "Nominal", Set Values({"d"})),
New Column("Column 12", Character, "Nominal", Set Values({"e"}))
);
col_names = dt << Get Column Names(Character, "String");
list_expr = Expr(List());
For Each({col_name}, col_names,
If(!IsMissing(Regex(col_name, "Column \d{2}")),
Insert Into(list_expr, Name Expr(AsColumn(Column(dt, col_name))));
);
);
// show(Name Expr(list_expr));
Eval(EvalExpr(
dt << New Column("PINNAME", Character, Nominal,
Formula(Concat Items(Expr(list_expr), " "))
);
));Betreff: Skript zum Verketten von SpaltenWenn Sie Jmp17 haben, ist alles viel einfacher.
Anschließend können Sie eine Funktion aus Neue Formelspalte aufrufen - keine Einschränkung auf Spalten vom Typ Zeichen:)
Data Table( "Big Class" ) << New Formula Column(
Operation( Category( "Character" ), "Concatenate with Space" ),
Columns( :name, :age, :sex, :height, :weight )
);
Noch besser: Sie können sogar Varianten verwenden, die im Rechtsklickmenü „Neue Formelspalte“ deaktiviert sind.
neues Formelspaltenmenü - Varianten nicht deaktivieren
wie Verkettung numerischer Einträge und Zählen von Zeichenspalteneinträgen:
Data Table( "Big Class" ) << New Formula Column(
Operation( Category( "Character" ), "Concatenate with Space" ),
Columns( :height, :weight )
);
);
Data Table( "Big Class" ) << New Formula Column(
Operation( Category( "Aggregate" ), "Count" ),
Columns( :name ),
Group By( :sex )
);
im Rechtsklickmenü „Neue Formelspalte“ deaktiviert – ARGH!!!!