首頁>科技>

計算同時購買兩個產品的客戶非重複計數:

同時購買產品1、2的客戶非重複計數,我們需要知道購買產品1的客戶列表與購買產品2的客戶列表:

然後計算這兩個表的交集:

INTERSECT函式

表1與表2的交集結果是這樣的:

表2與表1的交集是這個結果:

就是說INTERSECT函式中引數的順序不同結果也有可能會不同,這個特性正適合做非重複計數,如果就是單純計數,反而會不準確。

我們把上面所有的內容放到度量值中:

非重複計數度量值 = COUNTROWS (		    DISTINCT (               INTERSECT (                             SELECTCOLUMNS ( FILTER ( '表', '表'[產品] = "1" ), "ID", [ID] ),                             SELECTCOLUMNS ( FILTER ( '表', '表'[產品] = "2" ), "ID", [ID] )                                 )                      ))

其實也不是不能準確計算重複技術,只不過要把這兩個交集的結果再合併起來,然後計數:

重複計數度量值 = COUNTROWS (             UNION(                     INTERSECT (                                    SELECTCOLUMNS ( FILTER ( '表', '表'[產品] = "1" ), "ID", [ID] ),                                    SELECTCOLUMNS ( FILTER ( '表', '表'[產品] = "2" ), "ID", [ID] )                                      ),                    INTERSECT (                                   SELECTCOLUMNS ( FILTER ( '表', '表'[產品] = "2" ), "ID", [ID] ),                                   SELECTCOLUMNS ( FILTER ( '表', '表'[產品] = "1" ), "ID", [ID] )                                    )                      ))

又或者我們單獨每個表計數然後相加,結果也是一樣的。

今天我們講的是兩個表取交集,INTERSECT函式,這個函式的引數是兩個表,或者是表的表示式,這兩個表的順序不同,結果會不同,通常是以第一個表中的行為基準取交集。

10
最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 改變人類生活的創新發明(一)