創建新列後,如何移動它以使其成為使用腳本的第一個列?大家好,
背景:
因此,我嘗試自動化用於從 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) 為這兩種方法指定位置