在转置上下文中尝试我有一个脚本,它对从 SQL 查询中获得的一些数据进行转置。我想给脚本增加一些宽容度,从而使查询中的确切列可以变化。我当前的脚本要求一系列列必须存在才能工作,我想以某种方式应用 Try() 功能来适应 SQL 查询中的差异。
我做了一个在 try 语句中包含转置的练习,但是失败了。
自动化和脚本回复:在转置上下文中尝试您在哪一部分遇到了问题?由于列名更改导致 SQL 查询失败?还是由于未获取预期的列导致 JSL 脚本失败?如果出现问题该怎么办?
回复:在转置上下文中尝试SQL 按预期提取数据,但运算符可能未包含 JMP 期望转置的所有列。问题随后出现在 JMP 端,其中指定了明确的列,但结果却缺失。
JMP 日志指示
在访问或评估“列”时未找到列,错误参数({:SAMPLE})。
回复:在转置上下文中尝试那么在这种情况下应该怎么做?停止程序执行?跳过脚本的该部分?尝试获取正确的列?
回复:在转置上下文中尝试我只想对实际出现的列执行,而不会因为缺少列而失败。我最终需要一个能够容忍 SQL 查询差异的脚本,因为许多操作员都需要使用它,并且会发生差异。我拥有的一个优势是转置列 (:VALUE) 和标签列 (:PARAMETER) 有固定的标题,我借助在这里和其他地方找到的信息对此进行了一些研究,我得到了下面的脚本,它似乎有效。
已解决:删除列表中的元素 - JMP 用户社区
谢谢你的帮助。
dt = Current Data Table();
// List available columns
by_col_names = dt << get column names( "String" );
show(by_col_names);
// Remove Transpose and Label columns from list
delcols = {"VALUE", "PARAMETER"};
For( i = 1, i <= N Items( delcols ), i++,
Remove From( by_col_names, As List( Loc(by_col_names, delcols[i] ) ) );
);
// Transpose only if valid columns exist
If (N Items(by_col_names) > 0,
dt2 = dt << Transpose(
Columns(:VALUE),
By(
by_col_names
),
Label( :PARAMETER ),
Output Table( "Transpose of dt_data" )
);
);