Power BI學(xué)習(xí)-Summarize,Summarizecolumns,Addcolumns區(qū)別

今天簡單說下summarize,summarizecolumns,sddcolumns這三個DAX函數(shù)的功能及用法:

1.SUMMARIZE函數(shù)

語法:SUMMARIZE(表,[分組列],匯總列名,匯總表達(dá)式,...)

作用:自動計算并返回分組的匯總表,類似query中的分組依據(jù)

參數(shù):由三大部分組成

第一部分:

第一個參數(shù):表,是需要匯總的表,可以是維度表也可以是事實表,常用的是事實表,因為基于后面分組列的需求,如果事實表的話,可以引用任何有關(guān)聯(lián)的維度表中的列進(jìn)行分組,如果是維度表,則只能引用該表內(nèi)的列

第二部分:

第二個參數(shù):可選項,提取該列的非重復(fù)值列表,分組用,可以使用多個列,用逗號分隔,返回多個列的有效組合

第三部分:

第三個參數(shù):匯總列的列名,必須用雙引號

第四個參數(shù):匯總列依據(jù)的表達(dá)式

第三參數(shù)和第四參數(shù)后面跟多個列名和表達(dá)式時,它會返回這些列的有效組合

SUMMARIZE函數(shù)如果只用前兩個參數(shù)會返回該列的不重復(fù)列表,其功能與VALUES相似。

根據(jù)參數(shù)分割分別舉例:

①SUMMARIZE函數(shù)使用第一個參數(shù)和第二個參數(shù)時:

函數(shù)編寫:

SUMMARIZE(FILTER('銷售數(shù)據(jù)表','銷售數(shù)據(jù)表'[產(chǎn)品ID]=3001),'門店信息表'[門店])

我這塊是因為方便下面舉例篩選了產(chǎn)品ID為3001的,結(jié)果跟SUMMARIZE('銷售數(shù)據(jù)表''門店信息表'[門店])是一樣的,返回結(jié)果只有一列產(chǎn)品ID為3001的非重復(fù)門店表:

第二參數(shù)使用多個列,用逗號分隔,返回多個列的有效組合

如:根據(jù)年份和門店匯總一張表

函數(shù)編寫:

SUMMARIZE(FILTER('銷售數(shù)據(jù)表','銷售數(shù)據(jù)表'[產(chǎn)品ID]=3001),'日歷表'[年],'門店信息表'[門店])

②SUMMARIZE函數(shù)使用四個參數(shù)時:

如:求每年各門店的銷售量和銷售額

函數(shù)編寫:

SUMMARIZE(FILTER('銷售數(shù)據(jù)表','銷售數(shù)據(jù)表'[產(chǎn)品ID]=3001),'日歷表'[年],'門店信息表'[門店],"銷售量",[銷售量],"銷售額",[銷售額])

這個函數(shù)常用的方式就是這樣,當(dāng)然也有高級功能,使用rollup和rollupgroup參數(shù),分別計算總計和小計,兩個函數(shù)都是在第二參數(shù)上增加的,結(jié)果都是一樣的,返回小計和總計:

函數(shù)編寫:

SUMMARIZE(FILTER('銷售數(shù)據(jù)表','銷售數(shù)據(jù)表'[產(chǎn)品ID]=3001),ROLLUP('日歷表'[年],'門店信息表'[門店]),"銷售量",[銷售量],"銷售額",[銷售額])

如果在ROLLUPGROUP外面增加ROLLUP則是直接算出總計。

2.SUMMARIZECOLUMNS函數(shù)?

語法:SUMMARIZECOLUMNS([分組列],匯總列名,匯總表達(dá)式,...)

這個函數(shù)跟SUMMARIZE功能是一樣的,此函數(shù)第一個參數(shù)不用寫表,直接是第二參數(shù)以后的參數(shù),是SUMMARIZE的升級版

舉例:

SUMMARIZECOLUMNS('日歷表'[年],'門店信息表'[門店],"銷售量",[銷售量],"銷售額",[銷售額])結(jié)果跟上面②中寫法是一樣的

3.ADDCOLUMNS函數(shù)

語法:ADDCOLUMNS(原表,增加的列名1,增加的列值1,增加的列名2,增加的列值2,...)

參數(shù):

第一個參數(shù)是表,原表

第二個參數(shù)是增加的列名,必須使用雙引號

第三個參數(shù)是增加的列值,列表達(dá)式

返回:表(包含原始表和增加的列的新表)

注意:ADDCOLUMNS是在原表的基礎(chǔ)上增加新列匯總,返回一個新表

比如我在省份表中增加一列銷售量

函數(shù)編寫:

ADDCOLUMNS('地域表',"銷售量",[銷售量])

再看另一種寫法:

ADDCOLUMNS('地域表',"銷售量",SUM('銷售數(shù)據(jù)表'[數(shù)量]))

結(jié)果返回不同,這是因為ADDCOLUMNS會受篩選上下文影響,所以增加的表達(dá)式列值需用度量值,其實在寫DAX函數(shù)時,為了避免因上下文影響,盡量引用書寫好的度量值,當(dāng)然如果改下公式為ADDCOLUMNS('地域表',"銷售量",CALCULATE(SUM('銷售數(shù)據(jù)表'[數(shù)量]))),結(jié)果也是一樣的,CALCULATE函數(shù)會將行上下文轉(zhuǎn)化成篩選上下文。

如果解決了您的困惑,動動發(fā)財小手點個贊吧,我是Sugargl,歡迎關(guān)注我,88

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容