Hola a todos,
Estoy escribiendo un script donde selecciono un subconjunto de una tabla de datos basándome en ciertos criterios:
Ejemplo dt es mi tabla de datos con la columna: Error_ID
Introduje: "dt_subset=dt< Ahora bien, supongamos que la tabla de datos dt no tiene filas con Error_ID==0, entonces el subconjunto dt está vacío.
Habría esperado que un dt_subset fuera una nueva tabla de datos con las mismas columnas que la tabla dt pero 0 filas, de modo que si luego verifico si "If( !Empty(dt_subset)...)" obtengo falso y no continúo trabajando en la tabla dt_subset vacía.
En cambio, obtengo un error si intento comprobar si dt_subset está vacío.
Básicamente, lo que quiero hacer es comprobar si la selección está vacía. ¿Tienes alguna solución?
¡Gracias por su ayuda!
Si solo desea comprobar si hay filas seleccionadas, puede usar << Obtener filas seleccionadas
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Select Where(:age >= 20);
selrows = dt << Get Selected Rows;
If(N Items(selrows) == 0,
Throw("No rows selected");
);
Cuando aún necesito una tabla vacía después de dicho filtro, generalmente hago algo como esto.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
rows_of_interest = dt << Get Rows Where(:age >= 20);
If(N Items(rows_of_interest) > 0,
dt_subset = dt << Subset(Rows(rows_of_interest), Selected Columns(0), Output table("SUBSET"));
,
dt_subset = dt << Subset(Rows(1), Selected Columns(0), Output table("SUBSET"));
dt_subset << Delete Rows(1);
);
Show(N Rows(dt_subset)); // demo purposes
Si desea comprobar de la tabla que no se creó
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt_subset = dt << Select Where(:age >= 20) << Subset(Selected Rows(1), Selected Columns(0), Output table("SUBSET"));
If(Is Empty(dt_subset),
Throw("No rows selected");
);
Write();