Tengo una tabla llamada dt. Tomo los valores únicos de algunas columnas y creo el siguiente menú que le brinda al usuario final la posibilidad de filtrar la tabla dt en función de los valores de las columnas y tomar un subconjunto de esto.

Sin embargo, tomar los valores únicos de su columna es arriesgado porque puede terminar eligiendo una combinación de atributos que no existe en la tabla.
¿Hay alguna manera de hacer que este menú sea interactivo o dinámico para que reduzca las opciones disponibles a medida que el usuario final toma algunas decisiones?
En general, ¿hay alguna manera de manejar este problema de terminar teniendo una tabla vacía porque el conjunto de datos inicial no contiene todas las combinaciones de los valores únicos de los atributos?
Podría intentar utilizar un filtro de datos condicional, pero podría alterar su diseño o requerir un poco de trabajo adicional para que se vea similar.
Aquí hay un ejemplo rápido. Sugeriría hacer las referencias más sólidas y posiblemente utilizar un filtro de datos local en lugar de global. También deberías parametrizar esto (envoltorio, instrucciones, ...)
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Animals.jmp");
nw = New Window("",
V List Box(align("center"),
Text Box("Animals Study Evaluation", << Set Base Font("Title")),
Text Box("Add-in version 1.0", << Set Base Font("Heading")),
Text Box("Documentation report: xxxxxx", << Set Base Font("Heading")),
Panel Box("Study Selections",
Button Box("Start Over", f << Clear);
f = dt << Data Filter(
Conditional,
Show Controls(0),
Show Modes(0),
Show Histograms and Bars(0),
Add Filter(
columns(:season, :species, :subject),
Where(:season == "fall"), // force conditional filter order
Where(:species = "COYOTE"),
Where(:subject= "1"),
Display(:season, N Items(4)),
Display(:species, N Items(2), "List Display"),
Display(:subject, N Items(3), "List Display")
)
)
)
)
);
Window("")["Data Filter",BorderBox(6)] << Sib Prepend(
V List Box(
Text Box("Selection of Seasons", << Set Font Size(12), << Set Font Style("Bold Italic")),
Text Box("Please select which seasons to use for the analysis. Multiple seasons can be selected by holding 'ctrl' down while pressing multiple seasons.", << Set Wrap(400))
)
);
Window("")["Data Filter",BorderBox(6)] << Sib Append(Spacer Box(Size(0, 20)));
Window("")["Data Filter",BorderBox(7)] << Sib Prepend(
V List Box(
Text Box("Selection of Species", << Set Font Size(12), << Set Font Style("Bold Italic")),
Text Box("Please select which Species to use for the analysis. Multiple Species can be selected by holding 'ctrl' down while pressing multiple Species.", << Set Wrap(400))
)
);
Window("")["Data Filter",BorderBox(7)] << Sib Append(Spacer Box(Size(0, 20)));
Window("")["Data Filter",BorderBox(8)] << Sib Prepend(
V List Box(
Text Box("Selection of Subjects", << Set Font Size(12), << Set Font Style("Bold Italic")),
Text Box("Please select which Subjects to use for the analysis. Multiple Subjects can be selected by holding 'ctrl' down while pressing multiple Subjects.", << Set Wrap(400))
)
);
Window("")["Data Filter",BorderBox(3)] << Visibility("Collapse");
Window("")["Data Filter",CheckBoxBox(1)] << Visibility("Collapse");
Window("")["Data Filter",BorderBox(1)] << Visibility("Collapse");
nw[Outline Box(1)] << Set Title("");
// To force the order of conditional filtering
// https://community.jmp.com/t5/JMP-Wish-List/Option-to-make-Conditional-Data-Filter-work-from-top-to-bottom/idi-p/746949
f << (Filter Column(:subject) << Clear Selection);
f << (Filter Column(:species) << Clear Selection);
f << (Filter Column(:season) << Clear Selection);

También hay algunos lugares donde JMP utiliza algo como esto (como Sample Index), pero también pueden tener acceso a algunas implementaciones mejores que las nuestras.
¿Es posible utilizar declaraciones "o" entre 2 condiciones de filtrado de datos? El filtro de datos condicional utiliza declaraciones "y" y filtra los datos dinámicamente. Pero, ¿qué pasa si mis condiciones son las siguientes?
Condición_de_columna1 y (Condición2_de_columna2 o Condición3_de_columna3)
Puede que no sea posible al utilizar filtros de datos condicionales