良好的查詢可以助您成功
程度:初學者
Brian Corcoran,SAS JMP 研發總監
JMP 提供了多種方法將各種資料格式匯入產品。原因顯而易見。多年來,人們開發了許多用於收集和格式化資料的工具。在大多數情況下,這些工具不允許您將資料轉換為 JMP 資料表。您需要將這些資料放入 JMP 中進行分析。在其他情況下,資料可能位於某個資料庫中,您需要在開始之前將其提取出來。取得數據會耗費寶貴的時間。 JMP 經過多年的不斷發展,增加了強大的資料收集功能來幫助您完成此任務。
本文嘗試提供如何使用 JMP 中的查詢產生器功能的一個小範例,以及使用 Excel 精靈的簡單範例。希望它也能表明旅程也可以是一種回報,因為可以透過準備查詢本身來獲得對資料的洞察。雖然 Windows 版本用於桌面螢幕截圖,但這裡討論的所有功能在 Mac 版本的 JMP 中也可用。使用了 JMP 14,但 JMP 13 也可以完成討論的所有操作。
本文提出了一個假設的用例。想像一下,您正在研究世界趨勢,世界銀行資料庫經常提供有價值的資訊。一位同事告訴您,2017 年世界發展指標資料最近已發布,並且他們已將資料放入公司 SQL Server 資料庫中。這是一個很大的表格,有超過 400,000 個觀測值和 62 列。 [1]開啟 JMP 並選擇檔案->資料庫->查詢產生器,開啟資料庫連線並指向表。在查詢產生器的第一個畫面中,選擇 world_bank 表作為主表並使用「表快照」檢視:
Query Builder Table Snapshot查詢產生器表快照查詢產生器表快照
這是一種有點奇怪的格式,至少對於典型的 JMP 用戶來說是如此。有四個變數或欄位用於表示國家信息,然後有一列用於表示每年的數據。行中顯示的似乎是區域,然後是被測量的數據。從某些方面來看,它看起來與典型的 JMP 表的預期相反。國家名稱“阿拉伯世界”似乎代表一個地區,因此這也令人困惑。如果您按下「立即匯入」按鈕,表格就會出現,一切就會變得更加清晰。透過捲動到中間,您可以看到行從所討論的國家/地區開始,然後是特定主題的數據,例如「農村人口」。這些都是按國家排序的,這看起來不太直觀。
Immediate Import Table Appearance立即匯入表格外觀立即匯入表格外觀
我們重新開始吧。這次,我們可以繼續選擇「建置查詢」而不是「立即導入」。我們知道我們想要包含國家資訊的前四個變量,因此我們可以選擇這些變量,然後在查詢生成器的列選擇面板的「包含的列」標籤中按「新增」。這裡有很多數據,所以我們只處理2010年至2017年的變數。此時,對話框的頂部如下所示:
Initial Column Selection初始列選擇初始列選擇 我們之前的狀況確實還沒有改善。現在,我們可以將「指標程式碼」變數移到查詢產生器的「排序依據」窗格中。這將按照研究的主題來組織數據,而不是按照所研究的地區或國家來組織數據。這似乎更有利於分析。
Ordered by Indicator Code按指標代碼排序按指標代碼排序
數據仍然存在問題。首先,它擁有一些目前不引起人們興趣的區域集團。如何排除這些聚合條目?此外,查詢特定項目(如「化學肥料消耗量」)的最佳方法是什麼?
如果我們不按「指標代碼」排序,那麼當然可以將所有資料匯入 JMP,然後刪除區域分組。 然而,這給分析數據的人帶來了負擔。如果有人沒有設定查詢,那可能會造成混淆。在查詢中,可以只選擇有興趣的國家。如果我們想要歐盟所有國家怎麼辦? (我本來打算使用北美,但世界銀行的定義只包含美國、百慕達和加拿大!)我們可以手動選擇它們,但還有更好的方法。為此,我們將快速呼叫 JMP 中的另一個工具,即 Excel 精靈。
在這種情況下,假設我們經常使用世界銀行的資料。國家代碼很重要,但不是直觀的。表格通常使用程式碼而不指定完整的國家名稱,正如您瀏覽網站時所看到的那樣。將這些代碼放在單獨的表中可能會很方便。這樣的表格是存在的,並且可以輕鬆地從網站匯入為 Excel 檔案。因此,在這種情況下,請在國家和國家代碼表上開啟 Excel 精靈。世界銀行網站將這些內容分組在一個名為 CLASS.xls 的不起眼的表格中,但您可以重新命名它。文件中有兩張表格,「經濟體列表」和「群組」。讓我們來看看「群組」:
Preview of Groups Table in Excel FileExcel 檔案中的群組表預覽Excel 檔案中的群組表預覽
我們在查詢產生器資料中看到了阿拉伯世界的分組。這看起來很有希望,但向下滾動還沒有顯示歐洲,因為預覽在 100 行結束。選擇“顯示所有行”,我們可以看到所有內容,包括“歐洲和中亞”,“歐洲地區”和“歐盟”。 「歐盟」 組包含目前聯盟中所有國家的國家代碼。我們可以使用它在查詢產生器中選擇國家嗎?答案是肯定的,所以讓我們繼續提取我們需要的那一組。我們可以透過選擇預覽中的第一行“歐盟”,然後按下“資料從行開始”旁邊的綠色加號來實現。
Select the First Row in “European Union”選擇“歐盟”的第一行選擇“歐盟”的第一行
現在我們可以按下對話方塊中的“下一步”按鈕,選擇最後一行“歐洲聯盟”,然後按下“資料以此行結尾”旁邊的綠色加號。這會將數據縮減到我們感興趣的國家。
現在我們可以選擇「導入」並獲得一行包含 28 個歐盟國家的條目。我們將繼續將產生的 JMP 表儲存為「EU.jmp」。
現在我們可以返回查詢產生器。我們本可以透過「國家名稱」或「國家代碼」在清單中繁瑣地選擇我們感興趣的國家。但是,查詢產生器有一個強大的篩選器類型,稱為匹配列值。為了使用此功能,我們首先將「國家代碼」拖入過濾器窗格。這將產生一個包含所有程式碼的長列表。現在,我們可以選擇「 t1.國家代碼 」處的紅色三角形選單作為篩選器類型,並選擇「符合列值」。將顯示一個框,其中顯示開啟的 JMP 表的名稱。由於我們仍然打開“EU.jmp”,因此它會出現在清單中。我們選擇它,以及我們想要匹配的變數( 國家代碼 )。同樣重要的是確保從下拉清單中選擇“所有行”,而不是“選定的行”,因為在這種情況下我們需要所有國家。
Selecting the Match Column Values filter選擇匹配列值過濾器選擇匹配列值過濾器
這將使我們的結果僅涉及歐盟國家的觀察。這裡確實沒有什麼魔法。我們正在建立 WHERE/IN 子句來替換國家代碼。如果您查看查詢產生器中的SQL窗格,您可以看到 JMP 正在產生的 SQL:
Generated SQL產生的 SQL產生的 SQL
但希望我們能讓這個過程變得更容易完成。現在我們已經將資料範圍縮小到我們真正感興趣的範圍,如果能更容易選擇我們想要分析的具體資訊就好了。為此,我們可以將「指標名稱」拖曳到「指示器」窗格上。雖然我們可以在這裡點擊我們感興趣的項目,然後運行查詢,但如果能夠為任何用戶提供更具互動性的介面就更好了。我們可以按下「 t1.Indicator Name 」旁邊的紅色三角選單,並選擇「 運行時提示 」。這將向我們提供一個對話框,以指定向最終用戶提示的標題。
Prompt on Run運行時提示運行時提示
現在,當我們按下「執行查詢」按鈕時,我們將獲得項目列表,我們可以選擇我們感興趣的項目。例如,我們可以選擇「GDP 成長(年度 %)」並獲得 28 行的表格。然後我們可以將其放入 Graph Builder。將「國家名稱」拖放到「地圖形狀」放置區將產生一張歐洲地圖,然後我們可以將感興趣的年份拖放。 2014 年以後資料開始變得稀疏,因此拖入該年份將產生以下資料:

JMP 正在尋找“斯洛伐克”而不是“斯洛伐克共和國”,因此這可能是使用Recode 的機會。看看這些數據,似乎我們總是會做類似的操作。我們將選擇地圖形狀的國家名稱,然後選擇我們感興趣的年份來檢查結果。如果我們要重複查看某一年份,則儲存腳本並將其作為後查詢腳本放入查詢產生器中是有意義的。預覽窗格旁邊有一個用於此功能的選項卡。如果我們轉到先前的圖表並使用紅色三角形選單執行儲存腳本->到腳本窗口,我們將得到以下腳本:
Graph Builder(
Size( 534, 454 ),
Show Control Panel( 0 ),
Variables( Color( :Name( "2014" ) ), Shape( :Country Name ) ),
Elements( Map Shapes( Legend( 7 ) ) )
);
如果我們將其貼上到查詢後腳本標籤中,當我們選擇要檢查的觀察結果時,它將始終在提取資料並建立 JMP 表後運行相同的 Graph Builder 報告。這可以大大簡化重複任務。
Post-Query Script查詢後腳本查詢後腳本
最好的部分是,當我們儲存查詢時,我們可以將其設定為最終用戶甚至看不到查詢產生器對話框。透過在查詢名稱欄位的下拉式選單中選擇“開啟時執行”,然後儲存查詢,最終使用者將只看到提示和產生的表格和圖形。
Run on Open在開放狀態下運行在開放狀態下運行
Query with Run on Open started from Recent Files從最近的文件開始使用“打開時運行”的查詢從最近的文件開始使用“打開時運行”的查詢 使用匹配列過濾器的一個注意事項是,具有要匹配的值的表必須存在於我們將執行查詢的機器上。如果這是一個問題,那麼有辦法解決。建立具有匹配列的過濾器後,轉到過濾器的紅色三角形選單。在這個例子中,這將是「 t1.Country Code」。選擇過濾器類型 -> 手動清單。這會將匹配列過濾器建立的值匯入到用於 SQL 的文字清單中。下次儲存時,它將被保存到查詢中,並且不再需要資料表來匹配。這種方法的缺點是失去了動態改變所選匹配值和更改查詢的能力。
此時,我們已經過濾了大量混亂的數據,並創建了可重複的查詢和分析,可以發送給最終用戶。使用查詢的人實際上並不需要了解查詢的知識,或者根本不需要了解 JMP 的大部分知識。
使用的約定:
查詢產生器窗格以粗體顯示
按鈕/對話方塊控制項“加引號並加粗”
變數/列名稱“帶引號且為斜體”
[1]世界銀行集團。 《世界發展指標》 ,世界銀行集團,網址。 2018 年 1 月 25 日。 https
/datacatalog.worldbank.org/dataset/world-development-indicators 。根據 Create Commons CC BY 4.0 授權取得。