Extraiga datos utilizando cadenas SQL y JMP en un script JSLHola a todos.
Estoy accediendo a una determinada base de datos usando SQL desde un script JSL.
Para extraer los datos que quiero, necesito proporcionar una especificación.
La especificación viene en forma de lista o matriz en JMP/JSL.
Si escribo manualmente los nombres de los elementos individuales, funciona. =>
/* Fetch Single Items from Database*/
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN ('A','B','C','D')");Pero, dado que los elementos pueden ser miles, necesito encontrar una manera de usar un solo nombre que represente una lista (o una matriz) de los elementos.
Por supuesto, así no funciona. =>
/* Fetch Data from Data Table*/
Items_M = :Items << get as matrix();
/* Fetch Data from Database*/
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN ('^Items_M^')");Cuál es el lo más simple manera de hacer esto?
¡Gracias!
Acceso a los datosRe: Extraer datos usando SQL y cadena JMP en script JSL¡Gracias!
Esto también funciona. ¡Y es muy útil!
Mejor,
valerio
Re: Extraer datos usando SQL y cadena JMP en script JSLCambié por ejemplo para usar Artículos Concatenados función que hace el trabajo de convertir una lista en una cadena separada por comas. Su código usó ^^, que es la forma inteligente de realizar una inserción, pero solo funciona en conjunto con el Insertar evaluación función.
Re: Extraer datos usando SQL y cadena JMP en script JSLAsí es como suelo hacerlo:
- construir una lista única de valores de columna
- alimentando esa lista en un sql
- recuperar datos de la base de datos en una nueva tabla
Hasta ahora conozco la forma más sencilla de realizar esta tarea y la uso mucho.
Esto lo he implementado en mi menú, para tenerlo a mano rápidamente.
// take unique values from the column :items
dt = open("$SAMPLE_DATA\Big Class.jmp");
summarize( Current Data Table(), item_lst = by( :NAME /* :item */ ) );
// show list
show(item_lst);
// prepare list for sql
item_lst_str=substitute (char(item_lst),"{","(","}",")","\!"","'");
// open SQL Query with inserted item_lst
New SQL Query(
Connection(
"ODBC:DSN=DSN_NAME;UID=user;DBQ=database;" // connection string to be modified
),
QueryName( "ITEMS_Query" ),
CustomSQL( eval insert("SELECT * from database_table dt where dt.item in ^item_lst_str^;") )
) << modify;
// or directly run if neccessary
// ) << Run;Re: Extraer datos usando SQL y cadena JMP en script JSL¡Muchas gracias!
Eso es lo que estaba buscando... No funcionaría durante el fin de semana porque tenía acceso inestable a la base de datos.
Gracias de nuevo.
Re: Extraer datos usando SQL y cadena JMP en script JSLNo puedo decir, ¿qué es? lo más simple , pero así es como lo hago:
// for test purposes
lstItems = {"A","B","C","D"};
// build a comma separated list
strItems = ConcatItems(lstItems,",");
/* Fetch Data from Database*/
eval(parse(evalinsert("\[
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN (^strItems^)")
]\")));;