2013-04-16 2 views
0

Сегодня у нас есть измерение Customer.Cube для подсчета количества клиентов за данный период

У нас есть несколько атрибутов SCD2, поэтому есть столбцы DateFrom и DateTo, чтобы указать во время того, что было опасно для записи. У нас также есть CreationDate, когда клиент был создан, и RemoveDate, когда клиент был удален.

Теперь я хочу создать куб, который в excel может отображать количество уникальных клиентов за определенный период. Скажем, например, что я каждый месяц хочу показать количество клиентов, которые не были удалены. В excel это может выглядеть так:

2013-01  2013-02  2013-03 
100   120   80 

2013-02 было 120 клиентов. Это не означает, что мы получили 20 новых клиентов с 2013 по 01 год, так как мы, возможно, потеряли пару клиентов. Может быть, мы получили 30 новых и потеряли 10.

Как это можно сделать? Все примеры, которые я прочитал, показывают подключение к таблице фактов для продаж. Но я хочу знать количество клиентов. Я думаю, мне удалось решить некоторую проблему, используя таблицу фактов без фактов и используя меру count (отдельный CustomerId). Но это дает возможность разделить общее количество клиентов. Я хочу видеть количество клиентов за каждый месяц. Поэтому я считаю, что мне нужно каким-то образом связать Date-dimension. Но я не могу подключить его с помощью createdate или removeate, так как он будет учитываться только для этого конкретного дня.

Спасибо!

ответ

0

Кажется довольно простым ... создать совокупную таблицу фактов, которая записывает только «первую» транзакцию данного клиента за любой период времени, который вы хотите отслеживать. Я предполагаю, что ваша таблица фактов продаж имеет дату продажи?

датирует SCD заказчика не должен иметь ничего общего с даты продажи ...

AGG_CUSTOMER_SHOP 
------------------------ 
MONTH_NUMBER INTEGER 
CUSTOMER_ID INTEGER 

Ваш процесс ETL, который строит это, делая что-то вроде

SELECT distinct month_number, customer_id 
    FROM fact_sales s 
    JOIN dim_date d on (s.date_id = d.date_id) 
    JOIN dim_customer c on (c.customer_id = s.customer_id) 

Ваша дата тусклый получает вам номер месяца (201301) или что-то еще, и вы просто храните его в своей совокупной таблице.

Смежные вопросы