2017-02-01 56 views
1

我需要在DAX中構建一個公式,該公式將顯示按產品劃分的最初購買後再次購買的客戶數量。我有一個標準的數據倉庫,其中包含訂單放置事實表,客戶維度表和產品維度表。我可以用這個公式來找到誰購買的每一個產品在其最初購買的客戶數量:構建DAX網關分析公式

First Purchase Customer Count = CALCULATE(DISTINCTCOUNT(Demand[CustomerKey]),Demand[Customer Order Sequence Number] = 1) 

我的視覺與產品作爲唯一屬性的表,所以這第一個公式被每個計算產品。下一個公式需要計算第二次購買的客戶數量,而不管他們第二次購買什麼產品,但它應該只包括第一次購買當前產品的客戶。我已成功創建此公式來完成此操作,但它通常在1M行限制上出錯,除非我按子類別過濾產品。

Rebuyer Count = COUNTROWS(INTERSECT(SUMMARIZE(FILTER(Demand,Demand[Customer Order Sequence Number] = 1),[CustomerKey]),SUMMARIZE(CALCULATETABLE(FILTER(Demand,Demand[Customer Order Sequence Number] = 2),all('Product')),[CustomerKey]))) 

我該如何改進這個公式,以便它在沒有轟炸的情況下運行?

回答

0

老問題,但是在這仍然是您的問題的可能性之外,您是否回顧了DaxPatterns.com上的新顧客和退貨顧客模式? http://www.daxpatterns.com/new-and-returning-customers/

您的回頭客戶解決方案是創建一張第一次客戶表,然後創建一個第二次客戶表,然後將這兩個表加在一起計算第一次客戶的數量也是第二次客戶時間客戶。

DaxPatterns解決方案略有不同。它不是即時計算2個潛在的大客戶表,然後加入他們,而是計算已經進行了購買的現有客戶。

您需要調整其解決方案以滿足您的要求。他們有絕對回頭客的概念(意思是客戶的第一次購買是針對任何產品的,而他們的第二次購買是針對您關心的特定產品)。您希望得到相反的結果(客戶的第一次購買是針對特定產品的,第二次購買可以是任何產品)。

然而,總體而言,如果您從初次客戶的單一列表開始篩選出您不想要的客戶(即從未再買過的客戶)與編譯2個單獨的列表的顧客並相互交叉。 (這是讓所有人都進入劇院,然後把每個人都沒有票的情況下扔出去,與在門口檢查門票,只讓門票進來的人之間的區別)。