如何更改本地数据过滤器中值的排序顺序?大家好,
我正在使用 JMP 18,并且有一个使用自定义 SQL 查询创建数据表的 JMP 文件。数据表附带了几个仪表板(由在 Graph Builder 中创建的图表组成)。一些仪表板包含本地数据过滤器,供用户控制应在关联图表中显示的选定行。
我想更改本地数据过滤器中值的排序顺序。由于底层数据表的排序不是问题,我尝试使用@txnelson 对此帖子的回复中的第一个建议(下面是编辑的代码)。这会按预期对数据表进行排序,但批处理/反应器列的排序顺序不会应用于本地数据过滤器(它仍保持原始排序顺序,看起来是按字母顺序排列的)。
批次/反应器列是特征/标称的。
有人对为什么此代码未按预期工作或我可以采取的其他方法有何反馈吗?
谢谢,
安迪
New SQL Query(
Version( 130 ),
Connection(
"ODBC:..."
),
QueryName( "Custom Query" ),
CustomSQL(
" select ...
[... SQL omitted ...]
group by
up_pro_name) as dcw on
dcw.up_pro_name = sample.dn_mat_name
"
),
PostQueryScript(
"dt = Current Data Table();
dt << Sort( By( :Name(\!"Batch/Reactor\!"),:Name(\!"EFT (h)\!") ), Order( Descending, Ascending ), Replace table );
dt:Batch/Reactor << set property( \!"value order\!", {Common Order( 0 ), Row Order Levels( 1 )} );
"
)
) << Run Foreground( UpdateTable( Current Data Table() ) );
自动化和脚本数据探索与可视化回复:如何更改本地数据过滤器中值的排序顺序?尝试为数据过滤器中使用的列设置“值排序”列属性。
回复:如何更改本地数据过滤器中值的排序顺序?我认为,如果您这样使用,Batch/Reactor 不是有效的列名。尝试将其更改为:“Batch/Reacher”n。您可能还想在排序后添加 wait(0) 以确保万无一失。
下面是使用 JMP 示例表和 On Run Complete 代替 Post Query Script 的示例
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Column(dt, 1) << Set NAme("Test/ABC");
dtquery = New SQL Query(
Version(130),
Connection("JMP"),
JMP Tables(
["Big Class" => "\C:\Program Files\JMP\JMPPRO\18\Samples\Data\Big Class.jmp"
]
),
QueryName("SQLQuery1"),
Select(
Column("Test/ABC", "t1"),
Column(
"age",
"t1",
Analysis Type("Ordinal"),
Numeric Format("Fixed Dec", "0", "NO", "")
),
Column("sex", "t1"),
Column("height", "t1", Numeric Format("Fixed Dec", "0", "NO", ""))
),
From(Table("Big Class", Alias("t1"))),
) << Run Foreground(
On Run Complete(
queryResult << Sort(By(:height), Replace Table, Order(Ascending));
wait(0);
queryResult:"Test/ABC"n << Set Property(
"Value Order",
{Common Order(0), Numerical Order(0), Row Order Levels(1)}
);
)
);

回复:如何更改本地数据过滤器中值的排序顺序?嗨吉姆,
我在 UI 中做了以下事情:
1. 右键单击列标题
2. 列属性 -> 值顺序
3. 点击自定义订单,然后点击反转
这对 SQL 生成的数据表中的当前结果集有效(排序顺序在附加仪表板的数据过滤器中保持不变)。但是,当 SQL 中出现新结果时,这些结果会出现在结果集的底部(以及仪表板数据过滤器的底部)。
有没有办法将“值排序”指定为 JSL 中的属性,以便将其动态应用于当前结果集?
谢谢,
安迪
回复:如何更改本地数据过滤器中值的排序顺序?这是一个简单的例子,它设置了 Big Class 数据表中名为 Sex 的列的值顺序。
Names Default To Here( 1 );
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "/C:/Program Files/JMP/JMPPRO/19/Samples/Data/Big Class.jmp" );
dt:sex << set property( "Value Order", {Custom Order( {"M", "F"} ), Common Order( 0 )} );
始终可以通过以交互方式设置相关属性来获取设置列属性所需使用的语法,然后运行此 JSL,语法将显示在 JMP 日志中
dt:sex << get property( "Value Order" );
回复:如何更改本地数据过滤器中值的排序顺序?对于感兴趣的人,以下是我每次执行 SQL 查询时用来动态设置值顺序的代码。这会将所需的排序顺序保留到附加到数据表的仪表板中的本地数据过滤器中,这正是我的目标。
order by \!"Batch/Reactor\!" desc, \!"EFT (h)\!" asc
"
),
PostQueryScript(
"dt = Current Data Table();
br_values = column(\!"Batch/Reactor\!") << GetAsMatrix();
br_values_sorted = Sort Descending ( br_values );
br_values_sorted_list = as list (br_values_sorted);
dt:\!"Batch/Reactor\!" << Set Property(\!"Value Ordering\!",Eval List(br_values_sorted_list));
dt << sort( by(\!"Batch/Reactor\!"), replace table(1));"
)
) << Run Foreground( UpdateTable( Current Data Table() ) ); [...rest of SQL query...]<BR />