鏈接回表是PowerPivot常用的一種DAX查詢模型數據表信息的方式,不僅能把查詢到的信息載入Excel工作表中,而且查詢出來的表還可以當作工作表中的表再次引入Excel數據模型,與原有模型內的表格搭配使用。
示例:使用鏈接回表創(chuàng)建考勤底表
統(tǒng)計員工考勤是一種常見的管理需求,考勤統(tǒng)計中的主要難點在于考勤數據記錄中缺勤記錄的不確定。一般情況下,當納入考勤統(tǒng)計的人員花名冊確定時,需要結合考勤周期(通常是自然月)的天數,先繪制一張人數為行數、日期為列數的二維統(tǒng)計表,然后把結果逐項填入,確保統(tǒng)計完整,如圖17-101所示。
圖17-101傳統(tǒng)考勤表統(tǒng)計布局
眾所周知,這種表格數據結構不僅不符合數據透視表的數據源結構,而且效率很低,也不能和考勤機的原始數據進行快速匹配。但如果能夠獲得一張以人數結合天數為總行數,并且包含所有人員工號與日期組合的一維表來作為統(tǒng)計基本考勤信息底表,那么通過數據透視表即可獲得最終的統(tǒng)計效果,如圖17-102所示。
圖17-102每一個工號根據天數獲得相應行數的底表記錄
在傳統(tǒng)的Excel處理方式中,要想取得圖17-102中的考勤底表是一個難點。下面介紹使用鏈接回表的方式來快速生成考勤底表,具體操作步驟如下。
步驟1將準備好的“日期”表添加到數據模型,如圖17-103所示。
圖17-103將日期表添加到數據模型
步驟2在【PowerPivotforExcel】窗口中,單擊【開始】 【從其他源】按鈕,在彈出的【表導入向導】對話框中選擇【Excel文件】命令,單擊【下一步】按鈕,在【友好的連接名稱】文本框中輸入“花名冊”,選擇目標文件“17.22使用鏈接回表創(chuàng)建考勤底表的花名冊”所在路徑,選中【使用第一行作為列標題】復選框將“花名冊”工作表中的信息添加到數據模型,單擊【下一步】按鈕,如圖17-104所示。
圖17-104外部獲取花名冊信息
步驟3在【表導入向導】對話框中單擊【預覽并篩選】按鈕,在【預覽所選表】中單擊【狀態(tài)】下拉按鈕,取消選中【離職】復選框,單擊【確定】按鈕,在此處使用【預覽并篩選】功能既能減少數據的載入,提升效率,又能過濾【花名冊】中【狀態(tài)】為離職的人員信息,最后單擊【完成】按鈕,如圖17-105所示。
圖17-105【預覽并篩選】功能
步驟4數據導入成功后,單擊【關閉】按鈕向PowerPivot載入“花名冊”工作表中的數據信息,如圖17-106所示。
圖17-106向PowerPivot載入數據
步驟5新建一張Excel工作表,選擇【數據】選項卡,單擊【現有連接】按鈕,在彈出的【現有連接】對話框中選擇【表格】選項卡,在【新花名冊】選項區(qū)域選擇【花名冊】選項,單擊【打開】按鈕,在彈出的【導入數據】對話框中單擊【確定】按鈕,將模型中的表以鏈接表的形式載入工作表中,如圖17-107所示。
圖17-107從模型中加載一個鏈接回表到工作表環(huán)境
完成后獲得一個花名冊的鏈接表副本,如圖17-108所示。
圖17-108創(chuàng)建初始鏈接回表
步驟6此時載入的花名冊雖然還不是目標的考勤底表,卻具有一項很特殊的功能即可以通過編輯DAX語言來調整內容的返回,這是鏈接回表最重要的步驟。鼠標右擊當前表格中的任意一個單元格(如B2),在彈出的快捷菜單中執(zhí)行【表格】 【編輯DAX】命令,在彈出的【編輯DAX】對話框中單擊【命令類型】右則的下拉按鈕,在下拉列表中選擇【DAX】選項。并在【表達式】中輸入:
Evaluate
GENERATE(SUMMARIZE(‘花名冊’,[工號]),’日期表’)
單擊【確定】按鈕獲得所需的考勤底表,如圖17-109所示。
圖17-109對鏈接回表進行DAX編輯
表達式解析:
Evaluate是必需的聲明語句,可以使用換行或空格將具體的DAX表達式隔開。GENERATE語法如下。
GENERATE(table1,table2)
將兩個列表進行組合運算,返回兩個表的交叉連接表。
SUMMARIZE語法如下。
SUMMARIZE(Table,[GroupByColumnName1],…,[Name1],[Expression])
創(chuàng)建按指定列分組輸入表的摘要。此處花名冊的信息較多,而且可能存在工號重復出現的情況,因此將【花名冊】表按照“工號”字段匯總來獲得單獨的工號列表,以便參與交叉連接計算。
提示:這種將兩個列表信息進行交叉連接的計算方式也被稱為笛卡兒積運算。
END