Как создать многомерную модель с разными метриками в зависимости от иерархического уровня

Мне нужно создать многомерную среду для анализа продаж для розничной компании.

Иерархия, которая будет присутствовать в моем Sales факте:

1 - Country
1.1 - Region
1.1.1 - State
1.1.1.1 - City
1.1.1.1.1 - Neighbourhood
1.1.1.1.1.1 - Store
1.1.1.1.1.1.1 - Section
1.1.1.1.1.1.1.1 - Catgory
1.1.1.1.1.1.1.1.1 - Subcatgory
1.1.1.1.1.1.1.1.1.1 - Product

Показатели, такие как Number of Sales, Revenue и Medium Ticket (Revenue / Number of Sales), имеют смысл до уровня Subcategory, потому что, если я достигну уровня Product, состав агрегации должен будет измениться (я думаю).

Кроме того, такие показатели, как Productivity, то есть Revenue / Number of Store Staff, не имеют смысла существовать в этой таблице фактов, потому что они работают только до уровня Store (я также думаю).

Я хотел бы знать, как лучше всего решить этот вопрос, потому что все это касается Sales, но некоторые имеют смысл до определенного уровня моей иерархии, а другие - нет.

Жду ответа и заранее спасибо!


person Lucas Rezende    schedule 28.07.2014    source источник
comment
Какой тип базы данных или программного обеспечения для хранения данных вы используете?   -  person Jared    schedule 29.07.2014
comment
@Salmonerd Oracle 10g с интеграцией данных Pentaho   -  person Lucas Rezende    schedule 29.07.2014
comment
Если бы я хотел сделать какую-то отчетность или анализ, я бы просто присоединил данные к таблице, в которой есть все необходимые атрибутивные данные для всего, что есть в ваших записях о продажах. Например, если у вас есть торговый документ, в нем, скорее всего, будет номер магазина. Затем вы можете присоединиться к таблице атрибутов для магазинов, в которой будут храниться такие вещи, как страна, регион, штат и т. д.   -  person Jared    schedule 29.07.2014


Ответы (1)


Вы должны разделить свою иерархию на 2 измерения: магазины и продукты.

Измерение «Магазины» связано с местом продажи, и вы можете указать количество сотрудников в этом измерении.

Store_Key  STORE    Neighbourhood    City  Country  Num_Staff
1          Store1   4th Street       LA       US    10
2          Store2   Main Street      NY       US    2

Размер продуктов выглядит так

Product_Key  Prod_Name       SubCat   Category     Unit_Cost
1            Cheese Sticks   Diary    Food         $2.00
2            Timer           Software Computing    $25.00

В вашей таблице фактов есть запись для каждой продажи, и она привязана к указанным выше измерениям.

Store_Key  Product_Key  Date      Quantity  Tot_Amount
1          1            31/7/2014   5         $10.00   (store1 sells 5 cheese)
1          2            31/7/2014   1         $25.00   (store1 sells 1 timer)
2          1            31/7/2014   3          $6.00   (store2 sells 3 cheese)
2          2            31/7/2014   1         $25.00   (store2 sells 1 timer)

Теперь, когда ваши данные готовы, вы можете использовать инструмент отчетности для получения необходимых показателей. Пример SQL выглядит примерно так:

SELECT store.STORE, 
       SUM(fact.tot_amount) as revenue, 
       COUNT(*) as num_sales
       SUM(fact.tot_amount) / store.NumStaff as Productivity
FROM tbl_Store store, tb_Fact fact
WHERE fact.Store_key = store.Store_key
GROUP BY store.STORE

должен вернуть следующий результат

STORE    revenue    num_sales    Productivity
Store1   $35.00     2            3.5
Store2   $31.00     2            15.5
person acutesoftware    schedule 31.07.2014
comment
Спасибо за ответ. Я понял твою точку зрения. В этом случае я думаю, что делений будет больше, например, Session, Category и Subcategory это атрибуты Product. Кроме того, Store может иметь много отделов, и у каждого отдела будет свой собственный анализ Productivity. - person Lucas Rezende; 05.08.2014