¡Hola a todos!
Tengo un problema donde tengo la Tabla de datos 1 como se muestra a continuación con una columna de marca de tiempo y varias columnas de datos.
| Marca de tiempo | Columna A | Columna B |
| 08/02/2021 11:45 | A1 | B1 |
| 08/02/2021 13:39 | A2 | B2 |
| 08/02/2021 23:37 | A3 | B3 |
| 13/02/2021 12:01 | A4 | B4 |
| 13/02/2021 16:00 | A5 | B5 |
| 13/02/2021 22:22 | A6 | B6 |
| 18/02/2021 9:00 | A7 | B7 |
| 18/02/2021 12:01 | A8 | B8 |
| 21/02/2021 9:15 | A9 | B9 |
| 21/02/2021 11:50 | A10 | B10 |
| 21/02/2021 15:00 | A11 | B11 |
Y la Tabla de datos 2 también con una columna de marca de tiempo y las columnas de datos correspondientes.
| Marca de tiempo | Columna C | Columna D |
| 08/02/2021 11:24 | C1 | D1 |
| 13/02/2021 12:07 | C2 | D2 |
| 18/02/2021 10:29 | C3 | D3 |
| 21/02/2021 11:16 | C4 | D4 |
Me gustaría unir estas dos tablas de datos donde conservo la columna de marca de tiempo de la Tabla de datos 1, pero unir las columnas C y D de la Tabla de datos 2 a la Tabla de datos 1 donde los datos se aplican a partir de la hora indicada en la marca de tiempo en Datos. Tabla 2.La columna resultante se vería así:
| Marca de tiempo | Columna A | Columna B | Columna C | Columna D |
| 08/02/2021 11:45 | A1 | B1 | C1 | D1 |
| 08/02/2021 13:39 | A2 | B2 | C1 | D1 |
| 08/02/2021 23:37 | A3 | B3 | C1 | D1 |
| 13/02/2021 12: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 9:00 | A7 | B7 | C2 | D2 |
| 18/02/2021 12:01 | A8 | B8 | C3 | D3 |
| 21/02/2021 9:15 | A9 | B9 | C3 | D3 |
| 21/02/2021 11:50 | A10 | B10 | C4 | D4 |
| 21/02/2021 15:00 | A11 | B11 | C4 | D4 |
¡Gracias de antemano por cualquier ayuda!
Por supuesto que tienes razón @txnelson . Miré demasiado rápido. He editado mi respuesta original.
@Dan_Obermiller
2 de las filas no coinciden según la fecha.La coincidencia de la tabla que se muestra parece basarse en la fecha anterior más cercana a la fecha objetivo.
En su pequeño ejemplo, parece que solo está haciendo coincidir la fecha, no la hora. ¿Podría eso funcionar en su lugar?
EDITAR: Puedes ignorar este comentario con seguridad. Había mirado demasiado rápido el ejemplo.
Aquí hay un script que duplicará la coincidencia que tiene en su ejemplo.

La parte de trabajo real del guión tiene menos de 20 líneas.Para completar, he incluido el JSL que crea las tablas de datos de ejemplo originales al comienzo del script.Eso le permite simplemente cortar y pegar el script y debería ejecutarse sin errores.
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 );