|
Программирование >> Sql: полное руководство
значений всех измерений соответствует одно значение некоторого параметра - факт , который обычно является зафиксированным в системе результатом деятельности компании. Обувь Аксессуары, Одежда
Рна21.£р&<мврнов првдставтиие данных о продажах Давайте разберем работу типичного аналитического приложения на простом примере. Возьмем коммерческую компанию, которая продает несколько категорий товаров разных производителей и имеет несколько сотен клиентов в разных регионах страны. Руководству компании требуется провести анализ данных о динамике продаж по пяти измерениям, анализ должен осветить имеющиеся тенденции и помочь выявить возможности увеличения сбыта Вот эти пять измерений, определяющих куб данных, фактами которого являются объемы продаж: Категория. Категория продаваемого товара (обувь, аксессуары, белье, одежда и т.д.). В хранилище содержатся данные о примерно двух десятках категорий товаров. Производитель. Производитель конкретного товара. Компания может торговать товарами 50 разных производителей. Клиент. Покупатель товаров. У компании несколько сотен клиентов. Крупней-щие из них заказывают товары в ценфальном офисе и обслуживаются одними и теми же служащими. Другие покупают товары в локальных отделениях компании и обслуживаются их софудниками. Регион. Регион страны, в котором продаются товары. Одни клиенты компании всегда покупают товар в одном и том же регионе, другие могут делать это в нескольких регионах. Месяц. Месяц, в котором были проданы товары. Для сравнительного анализа руководство компании решило офаничиться хранением данных за последние 36 месяцев. Каждое из этих пяти измерений относительно независимо от остальных. Объемы Продаж по конкретному клиенту могут быть рассредоточены по нескольким регионам. Товары конкретной категории могут поставляться одним или несколькими Производителями. Фактом в каждой ячейке пятимерного куба является объем продаж ОЛЯ конкретной комбинации значений пяти измерений. Всего куб содержит более 35 миллионов ячеек (24 категории х 50 производителей х 300 клиентов х 3 региона х 36 месяцев). Схема звезда Для большинства хранилищ данных самым эффективным способом моделирования N-мерного куба фактов является схема звезда . На рис. 21 3 изображено, как вьп-лядит такая схема для хранилища данных коммерческой компании, описанною в предыдущем параграфе. Каждое измерение куба представлено таблицей его значений. На рис. 21 3 таких таблиц пять: categories (категории), suppliers (производители), customers (клиенты), regions (регионы) и months (месяцы). Для каждого значения измерения в таблице имеется отдельная строка. Например, в таблице months 36 строк, по одной для каждого месяца всего периода, за которьш анализируются данные о продажах. А в таблице regions три региона представлены тремя строками. Таблица CATEGORIES Таблица SUPPLIERS
Таблица CUSTOMERS JCP INC FIRST CORP ACME MFG ZETACORP
Таблица SALES (фаигты) Таблица MONTHS Январь 1999 Февраль 1999 Март 1999 Апрель 1999 $ 50,475 $ 64,370 $ 93 143 t 61,090 $ 57,443 $61,090 $ 93,500 $61,056 Таблица REGIONS Запад Восток Центр Рис 213. Скема зв ншжомМёрчвской компании Таблицы измерений в схеме звезда часто содержат столбцы с описательной текстовой информацией или другими атрибутами, связанными с конкретным измерением (такими как имя контактного лица из фирмы-производителя, адрес и номер телефона клиента или сроки контракта). Эти столбцы могт выводиться в отчетах, генерируемых аналитическим приложением. У таблицы измерения всегда имеется первичный ключ, индексирующий значения этого измерения. Если значения измерения являются числами или короткими текстовыми строками, то они же используются в качестве первичного ключа. Но чаше в качестве значения выступает некий код. Типичными примерами являются трехбуквенные коды аэропортов и идентификаторы клиентов. В нашем учебном хранилище, изображенном на рис. 21.3, мы будем использовать в качестве ключевых полей настоящие значения измерений в таблицах REGIONS ( Запад , Восток и т.д.), CATEGORIES ( Одежда , Обувь и т.д.) и MONTHS. Остальные два измерения будут индексироваться по кодам (поле CUST CODE в таблице CUSTOMERS и поле SUPP CODE в таблице SUPPLIERS). Самой большой таблицей в базе данных является таблица фактов. Она - центр схемы. На рис, 21.3 это таблица SALES (продажи). Таблица фактов содержит столбец со значениями, которые находятся в ячейках N-мерного куба (см. рис. 21.2) Кроме него в таблице фактов имеются столбцы с внешними ключами для всех таблиц измерений. В нашем примере их пять. Каждая строка таблицы фактов соответствует одной ячейке куба данных. Внешние ключи связывают эту таблицу со строками таблиц измерений, соответствующими позиции в кубе значения ее первого столбца. В таблице фактов обычно немного столбцов, но зато очень много строк: сотни тысяч и даже миллионы - это вполне обычный размер хранилищ данных в промышленных и коммерческих компаниях. Столбец фактов почти всегда содержит числовые значения, например денежные суммы, количество проданного товара и т.п. Подавляющее большинство отчетов, генерируемых аналитическими приложениями, содержит только итоговые данные - суммы, средние, максимальные и минимальные значения, процентные отношения, - получаемые путем арифметических операций над числовыми значениями из столбца фактов. Причина, по которой схема на рис. 21.3 названа звездой , достаточно очевидна. Концы звезды образуются таблицами измерений, а их связи с таблицей фактов, расположенной в центре, образуют лучи. При такой структуре базы данных большинство запросов из области делового анализа объединяют центральную таблицу фактов с одной или несколькими таблицами измерений. Вот ряд примеров: Показать итоговые объемы продаж одежды за январь по регионам. SELECT SUM{SALES AMOUNT), REGION FROM SALES, REGIONS WHERE MONTH = 01/1999 AND PROD TYPE - ОДЕЖДА AND SALES.REGION = REGIONS.REGION GROUP BY REGION ORDER BY REGION Показать средние объемы продаж товаров каждого производителя по клиентам и по месяцам SELECT .WG {SALES AM0UNT) , CUST NAME, SUPP NAME, MONTH FROM SALES, CUSTOMERS, SUPPLIERS WHERE SALES. CUST CODE = COSTOMERS . CUST CODE SALES.SUPP CODE = SUPPLIERS.SUPP CODE GROUP BY CUST NAME, SUPP NAME, MONTH ORDER BY CUST N?ME, SUPP NAME, MONTH
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |