Ciao a tutti!
Sto riscontrando un problema in cui ho la Tabella dati 1 come mostrato di seguito con una colonna timestamp e varie colonne di dati
| Timestamp | Colonna A | Colonna B |
| 02/08/2021 11:45 | A1 | B1 |
| 02/08/2021 13:39 | A2 | B2 |
| 02/08/2021 23:37 | A3 | B3 |
| 13/02/2021 00:01 | A4 | B4 |
| 13/02/2021 16:00 | A5 | B5 |
| 13/02/2021 22:22 | A6 | B6 |
| 18/02/2021 09:00 | A7 | B7 |
| 18/02/2021 12:01 | A8 | B8 |
| 21/02/2021 09:15 | A9 | B9 |
| 21/02/2021 11:50 | A10 | B10 |
| 21/02/2021 15:00 | A11 | B11 |
E la Tabella dati 2 anch'essa con una colonna timestamp e corrispondenti colonne di dati
| Timestamp | Colonna C | Colonna D |
| 02/08/2021 11:24 | C1 | D1 |
| 13/02/2021 00:07 | C2 | D2 |
| 18/02/2021 10:29 | C3 | D3 |
| 21/02/2021 11:16 | C4 | D4 |
Vorrei unire insieme queste due tabelle di dati dove conservo la colonna timestamp della Tabella dati 1, ma unisco le colonne C e D dalla Tabella dati 2 alla Tabella dati 1 dove i dati vengono applicati a partire dall'ora indicata nel timestamp in Dati Tavolo 2.La colonna risultante sarebbe simile a questa:
| Timestamp | Colonna A | Colonna B | Colonna C | Colonna D |
| 02/08/2021 11:45 | A1 | B1 | C1 | D1 |
| 02/08/2021 13:39 | A2 | B2 | C1 | D1 |
| 02/08/2021 23:37 | A3 | B3 | C1 | D1 |
| 13/02/2021 00:01 | A4 | B4 | C1 | D1 |
| 13/02/2021 16:00 | A5 | B5 | C2 | D2 |
| 13/02/2021 22:22 | A6 | B6 | C2 | D2 |
| 18/02/2021 09:00 | A7 | B7 | C2 | D2 |
| 18/02/2021 12:01 | A8 | B8 | C3 | D3 |
| 21/02/2021 09:15 | A9 | B9 | C3 | D3 |
| 21/02/2021 11:50 | A10 | B10 | C4 | D4 |
| 21/02/2021 15:00 | A11 | B11 | C4 | D4 |
Grazie in anticipo per qualsiasi aiuto!
Naturalmente hai ragione @txnelson . Ho semplicemente guardato troppo in fretta. Ho modificato la mia risposta originale.
@Dan_Obermiller
2 righe non corrispondono in base alla data.La tabella corrispondente mostrata sembra essere basata sulla data precedente più vicina alla data target.
Nel tuo piccolo esempio sembra che tu stia semplicemente abbinando in base alla data, non all'ora. Potrebbe invece funzionare?
EDIT: puoi tranquillamente ignorare questo commento. Avevo guardato l'esempio troppo velocemente.
Ecco uno script che duplicherà la corrispondenza che hai nel tuo esempio.

La parte operativa effettiva dello script è inferiore a 20 righe.Per completezza, ho incluso il JSL che crea le tabelle dati di esempio originali all'inizio dello script.Ciò ti consente semplicemente di tagliare e incollare lo script e dovrebbe essere eseguito senza errori.
Names Default To Here( 1 );
dt = New Table( "Base",
Add Rows( 11 ),
New Column( "Timestamp",
Numeric,
"Continuous",
Format( "m/d/y h:m", 19 ),
Input Format( "m/d/y h:m" ),
Set Values(
[3695629500, 3695636340, 3695672220, 3696019260, 3696076800, 3696099720, 3696483600, 3696494460, 3696743700,
3696753000, 3696764400]
)
),
New Column( "Column A",
Character( 16 ),
"Nominal",
Set Values( {"A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11"} )
),
New Column( "Column B",
Character( 16 ),
"Nominal",
Set Values( {"B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11"} )
)
);
dt2 = New Table( "Match",
Add Rows( 4 ),
New Column( "Timestamp",
Numeric,
"Continuous",
Format( "m/d/y h:m", 19 ),
Input Format( "m/d/y h:m" ),
Set Values( [3695628240, 3696019620, 3696488940, 3696750960] )
),
New Column( "Column C", Character( 16 ), "Nominal", Set Values( {"C1", "C2", "C3", "C4"} ) ),
New Column( "Column D", Character( 16 ), "Nominal", Set Values( {"D1", "D2", "D3", "D4"} ) )
);
// Here is the actual matching code
dt << New Column("TheRow");
dt2 << New Column("TheRow", formula(Row()));
// Find the row in the Match data table that is to be paired with the row
// in the Base data table
For( i = 1, i <= N Rows( dt ), i++,
dt:theRow[i] = Max( dt2 << get rows where( dt2:timestamp <= dt:Timestamp[i] ) )
);
// Update data tables
Data Table( "Base" ) << Update(
With( Data Table( "Match" ) ),
Match Columns( :TheRow = :TheRow )
);
// Delete column: TheRow
Data Table( "Base" ) << Delete Columns( :TheRow );
// Delete column: TheRow
Data Table( "Match" ) << Delete Columns( :TheRow );