今天簡單說下summarize,summarizecolumns,sddcolumns這三個(gè)DAX函數(shù)的功能及用法:
1.SUMMARIZE函數(shù)
語法:SUMMARIZE(表,[分組列],匯總列名,匯總表達(dá)式,...)
作用:自動(dòng)計(jì)算并返回分組的匯總表,類似query中的分組依據(jù)
參數(shù):由三大部分組成
第一部分:
第一個(gè)參數(shù):表,是需要匯總的表,可以是維度表也可以是事實(shí)表,常用的是事實(shí)表,因?yàn)榛诤竺娣纸M列的需求立磁,如果事實(shí)表的話呈队,可以引用任何有關(guān)聯(lián)的維度表中的列進(jìn)行分組,如果是維度表唱歧,則只能引用該表內(nèi)的列
第二部分:
第二個(gè)參數(shù):可選項(xiàng),提取該列的非重復(fù)值列表,分組用,可以使用多個(gè)列,用逗號(hào)分隔,返回多個(gè)列的有效組合
第三部分:
第三個(gè)參數(shù):匯總列的列名,必須用雙引號(hào)
第四個(gè)參數(shù):匯總列依據(jù)的表達(dá)式
第三參數(shù)和第四參數(shù)后面跟多個(gè)列名和表達(dá)式時(shí)宪摧,它會(huì)返回這些列的有效組合
SUMMARIZE函數(shù)如果只用前兩個(gè)參數(shù)會(huì)返回該列的不重復(fù)列表,其功能與VALUES相似颅崩。
根據(jù)參數(shù)分割分別舉例:
①SUMMARIZE函數(shù)使用第一個(gè)參數(shù)和第二個(gè)參數(shù)時(shí):
函數(shù)編寫:
SUMMARIZE(FILTER('銷售數(shù)據(jù)表','銷售數(shù)據(jù)表'[產(chǎn)品ID]=3001),'門店信息表'[門店])
我這塊是因?yàn)榉奖阆旅媾e例篩選了產(chǎn)品ID為3001的,結(jié)果跟SUMMARIZE('銷售數(shù)據(jù)表''門店信息表'[門店])是一樣的几于,返回結(jié)果只有一列產(chǎn)品ID為3001的非重復(fù)門店表:
第二參數(shù)使用多個(gè)列,用逗號(hào)分隔,返回多個(gè)列的有效組合
如:根據(jù)年份和門店匯總一張表
函數(shù)編寫:
SUMMARIZE(FILTER('銷售數(shù)據(jù)表','銷售數(shù)據(jù)表'[產(chǎn)品ID]=3001),'日歷表'[年],'門店信息表'[門店])
②SUMMARIZE函數(shù)使用四個(gè)參數(shù)時(shí):
如:求每年各門店的銷售量和銷售額
函數(shù)編寫:
SUMMARIZE(FILTER('銷售數(shù)據(jù)表','銷售數(shù)據(jù)表'[產(chǎn)品ID]=3001),'日歷表'[年],'門店信息表'[門店],"銷售量",[銷售量],"銷售額",[銷售額])
這個(gè)函數(shù)常用的方式就是這樣,當(dāng)然也有高級(jí)功能沿后,使用rollup和rollupgroup參數(shù),分別計(jì)算總計(jì)和小計(jì)沿彭,兩個(gè)函數(shù)都是在第二參數(shù)上增加的,結(jié)果都是一樣的尖滚,返回小計(jì)和總計(jì):
函數(shù)編寫:
SUMMARIZE(FILTER('銷售數(shù)據(jù)表','銷售數(shù)據(jù)表'[產(chǎn)品ID]=3001),ROLLUP('日歷表'[年],'門店信息表'[門店]),"銷售量",[銷售量],"銷售額",[銷售額])
如果在ROLLUPGROUP外面增加ROLLUP則是直接算出總計(jì)喉刘。
2.SUMMARIZECOLUMNS函數(shù)?
語法:SUMMARIZECOLUMNS([分組列],匯總列名,匯總表達(dá)式,...)
這個(gè)函數(shù)跟SUMMARIZE功能是一樣的瞧柔,此函數(shù)第一個(gè)參數(shù)不用寫表,直接是第二參數(shù)以后的參數(shù),是SUMMARIZE的升級(jí)版
舉例:
SUMMARIZECOLUMNS('日歷表'[年],'門店信息表'[門店],"銷售量",[銷售量],"銷售額",[銷售額])結(jié)果跟上面②中寫法是一樣的
3.ADDCOLUMNS函數(shù)
語法:ADDCOLUMNS(原表,增加的列名1,增加的列值1睦裳,增加的列名2造锅,增加的列值2,...)
參數(shù):
第一個(gè)參數(shù)是表,原表
第二個(gè)參數(shù)是增加的列名,必須使用雙引號(hào)
第三個(gè)參數(shù)是增加的列值,列表達(dá)式
返回:表(包含原始表和增加的列的新表)
注意:ADDCOLUMNS是在原表的基礎(chǔ)上增加新列匯總,返回一個(gè)新表
比如我在省份表中增加一列銷售量
函數(shù)編寫:
ADDCOLUMNS('地域表',"銷售量",[銷售量])
再看另一種寫法:
ADDCOLUMNS('地域表',"銷售量",SUM('銷售數(shù)據(jù)表'[數(shù)量]))
結(jié)果返回不同廉邑,這是因?yàn)锳DDCOLUMNS會(huì)受篩選上下文影響哥蔚,所以增加的表達(dá)式列值需用度量值,其實(shí)在寫DAX函數(shù)時(shí)蛛蒙,為了避免因上下文影響糙箍,盡量引用書寫好的度量值,當(dāng)然如果改下公式為ADDCOLUMNS('地域表',"銷售量",CALCULATE(SUM('銷售數(shù)據(jù)表'[數(shù)量])))牵祟,結(jié)果也是一樣的深夯,CALCULATE函數(shù)會(huì)將行上下文轉(zhuǎn)化成篩選上下文。
如果解決了您的困惑课舍,動(dòng)動(dòng)發(fā)財(cái)小手點(diǎn)個(gè)贊吧,我是Sugargl,歡迎關(guān)注我,88