第9章 查詢編輯器 Power BI Desktop附帶查詢編輯器的功能,可連接配接到一個或多個資料源,能夠調整和轉換資料以滿足使用者的需要,調整後的資料可加載到Power BI Desktop。 9.1 查詢編輯器介紹 要通路查詢編輯器,需要在Power BI Desktop的“開始”頁籤中單擊“編輯查詢”下拉按鈕,在彈出的下拉清單中選擇“編輯查詢”選項,如圖9-1所示。 9.1.1 查詢功能區 9.1.2 “查詢”窗格 9.1.3 資料視圖 9.1.4 “查詢設定”窗格 9.2 常見查詢任務 9.2.1 連接配接到資料 9.2.2 調整資料 在查詢編輯器中調整資料,查詢編輯器加載并呈現資料時會提供分步說明(查詢編輯器将執行此操作),原始資料源将不受影響。 查詢編輯器會記錄指定的步驟,每當此查詢連接配接到資料源時,都會執行這些步驟,是以資料将始終按指定的方式進行調整,這些步驟是在“查詢設定”窗格中的“應用的步驟”下按順序進行“捕獲”的,如圖9-16所示。 對于初學者來說,在查詢編輯器加載表格時,我們需要的是數字類型。要将文本轉換為數字,隻需右擊列标題,然後在彈出的快捷菜單中選擇“更改類型”>“整數”來對其加以更改,如圖9-17所示。 如果要選擇多列,可先選擇一列,然後按住Shift鍵選擇其他相鄰列,右擊列标題可以更改所有選中的列,也可以使用Ctrl鍵選擇不相鄰的列。 9.2.3 追加資料 9.2.4 合并資料 9.2.5 對行進行分組 第10章 運作R腳本 可以在Power BI Desktop查詢編輯器中使用R。R是統計學家、資料科學家和資料分析師使用最廣泛的一種程式設計語言。查詢編輯器中內建的R可用來進行資料清理,并在資料集中執行進階資料調整和分析,包括丢失資料補全、預測和聚類分析。R是功能強大的語言,可在查詢編輯器中準備資料模型并建立報表。 10.1 在查詢編輯器中使用R 要在Power BI Desktop中運作R腳本,需要在本地計算機上安裝R,并且目前版本的R腳本在安裝路徑中支援Unicode字元和空格(空字元)。 在Power BI Desktop中,R的安裝和設定位于“選項”對話框的“R腳本”部分。要指定R的安裝和設定,選擇“檔案”>“選項和設定”指令,然後在打開的“選項”對話框中選擇“R腳本”。如果有多個R版本可以安裝,則會顯示一個下拉菜單,讓使用者進行選擇,如圖10-1所示。 在Power BI Desktop中隻需幾個步驟即可運作R腳本并建立資料模型,進而建立報表并在Power BI服務上共享它們。Power BI Desktop中的R腳本現在支援包含小數點(.)和逗号(,)的數字格式。為了示範如何在查詢編輯器中使用R,我們使用“StockMarketIndex.csv”示例資料,步驟如下。 (1)在Power BI Desktop的“開始”功能區中單擊“擷取資料”下拉按鈕,在打開的下拉清單中選擇“文本/CSV”選項,如圖10-2所示。 10.2 編輯器查詢的限制 在查詢編輯器中建立的R腳本的查詢有一些限制,所有R資料源都必須設定為“公用”,并且查詢編輯器建立的查詢中所有步驟也必須設定為“公用”。要擷取資料源設定,在Power BI Desktop中選擇“檔案”>“選項和設定”>“資料源設定”,如圖10-11所示。 打開“資料源設定”對話框,選擇“資料源”,然後單擊“編輯權限”按鈕,在打開的“編輯權限”對話框中確定“隐私級别”為“公用”,如圖10-12所示。 要啟用R視覺對象或資料集的計劃更新,需要啟用“計劃更新”選項,并且需要擁有通路相應計算機個人網關的權限。 10.3 R與Power BI協同使用 借助Power BI Desktop,可以使用外部的R IDE(內建開發環境)建立并優化R腳本,然後将這些腳本用于Power BI中。 在啟用外部R IDE之前,需使用Power BI Desktop中的R腳本編輯器建立并運作R腳本,借助此版本,可以從Power BI Desktop啟動外部R IDE,然後自動導入資料并顯示在R IDE中。可以修改此外部R IDE中的腳本,将其重新粘貼至Power BI Desktop中來建立Power BI視覺對象和報表。 使用此功能需要在本地計算機上安裝R IDE,Power BI Desktop沒有安裝R引擎,是以必須在本地計算機上獨立安裝R。 大部分R IDE都是免費的,例如Revolution Open下載下傳頁面和CRAN存儲庫。Power BI Desktop還支援R Studio和具有R Tools for Visual Studio編輯器的Visual Studio2015。 可以将R檔案與Power BI Desktop要啟動的外部IDE相關聯。單擊“檔案”>“選項和設定”指令,可以打開“選項”對話框。如果安裝了多個R IDE,在“檢測到的R IDE”下拉清單框中進行選擇就可以指定要啟動哪個R IDE,選擇“其他”選項可以指定Power BI Desktop應啟動的.exe檔案,如圖10-13所示。 在預設情況下,Power BI Desktop将啟動R Studio作為外部R IDE(已安裝);如果未安裝R Studio,而是安裝了具有R Tools for Visual Studio的Visual Studio2015,則将啟動Visual Studio2015;如果均未安裝,則将啟動與R檔案關聯的應用程式。 如果R檔案不存在任何關聯,則可以在“選項”對話框的“浏覽到你的首選R IDE”文本框中指定自定義IDE的路徑。通過單擊Power BI Desktop中“啟動R IDE”箭頭圖示旁邊的齒輪圖示,還可以啟動不同的R IDE。 第11章 資料進階操作 11.1 建立和管理關系 在Power BI Desktop中導入多個資料表時,可能要使用這些表中的資料,為了準确計算結果并在報表中顯示資訊,管理這些表之間的關系是很有必要的。在大多數情況下,無須執行任何操作,軟體會自動檢測并執行,但是在某些情況下,可能需要自行建立關系,或者對關系進行一些更改。 11.1.1 自動建立關系 Power BI Desktop在加載多個資料源時,要确定是否存在潛在關系,若存在關系,則嘗試查找并建立關系,自動設定基數、交叉篩選方向和活動屬性;如果無法确定存在的比對項,則不會自動建立關系,但是仍可以使用“管理關系”對話框來建立或編輯關系。下面通過具體案例進行介紹。 (1)導入資料“客服中心2017年呼入量資料.xlsx”和“客服中心話務員個人資訊表.xlsx”,如圖11-1所示。 (2)使用自動檢測功能建立關系,在“開始”功能區中單擊“管理關系”按鈕,如圖11-2所示。 11.1.2 手動建立關系 使用者還可以手動建立關系,在“管理關系”對話框中,單擊“建立”按鈕,如圖11-6所示。 打開“建立關系”對話框,在第一個下拉清單框中選擇“客服中心2017年呼入量資料.xlsx”,如圖11-7所示。在第二個下拉清單框中選擇“客服中心話務員個人資訊表.xlsx”。 在預設情況下,Power BI Desktop會自動配置新關系的基數和交叉篩選器的方向等。 (1)基數 多對一(*:1):這是最常見的預設類型,意味着一個表中的列可具有一個值的多個執行個體,而另一個相關表(常稱為查找表)僅具有一個值的一個執行個體。 一對一(1:1):意味着一個表中的列僅具有特定值的一個執行個體,而另一個相關表也是如此。 (2)交叉篩選器的方向 雙向:這是最常見的預設方向。意味着在進行篩選時,兩個表被視為同一個表,适用于其周圍具有多個查找表的單個表。 單一:這意味着連接配接表中的篩選選項适用于被連接配接的表格。如果在Excel2013或更早的資料模型中導入了Power Pivot,則所有關系都将具有單個方向。 (3)使此關系可用 勾選此複選框後,意味着此關系用做活動的預設關系。如果兩個表之間存在多個關系,則Power BI Desktop可通過活動關系自動建立包含這兩個表的可視化對象。 11.1.3 手動編輯關系 11.1.4 手動删除關系 11.2 資料按列排序 在Power BI Desktop中,通過更改視覺對象的排序方式,可以突出顯示想要表達的資訊,并確定視覺對象反映想要傳達的任何趨勢。 11.2.1 使用排序依據 無論使用的是數值資料還是文本資料,都可按所需的方式對可視化效果進行排序。在任何視覺對象上,單擊“省略号”圖示,在彈出的菜單中選擇“排序依據”和排序所依據的字段,如圖11-14所示。 11.2.2 傳回預設排序 可以按任意列進行排序,但是有時也需要将視覺對象傳回到其預設的排序列。對于已選中排序列的視覺對象,隻需打開“排序依據”菜單,再次選擇此列,可視化内容即可傳回到其預設的排序列。 第12章 資料分析表達式 本章将介紹Power BI計算中所用的DAX公式,解決一些計算和資料分析問題。DAX公式就是路徑成本和計算列中所用的公式。我們已經熟悉Power BI Desktop、導入資料、将字段添加到報表,下面将介紹函數、計算列和計算表。 12.1 函數 12.1.1 函數定義 函數是使用特定值、調用參數并按特定順序或結構來執行計算的預定義公式。參數可以是其他函數、另一個公式、表達式、列引用、數字、文本、邏輯值(如TRUE或FALSE)或常量。 DAX包括以下函數類别: 日期和時間函數、時間智能函數、資訊函數、邏輯函數、數學函數、統計函數、文本函數、父/子函數和其他函數。讀者如果熟悉Excel公式中的函數,那麼對DAX中的很多函數都會覺得熟悉。但是,DAX函數在以下方面是獨一無二的。 (1)DAX函數始終引用完整列或表。如果僅想使用某個表或列中的特定值,則可以向公式添加篩選器。 (2)如果需要逐行自定義計算,那麼DAX提供可将目前行值或相關值用做一種參數的函數,以便執行因上下文而變化的計算。 (3)DAX包括許多會傳回表而非值的函數。表不會顯示出來,但可以将其用于提供其他函數的輸入。例如可以檢索表,然後計算其中的非重複值等。 (4)DAX包括各種時間智能函數,這些函數可以定義或選擇日期範圍,并基于此範圍執行動态計算。例如,可以比較并行時間段内的總和。 (5)不同于Excel中的VLOOKUP,DAX函數不會采用單元格或單元格區域作為引用。DAX函數采用某一列或表作為引用。 建立自己的公式之前,需要了解DAX公式文法。文法包括組成公式的各種元素,簡單來說就是公式的編寫方式。例如,TotalSales=SUM(Sales[SalesAmount])。 此公式包含以下文法元素。 (1)路徑成本名稱TotalSales。 (2)等号運算符(=)表示公式的開頭,完成計算後将會傳回結果。 (3)DAX函數SUM會将Sales[SalesAmount]列中的所有數字相加。 (4)括号可以包含一個或多個參數的表達式,函數至少需要一個參數。 (5)引用的表是Sales表。 (6)Sales表中的引用列為SalesAmount。 添加到報表後,此路徑成本将所包括的銷售額相加,進行計算并傳回值。SalesAmount列前面加上了列所屬的Sales表,這就是所謂的完全限定列名稱,因為它包括列名稱且前面加上了表名。同一個表中引用的列不需要在公式中包含該表名,這可以讓引用許多列的冗長公式更短且易于閱讀,但是,最好能夠在路徑成本公式中包含表名。 12.1.2 函數案例 建立ProductFullCategory列和新的計算列,将這兩個列中的值合并到新列中的新值内。假設我們想要在一個單值内同時展示産品類别和産品子類别,如手機-附件、手機-智能手機和PDA等。 在報表視圖或資料視圖中(此處使用報表視圖),如果看一下“字段”窗格中的産品表,就會發現給出的結果中沒有我們想要的任何字段。然而,我們有ProductCategory字段和ProductSubcategory字段,二者分别在其各自的表中,如圖12-1所示。 右擊“字段”窗格中的ProductSubcategory表,然後在彈出的快捷菜單中選擇“建立列”選項,這樣會確定新列被添加到ProductSubcategory表中,如圖12-2所示。 公式欄将在報表畫布或資料網格的頂部出現,可以在此處重命名列并輸入DAX公式,如圖12-3所示。 由于列名已在公式欄中突出顯示,是以隻需輸入“ProductFullCategory=”,如圖12-4所示。現在可以開始輸入公式了,希望新列中的值以ProductCategory表中的ProductCategory名稱開始,因為此列在不同但相關的表中,是以使用RELATED函數來獲得它。 在等号後輸入“R”,将出現一個下拉清單,其中有以字母R開頭的所有DAX函數,使用者輸入的字母越多,下拉清單中的函數就越接近所需的函數,選擇一個函數可以看到該函數的說明。向下拖動滾動條選擇RELATED,如圖12-5所示,然後按Enter鍵。 這時出現一個左括号和另一個下拉清單,其中包括可以傳遞到RELATED函數的所有可用的列,此外還會顯示參數所預期的說明和詳細資訊,如圖12-6所示。 表達式将始終出現在左括号和右括号之間。在這種情況下,我們的表達式将包含已傳遞到RELATED函數的單個參數,也就是要作為傳回值來源的相關列。列的清單會自動縮小以僅顯示相關的列,我們想要ProductCategory表中的ProductCategory列,是以選擇ProductCategory[ProductCategory],然後輸入右括号,如圖12-7所示。 我們想要添加短畫線符号來分隔各個值,是以在第一個表達式的右括号後面依次輸入空格、&符号、左引号、空格、短畫線(-)、另一個空格、右引号和另一個&符号。 該公式如下所示: ProductFullCategory=RELATED(ProductCategory[ProductCategory])&"-"& 最後輸入另一個左括号,然後在打開的下拉清單中選擇“[ProductSubcategory]”,進而完成公式輸入,如圖12-8所示。 按Enter鍵或單擊公式欄中的選中标記完成該公式的輸入,該公式将經過驗證并添加到ProductSubcategory表中的字段清單,注意計算列在字段清單中有一個特殊圖示,顯示它包含一個公式,如 12.2 計算列 12.2.1 計算列 計算列使用資料分析表達式(DAX)計算結果,該表達式是一個旨在處理關系資料(如Power BI Desktop中的)的公式語言。DAX包括一個超過200個函數、運算符和構造的庫,在建立公式時提供高度的靈活性,可以滿足幾乎任何資料分析的需求。 DAX公式類似于Excel公式,具有許多與Excel相同的功能,但是DAX函數旨在處理互動式地切片或篩選報表中的資料,例如Power BI Desktop中的資料。Excel可以在表中的每行使用不同的公式,而DAX公式不具備這樣的功能。 12.2.2 計算列案例 建立一個報表,統計不同城市的超市銷售額,将“省市和城市”作為單個值顯示在同一行,現在表中沒有想要的字段,如圖12-10所示。 12.3 計算表 12.3.1 計算表 計算表使用資料分析表達式(DAX)計算結果,它是一個旨在處理如Power BI Desktop中的關系資料的公式語言。在Power BI Desktop中,大多數情況下,都要從外部資料源将資料導入模型。通常,計算表适合用于将其作為模型的一部分而存儲的中間計算和資料,而非在運作中計算的或作為查詢的一部分而存儲的中間計算和資料。 與作為查詢的一部分而建立的表不同,在報表視圖或資料視圖中建立的計算表是以已加載到模型中的資料為基礎的。例如,可以選擇合并或交叉聯接兩個表。與普通表一樣,計算表也能與其他表建立關系,計算表中的列具有資料類型、格式設定,并能歸屬于資料類别,可以随意對列命名,并将其像其他字段一樣添加到報表可視化效果中。 12.3.2 計算表案例 為了分析客服中心在2017年10月份和11月份的來電情況,需要将“客服中心10月份來電記錄表.xlsx”和“客服中心11月份來電記錄表.csv”合并成單個表。 使用計算表将這兩個表合并非常容易。盡管可以在報表視圖或資料視圖中建立計算表,但是在資料視圖中建立會稍微容易一點,因為在資料視圖中可以立即檢視新的計算表。首先導入資料源,在資料視圖的“模組化”功能區中,單擊“新表”按鈕,出現一個公式欄,如圖12-14所示。