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

JMP 正在尋找“斯洛伐克”而不是“斯洛伐克共和國”,因此這可能是一個使用的機會重新編碼。從這些數據來看,我們似乎總是會做類似的操作。 我們將為地圖形狀選擇國家/地區名稱,然後選擇我們感興趣的年份來檢查結果。如果我們要重複查看某一年,則保存腳本並將其作為查詢生成器放入查詢生成器中是有意義的查詢後腳本。 預覽窗格中有一個用於此目的的選項卡。如果我們轉到上一張圖,並使用紅色小三角菜單執行“保存腳本”->“到腳本窗口”,我們將得到一個如下所示的腳本:
Graph Builder(
Size( 534, 454 ),
Show Control Panel( 0 ),
Variables( Color( :Name( "2014" ) ), Shape( :Country Name ) ),
Elements( Map Shapes( Legend( 7 ) ) )
);
如果我們將其粘貼到查詢後腳本選項卡中,當我們選擇要檢查的觀測值時,在提取數據並創建 JMP 表後,它將始終運行相同的圖形生成器報告。這可以大大簡化重複性任務。
Post-Query ScriptPost-Query Script查詢後腳本
最好的部分是,當我們保存查詢時,我們可以對其進行設置,以便最終用戶甚至看不到查詢生成器對話框。通過選擇“打開時運行” 在查詢名稱字段的下拉菜單中,然後保存查詢,最終用戶只會看到提示以及生成的表格和圖表。
Run on OpenRun on Open打開時運行
Query with Run on Open started from Recent FilesQuery with Run on Open started from Recent Files從最近的文件開始查詢打開時運行使用匹配列過濾器的一個注意事項是,具有要匹配的值的表必須存在於我們將運行查詢的計算機上。如果這是一個問題,有一種方法可以解決這個問題。創建具有匹配列的過濾器後,轉到過濾器的紅色小三角菜單。在這個例子中,這將是“ t1.國家代碼”。選擇過濾器類型 -> 手動列表。 這會將匹配列過濾器創建的值導入到將用於 SQL 的文本列表中。下次保存時,這將被保存到查詢中,並且您將不再需要數據表來匹配。這種方法的缺點是失去了動態更改所選匹配值和更改查詢的能力。
至此,我們已經過濾了大量令人困惑的數據,並創建了可重複的查詢和分析,可以將其發送給最終用戶。使用該查詢的人實際上並不需要了解該查詢,或者根本不需要了解很多 JMP 知識。
使用的約定:
查詢生成器窗口窗格是加粗的
按鈕/對話框控件是“引用和加粗”
變量/列名稱是“引用並斜體”
[1]世界銀行集團。世界發展指標、世界銀行集團和網絡。 2018 年 1 月 25 日。 https://datacatalog.worldbank.org/dataset/world-development-indicators 。 根據 Create Commons CC BY 4.0 許可證獲得。