Script - Trabajar con la tabla de datos de la consulta OBBCHola a todos -
Estoy trabajando con dos conjuntos de datos almacenados en la base de datos de Microsoft Access, que obtengo a través de consultas ODCB. Necesito unir las dos tablas de datos resultantes, antes de realizar más manipulaciones de datos.
He escrito todo el proceso, sin embargo, no se ejecuta completamente a la vez. Siempre tengo que ejecutar primero el script para las dos consultas ODCB, luego ejecutar mi script para unir tablas y otras manipulaciones.
De lo contrario, aparece un mensaje de error: " no se puede ubicar la tabla de datos en el acceso o evaluación de la 'tabla de datos', Tabla de datos / * ### * / ("qStreams") "
("qStreams" es una de las dos tablas que obtuve de la consulta ODCB).
Creo que es posible que deba agregar algún script para almacenar / declarar las tablas de datos que obtengo de las consultas de ODCB para poder usarlo más tarde, y aquí es donde estoy atascado, porque no estoy muy familiarizado con el script JSL (este es mi primer guión en realidad).
Gracias por tu ayuda.
ScriptingRe: Script - Trabajar con la tabla de datos de la consulta OBBCHola @JRS ,
Intente retener una referencia a las tablas de datos que abre con cada conexión ODBC y utilícelas en lugar de llamar por su nombre, así:
dt1 = Open Database( "DSN=My Data Source Name", "SELECT * FROM table1" );
dt2 = Open Database( "DSN=My Data Source Name", "SELECT * FROM table2" );
dt1 << Join(
With( dt2 ),
...
);
Re: Script - Trabajar con la tabla de datos de la consulta OBBCMuchas gracias por la rápida respuesta.
Entiendo el concepto pero no puedo aplicarlo para mi caso específico. Mi secuencia de comandos de consulta se ve así en este momento:
New SQL Query(
Version( 130 ),
Connection(
"ODBC:DBQ=C:\Users\E822710\Desktop\ROTF\Database For JMP\Results.Mdb;DefaultDir=C:\Users\E822710\Desktop\ROTF\Database For JMP;Driver={Microsoft Access Driver (*.mdb, *.accdb)};DriverId=25;FIL=MS Access;FILEDSN=C:\Users\E822710\Desktop\ROTF\Database For JMP\Results.Mdb.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"
),
QueryName( "qProperties" ),
Select(
Column( "CaseID", "t1", Analysis Type( "Nominal" ) ),
Column( "StreamID", "t1", Analysis Type( "Nominal" ) ),
Column( "StreamTag", "t1" ),
Column( "StreamDescription", "t1" ),
Column( "QualityID", "t1", Analysis Type( "Nominal" ) ),
Column( "QualityTag", "t1" ),
Column( "QualityDescription", "t1" ),
Column( "Value", "t1", Alias( "StreamQualityValue" ) ),
Column( "OriginDescription", "t1", Alias( "StreamOriginDescription" ) )
),
From( Table( "RW_StreamQualities", Alias( "t1" ) ) ),
Where(
In List(
Column( "QualityTag", "t1" ),
{"CRB"},
UI( SelectListFilter( ListBox, Base( "Categorical" ) ) )
)
),
Order By(
Column( "CaseID", "t1", Order( "Ascending" ) ),
Column( "StreamReportOrder", "t1", Order( "Ascending" ) ),
Column( "QualityReportOrder", "t1", Order( "Ascending" ) )
)
) << Run;
Me doy cuenta de que debería haber compartido mi guión de inmediato.
Apreciamos su orientación adicional.
Re: Script - Trabajar con la tabla de datos de la consulta OBBCEstablecería una variable igual al valor de Nueva consulta SQL.Usando las funciones de nivel más alto de su secuencia de comandos, podría verse así:
//Get data
dtqStreams = New SQL Query( ... ) << Run;
dtqProperties = New SQL Query( ... ) << Run;
// Join both Data Tables
dtJoined = dtqStreams << Join( With( dtqProperties ), ... );
// Set column properties
dtJoined:"StreamFeedFlag"n << Add Column Properties( ... );
// Add new columns
dtJoined << New Column( ... );
// Make graphs from your joined data table
dtJoined << Graph Builder( ... );
Re: Script - Trabajar con la tabla de datos de la consulta OBBCHola -
Aún teniendo algunos problemas para unir ambas tablas, aquí está el script que implementé después de su publicación:
// Join both Data Tables
dtJoined = dtqStreams << Join(
With( dtqProperties ),
Merge Same Name Columns,
Match Flag( 0 ),
By Matching Columns( :CaseID = :CaseID, :StreamID = :StreamID ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 ),
Output Table( "UnitBalance.HY%" )
);
Pero todavía da un error:
