2010-07-16 64 views
2

我正在爲我的倉庫設計一個新的客戶事實和維度。在我尋找好的示例模型時,我注意到一些奇怪的東西。沒有人似乎有一個以客戶爲中心的事實。我發現的每個例子都有一個交易事件,例如銷售或訂單,作爲以客戶爲維度的核心事實。這對我提出了一個問題。沒有人使用客戶事實?

我想通過客戶的事實來認真對待錯誤嗎?我們的目標是對客戶行爲進行分析,例如訂單頻率,總支出,購置成本,獨特性,產品數量等等。這些問題自然意味着我不是一個維度。我已經有一個訂單事實,對於以訂單爲中心的查詢很有用,但對於以客戶爲中心的查詢並不好。

爲了讓您更詳細一點的客戶情況將可能有下列措施及尺寸:

措施:

  • 客戶的計數
  • 鮮明的產品數
  • 完成順序計數
  • 總收入
  • 總成本
  • 計數券收到贖回
  • 成本券贖回

尺寸券

  • 計數:

    • 訂單交貨日期
    • 訂單交貨時間
    • 訂單交貨地理
    • Acquisit上述離子源
    • 訂單類型
    • 優惠券類型

    的似乎很自然的我,但我很擔心我缺少一個明顯的禁忌,採取了以客戶爲中心的方法,在這個新的多維數據集。

  • +0

    另一個忽略提及的項目是需要多對多關係的數量。例如,我將具有訂單日期和訂單地理的維度。這兩者都必須是多對多的,因爲每個客戶可以下多個訂單,並且每個訂單都可以交付到不同的地點。事實上,我的幾乎所有維度都是多對多的。 這是否會改變您對我的方法智慧的評估? – 2010-07-19 04:16:59

    +0

    @凱文一個事實只能與一個維度相聯繫。如果客戶有多個訂單,「訂單」不能成爲客戶的維度。從客戶到訂單有一張橋牌桌是毫無意義的 - 因爲那個人必須將兩個明星(客戶和訂單)連接到他們的業務密鑰上。同上地理。不可能詢問客戶的「多地理區域」。訂單的位置和數量以及平均訂單數量都是可以詢問客戶的事情。看看你提出的尺寸 - 其中大部分對於顧客而言是毫無意義的。 – 2010-07-19 12:10:28

    +0

    @Kevin例如:2010年1月1日起,客戶C的產品計數地理位置是什麼?問這個問題沒有意義。客戶有這樣的事實,但地理不是事實的有效維度。 – 2010-07-19 12:12:06

    回答

    0

    我可能誤解了你的問題,但讓我們看看,可從factOrder,老式的方式客戶的行爲來學習。

    假設factOrder的那粒是爲了 在一行上,並且有的OrderID作爲退化維度。

    -- Number of customers who ordered something at least once 
    select 
        count(distinct CustomerKey) as PayingCustomers 
    from factOrder ; 
    

    -- Number of orders and sales per customer 
    select 
         CustomerKey 
        , count(distinct OrderID) as NumberOfOrders 
        , sum(ExtendedPrice)  as Total 
    from factOrder 
    group by CustomerKey ; 
    

    -- Histogram (x = NumberOfOrders, y = People, Amount) 
    with 
    orders_per_customer as (
        select 
         CustomerKey 
        , count(distinct OrderID) as cnt 
        , sum(ExtendedPrice)  as Total 
        from factOrder 
        group by CustomerKey 
    ) 
    select 
         cnt  as NumberOfOrders 
        , count(1) as People 
        , sum(Total) as Amount 
    from orders_per_customer 
    group by cnt 
    order by cnt asc ; 
    

    -- Distinct products ordered by customer 
    select 
         CustomerKey 
        , count(distinct ProductKey) as DistinctProductsOrdered 
    from factOrder 
    group by CustomerKey ; 
    

    -- Histogram (x = NumberOfDistinctProducts, y = People) 
    with 
    products_per_customer as (
        select 
         CustomerKey 
        , count(distinct ProductKey) as cnt 
        from factOrder 
        group by CustomerKey 
    ) 
    select 
         cnt  as NumberOfDistinctProducts 
        , count(1) as People 
    from products_per_customer 
    group by cnt 
    order by cnt asc ; 
    
    +0

    我的商業用戶不是與倉庫交互而是與多維數據集進行交互。立方體交互由Excel或Cognos調解。雖然我可以很容易地在SQL或MDX中執行這樣的查詢,但我的商業用戶卻不能。這是我作爲我的訂單多維數據集的一個補充,似乎正在推動客戶多維數據集的另一個原因。 – 2010-07-19 04:19:28

    4

    我們有客戶資料。很多時候,他們都是隻是連接幾個維度的事實表。

    聽起來像是你的很多事實都派生或摘要。糧食仍然很重要。如果你說的訂單計數是MTD(和日期)或所有時間等。

    我不認爲這有什麼問題,但我認爲,因爲這是派生數據,大多數人會把它在「數據集市」或任何分析子集中最好的明確術語。

    我同意用相同的方式建模它是完全有效的。唯一需要注意的是與所有派生數據相同,它需要保持一致。

    您的客戶將有一個尺寸(符合,因爲它是模型之間共享),然後CustomerStats事實表也好,都與那粒這股所有這些方面每一個事實。

    +0

    你在這裏做出了一些非常好的觀點。特別是關於沒有事實的事實表。但要明確這不是我要建立的。 – 2010-07-23 14:00:39

    1

    之所以這麼多的系統是爲了爲中心而非以客戶爲中心是你如何識別客戶如此頻繁地隨時間變化:以前治療業務的客戶發展成治療個別員工爲客戶,反之亦然,或客戶將更改/拆分/合併地址,或者企業更改其名稱,並且我們希望整合(或隔離)舊的和新的性能總計,或者現在必須擴展送貨地址和帳單地址以包括支持地址,或者操作員忘記或錯誤地爲另一個地址目的,或者客戶希望僅使用特定的送貨地址,等等等。

    這是here更詳細的說明。

    0

    措施,如order frequencytotal spendacquisition costdistinct product count實際上從Orders推導出一個事實表,與客戶的尺寸。每個客戶的聚合可以很容易地按每個產品或每個地理位置進行聚合。

    正如凱德魯曾建議,你可以建立一個客戶彙總表,它應該從另一個事實表然而被分離,這將完全是一個性能決定。通過構建Customers作爲Orders的維度,您保留最大的靈活性。

    +0

    我已經有一個使用多個維度的訂單事實。其中一個方面是客戶。然而,問題是我的商業用戶試圖回答周圍行爲的很多問題都非常難以用現有的訂單事實和維度來回答。我可以改變設計,但這會對我的用戶產生額外的下游影響。這一新客戶事實的驅動因素之一就是讓我可以保留現有的事實並儘量減少對用戶的影響。 – 2010-07-23 14:04:10

    +0

    由於性能問題或由於模式限制,是否極其困難? 如果是模式限制 - 你能提供一個還是兩個例子? – shmichael 2010-07-27 09:04:18

    相關問題