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 がこのようなもの (Sample Index など) を利用している場所もいくつかありますが、私たちよりも優れた実装にアクセスできる可能性もあります。
データ フィルタリングの 2 つの条件の間に「or」ステートメントを使用することは可能ですか? 条件付きデータ フィルターは「and」ステートメントを使用してデータを動的にフィルタリングします。ただし、条件が次のような場合はどうなりますか。
列 1 の条件と (列 2 の条件 2 または列 3 の条件 3)
条件付きデータフィルターを使用する場合は不可能な場合があります