dt라는 테이블이 있습니다. 일부 열의 고유 값을 가져와서 최종 사용자가 열 값을 기반으로 dt 테이블을 필터링하고 이의 하위 집합을 가져올 수 있는 기능을 제공하는 다음 메뉴를 만듭니다.

그러나 해당 열의 고유 값을 사용하는 것은 테이블에 존재하지 않는 속성 조합을 선택하게 될 수 있으므로 위험합니다.
최종 사용자가 선택할 때 사용 가능한 선택 범위를 좁힐 수 있도록 이 메뉴를 대화형 또는 동적으로 만들 수 있는 방법이 있습니까?
일반적으로 초기 데이터 세트에 속성의 고유 값 조합이 모두 포함되어 있지 않아 테이블이 비어 있게 되는 문제를 처리할 수 있는 방법이 있습니까?
조건부 데이터 필터를 사용해 볼 수도 있지만 레이아웃이 엉망이 될 수도 있고 비슷하게 보이도록 하려면 약간의 추가 작업이 필요할 수도 있습니다.
다음은 간단한 예입니다. 참조를 더욱 강력하게 만들고 글로벌 대신 로컬 데이터 필터를 활용하는 것이 좋습니다. 또한 이를 매개변수화해야 합니다(래핑, 지침 등).
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);

JMP가 이와 같은 것(예: 샘플 색인)을 활용하는 곳도 있지만 우리보다 더 나은 구현에 액세스할 수도 있습니다.
데이터 필터링의 두 가지 조건 사이에 "or" 문을 사용할 수 있나요? 조건부 데이터 필터는 "and" 문을 사용하고 데이터를 동적으로 필터링합니다. 하지만 내 조건이 다음과 같다면 어떻게 될까요?
Condition_of_column1 및 (Condition2_of_column2 또는 Condition3_of_column3)
조건부 데이터 필터를 사용하는 경우 불가능할 수 있음