创建新列后,如何移动它以使其成为使用脚本的第一个列?大家好,
背景:
因此,我尝试自动化用于从 SQL 数据库检索示例数据的流程。 我所做的是使用数据库查询生成器并使用查询后脚本提取数据,这就是下面的虚拟代码所在的位置。
问题:
我目前已经有了脚本来创建一个新列并为其提供我想要的公式,但真正有用的是使用一些代码行来重新排列其中一些新列。
我的虚拟代码如下:
”
New Column( "ColumnToMove",
Numeric,
"Nominal",
Format( "Best", 12 )
Formula(1));
Move Selected Columns({“ColumnToMove”}, To First);
”
(请原谅对这种脚本语言如何工作的任何误解,我目前对它还很陌生)
非常感谢您提供的任何帮助
回复:创建新列后,如何移动它,使其成为使用脚本的第一个列?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />对列进行排序没有任何问题,并且在编码时保持事物井井有条非常好。但是,它可能会减慢您的代码速度。显而易见的是,它添加了一个实际上没有任何作用的额外步骤。对不可见的表重新排序会更快,但话又说回来,表不可见,因此重新排序没有任何意义。
此外,新手程序员还可能养成对列重新排序的习惯,以便对前 5 列或后 5 列运行这样那样的分析,这是一个坏习惯,并且会产生不太灵活且较慢的代码。
最后,选择使用 SQL 还是 JSL 添加列只是个人意见。显然,两者都可以添加一个额外的列,其中第 3 列 = 第 1 列 + 第 2 列。使用 SQL,这会将处理能力从主机转移到服务器 CPU,这可能会更慢/更快,但跨平台会更加一致。使用 SQL 带来的额外好处是能够将该列放置在您想要的任何位置,而无需添加额外的一两个步骤。话虽如此,我通常更喜欢使用 JSL 来添加列。
回复:创建新列后,如何移动它,使其成为使用脚本的第一个列?感谢大家的帮助,真的很感激。 得到了我的答案以及更多信息
(msharp - 我不使用 SQL 来完成更多工作的原因是因为我使用查询生成器从 SQL 获取数据,并且我不相信您可以对其使用的 SQL 进行进一步调整。 现在,我可以将整个查询编写为脚本语言,并在 SQL 而不是 JMP 中完成所有工作。 然而,我发现每次在提取变量之前都能够使用查询生成器选择不同的变量(而不是对它们进行硬编码并每次都必须在脚本中查找条目)非常有用。 同样,我可能会错过一些东西。
我也同意表示层,但目前我发现它非常有用,因为我正在处理要组织的事情。 另外,我有相当多的列(我的下一步将是使用脚本语言对它们进行分组),这意味着当涉及到数据探索(这就是我目前正在做的事情)时,将更相关的列放在手边是很有用的。 此外,当我开始使用图形生成器等时,它使数据探索变得更加容易。 再次感谢你的帮助)
(杰夫·帕金森 - 不,我不知道这一点。 非常感谢您让我注意到这一点。 从现在开始会非常有用)
回复:创建新列后,如何移动它,使其成为使用脚本的第一个列?很棒的提示。
我一般从不移动列。氧对列进行排序更多的是一个演示问题,因为数据不应依赖于列顺序。最好将表示留给表示层,例如图形或图表,而不是数据表。
回复:创建新列后,如何移动它,使其成为使用脚本的第一个列?
顺便说一句:如果您还没有找到它,脚本索引在下面帮助菜单是你的朋友。

回复:创建新列后,如何移动它,使其成为使用脚本的第一个列?如果您将列名称提供给移动选定的列您不必选择它们即可移动它们。
dt = New Table( "Untitled", Add Rows( 1 ),
New Column( "First", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [1] ) ),
New Column( "Second", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [2] ) )
);
dt << New Column( "ColumnToMove", Numeric, "Nominal", Format( "Best", 12 ), Formula(1));
wait(2); // Put a delay to see the effect
dt << Move Selected Columns({"ColumnToMove"}, To First);
回复:创建新列后,如何移动它,使其成为使用脚本的第一个列?移动列是可能的,但总是感觉需要两到三个额外的步骤。主要是只能移动选中的列,而且选中列不太方便。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Go To( :Age );
Wait( 2 );
dt << Move Selected Columns( To last );
dt << Clear Column Selection;
Wait( 2 );
dt << Reverse Order;
有什么理由不能只修改 SQL 来按您想要的顺序获取列吗?SQL 是一种足够强大的语言,您可以在数据拉取中直接执行大多数列脚本编写。
回复:创建新列后,如何移动它,使其成为使用脚本的第一个列?我认为您可以在创建时使用添加多列来设置位置,或者使用您提到的移动选定列消息:
dt=currentdatatable();
dt<<ADD multiple="" columns=""></ADD>
您可以使用 After(col) 为这两种方法指定位置