假如分別有100個(gè)不重復(fù)的姓和名,把每個(gè)姓和名進(jìn)行組合匹配,,就可以得到一萬(wàn)個(gè)不重復(fù)的姓名組合,,這種完全匹配的方式就是生成一個(gè)姓名的笛卡爾積。 下面就來(lái)看看生成笛卡爾積的幾種方式,,為了展現(xiàn)的方便,,以5個(gè)姓和5個(gè)名為例,更多的數(shù)據(jù)也是一樣操作的,。 在Excel中生成笛卡爾積 在Excel中可以利用INDEX函數(shù)實(shí)現(xiàn),,假如A列是姓,B列是名,,那么在C2中輸入公式:
然后公式向下填充,,就可以在C列生成笛卡爾積。 在Power Query中生成笛卡爾積 在PQ中相比Excel要簡(jiǎn)單的多,,假如有兩個(gè)表,,'姓'和'名',操作步驟如下,, ↑添加輔助列,,值設(shè)置為1(或其他任何值) ↑合并查詢-按輔助列-完全外部聯(lián)結(jié) ↑展開合并查詢 ↑合并列 通過(guò)簡(jiǎn)單的點(diǎn)擊操作,就生成了一個(gè)笛卡爾積,,雖然看起來(lái)步驟很多,,其實(shí)就是秒秒鐘的事。 使用DAX生成笛卡爾積 依然假設(shè)已經(jīng)有兩個(gè)表,,'姓'和'名',,在【建模】選項(xiàng)卡下點(diǎn)擊"新表",輸入,,
二者逐一匹配的笛卡爾積的結(jié)果就出來(lái)了,,這里GENERATE函數(shù)還可以使用CROSSJOIN替代,效果是一樣的,。 當(dāng)然我們并不想要姓和名分開為兩列,,而是想直接得到姓名合并的結(jié)果,,可以用ADDCOLUMNS把這兩列合并,,再利用SELECTCOLUMNS函數(shù)提取出需要的列,,把公式改為,
一步實(shí)現(xiàn)最終結(jié)果,, 總結(jié) 以上三種方式操作起來(lái)都不難,,數(shù)據(jù)處理雖不是DAX的長(zhǎng)處,但也可以簡(jiǎn)單實(shí)現(xiàn),,學(xué)會(huì)這幾個(gè)DAX函數(shù),,以后在數(shù)據(jù)分析時(shí)可以靈活構(gòu)建度量。 當(dāng)然在Power Query中最簡(jiǎn)單的,,數(shù)據(jù)處理本來(lái)就是PQ的核心功能,,這個(gè)案例中無(wú)需任何代碼或者公式,只是通過(guò)簡(jiǎn)單的界面操作,,就可以輕松完成,。 在Excel中雖然也僅需一個(gè)公式,但能靈活使用INDEX函數(shù)的都是高手級(jí)的,,能達(dá)到這個(gè)水平的人少之又少,,大部分人看到這個(gè)公式可能也不理解,并且如果數(shù)據(jù)量較大,,通過(guò)Excel處理速度也會(huì)變得很慢,。 所以說(shuō)學(xué)習(xí)Power Query可以讓你在數(shù)據(jù)處理上彎道超車,輕松逆襲,,之前在Excel中很難處理,,或者需要用到各種稀奇古怪函數(shù)才能得到的結(jié)果,在PQ中都顯得毫不費(fèi)力,。
|
|