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