Umgang mit Platzhaltern zum Verbinden von TabellenIch muss mehrere Tabellen verknüpfen, aber die Spalte, in der ich verknüpfen muss, enthält Platzhalter für eine der Tabellenspalten. Die Tische sind nicht übermäßig groß, daher muss es nicht sehr effizient sein.
In der Tabelle 1-SCHLÜSSEL-Spalte unten könnte an der Stelle, an der sich die Fragezeichen befinden, ein beliebiges einzelnes alphanumerisches Zeichen stehen. In den Klammern stehen ODER-Anweisungen, es könnte also 1 oder 2 oder 3 oder 4 sein.
So sollte es beispielsweise mit den Zeilen 1 und 2 von Tabelle 2 verknüpft werden, da die Platzhalter übereinstimmen würden. Aber Zeile 3 hat eine 9, während das ODER-Muster nur 1|2|3|4 hat.
Ich habe darüber nachgedacht, die Zeile für jede mögliche alphanumerische Kombination zu duplizieren, in der sich die Fragezeichen befinden, und für jede Kombination in den ODER-Klammern würde die Verknüpfung dann funktionieren – ich bin mir nicht sicher, wie das geht.
Tabelle 1
| SCHLÜSSEL | DATEN |
| ABC?Y?[1|2|3|4]Z | 99999 |
Tabelle 2
| SCHLÜSSEL | DATUM |
| ABC1YA1Z | 14.08.2019 22:10:10 Uhr |
| ABCZYB4Z | 14.08.2019 23:11:11 Uhr |
| ABC1YA9Z | 14.08.2019 12:12:12 Uhr |
Ergebnistabelle:
| SCHLÜSSEL | DATUM | DATEN |
| ABC1YA1Z | 14.08.2019 22:10:10 Uhr | 99999 |
| ABCZYB4Z | 14.08.2019 23:11:11 Uhr | 99999 |
| ABC1YA9Z | 14.08.2019 12:12:12 Uhr | . |
Betreff: Umgang mit Platzhaltern beim Verbinden von TabellenVielen Dank, Jara95 – das kommt der Lösung sehr nahe. Ich habe einige kleine Änderungen vorgenommen. Ich bin mir nicht sicher, wie Sie mit dieser Methode auf Spaltenzeilen verwiesen haben:
dt1[r,"DATA"]
Ich bin auf diese Methode umgestiegen und sie funktioniert:
dt1:DATA[r]
Ich habe auch festgestellt, dass man mit Regex den OP verlassen kann | Die Bediener sind vorhanden und müssen nicht ersetzt werden.
Eine letzte Sache, die ich geändert habe, ist die For-Schleife von N Col nach N Row.
Mein endgültiges Skript sieht also ungefähr so aus:
dt1 << New Column( "KEY_reg", character, formula( Substitute( dt1:KEY, "?", "[A-Z0-9]" ) ) );
dt2 << New Column( "DATA" );
For( r = 1, r <= N Row( dt1 ), r++,
r1 = dt2 << Get Rows Where( !Is Missing( Regex( dt2:KEY, dt1:KEY_reg[r] ) ) );
dt2:DATA[r1] = dt1:DATA[r];
);
Danke noch einmal!
Betreff: Umgang mit Platzhaltern beim Verbinden von TabellenSie können Ihr KEY-Format in das reguläre Ausdrucksformat konvertieren.
dt1 ist Tabelle1 und dt2 ist Tabelle2.
dt1<<NEW column=""></NEW>
Ich habe versucht, das zu verwenden aktualisieren Befehl, aber nicht erfolgreich.
dt2<< update(with(dt1),match columns(regex(:KEY,:KEY_reg ))) //[NOT WORKING]
Hier finden Sie manuelle Möglichkeiten, die Arbeit zu erledigen.
dt1<<NEW column=""></NEW>
Danke.