Invoices.Shippers.CompanyName as
ShipperName, Invoices.ExtendedPrice
FROM Categories INNER JOIN (Invoices INNER
JOIN Products ON Invoices.ProductID =
Products.ProductID) ON Categories.CategoryID =
Products.CategoryID;
Этот запрос обращается к представлению Invoices, содержащему сведения обо всех выписанных счетах, а также к таблицам Categories и Products, содержащим сведения о
Для удобства сохраним этот запрос в виде представления, назвав его Invoices1. Результат обращения к этому представлению приведен на рис. 8.
Рис. 8. Результат обращения к представлению Invoices1
Какие агрегатные данные мы можем получить на основе этого представления? Обычно это ответы на вопросы типа:
Какова суммарная стоимость заказов, сделанных клиентами из Франции?
Какова суммарная стоимость заказов, сделанных клиентами из Франции и доставленных компанией Speedy Express?
Какова суммарная стоимость заказов, сделанных клиентами из Франции в 1997 году и доставленных компанией Speedy Express?
Переведем эти вопросы в запросы на языке SQL2(табл. 1).
Таблица 1
Вопрос | SQL-запрос |
Какова суммарная стоимость заказов, сделанных клиентами из Франции? | SELECT SUM (ExtendedPrice) FROM invoices1 WHERE Country=’France’ |
Какова суммарная стоимость заказов, сделанных клиентами из Франции и доставленных компанией Speedy Express? | SELECT SUM (ExtendedPrice) FROM invoices1 WHERE Country=’France’ AND ShipperName=’Speedy Express’ |
Какова суммарная стоимость заказов, сделанных клиентами из Франции в 1996 году и доставленных компанией Speedy Express? | SELECT SUM (ExtendedPrice) FROM Ord_pmt WHERE CompanyName=’Speedy Express’ AND OrderDate BETWEEN ‘December 31, 1995’ AND ‘April 1, 1996’ AND ShipperName=’Speedy Express’ |
Результатом любого из перечисленных выше запросов является число. Если в первом из запросов заменить параметр ‘France’ на ‘Austria’ или на название иной страны, можно снова выполнить этот запрос и получить другое число. Выполнив эту процедуру со всеми странами, мы получим следующий набор данных (ниже показан фрагмент):
Country | SUM (ExtendedPrice) |
Argentina | 7327.3 |
Austria | 110788.4 |
Belgium | 28491.65 |
Brazil | 97407.74 |
Canada | 46190.1 |
Denmark | 28392.32 |
Finland | 15296.35 |
France | 69185.48 |
Germany | 209373.6 |
… | … |
Полученный набор агрегатных значений (в данном случае — сумм) может быть интерпретирован как одномерный набор данных. Этот же набор данных можно получить и в результате запроса с предложением GROUP BY следующего вида:
SELECT Country, SUM (ExtendedPrice) FROM invoices1
GROUP BY Country
Теперь обратимся ко второму из приведенных выше запросов, который содержит два условия в предложении WHERE. Если выполнять этот запрос, подставляя в него все возможные значения параметров Country и ShipperName, мы получим двухмерный набор данных следующего вида (ниже показан фрагмент):
| ShipperName | ||
Country | Federal Shipping | Speedy Express | United Package |
Argentina | 1 210.30 | 1 816.20 | 5 092.60 |
Austria | 40 870.77 | 41 004.13 | 46 128.93 |
Belgium | 11 393.30 | 4 717.56 | 17 713.99 |
Brazil | 16 514.56 | 35 398.14 | 55 013.08 |
Canada | 19 598.78 | 5 440.42 | 25 157.08 |
Denmark | 18 295.30 | 6 573.97 | 7 791.74 |
Finland | 4 889.84 | 5 966.21 | 7 954.00 |
France | 28 737.23 | 21 140.18 | 31 480.90 |
Germany | 53 474.88 | 94 847.12 | 81 962.58 |
… | … | … | … |
Такой набор данных называется сводной таблицей (pivot table) или кросс-таблицей (cross table, crosstab). Создавать подобные таблицы позволяют многие электронные таблицы и настольные СУБД — от Paradox для DOS до Microsoft Excel 2000. Вот так, например, выглядит подобный запрос в Microsoft Access 2000:
TRANSFORM Sum(Invoices1.ExtendedPrice) AS SumOfExtendedPrice
SELECT Invoices1.Country
FROM Invoices1
GROUP BY Invoices1.Country
PIVOT Invoices1.ShipperName;
Агрегатные данные для подобной сводной таблицы можно получить и с помощью обычного запроса GROUP BY:
SELECT Country,ShipperName, SUM (ExtendedPrice) FROM invoices1
GROUP BY COUNTRY,ShipperName
Отметим, однако, что результатом этого запроса будет не сама сводная таблица, а лишь набор агрегатных данных для ее построения (ниже показан фрагмент):
Country | ShipperName | SUM (ExtendedPrice) |
Argentina | Federal Shipping | 845.5 |
Austria | Federal Shipping | 35696.78 |
Belgium | Federal Shipping | 8747.3 |
Brazil | Federal Shipping | 13998.26 |
… | … | … |
Третий из рассмотренных выше запросов имеет уже три параметра в условии WHERE. Варьируя их, мы получим трехмерный набор данных (рис. 9).
Рис. 9. Трехмерный набор агрегатных данных
Ячейки куба, показанного на рис. 6, содержат агрегатные данные, соответствующие находящимся на осях куба значениям параметров запроса в предложении WHERE.
Можно получить набор двухмерных таблиц с помощью сечения куба плоскостями, параллельными его граням (для их обозначения используют термины cross-sections и slices).
Очевидно, что данные, содержащиеся в ячейках куба, можно получить и с помощью соответствующего запроса с предложением GROUP BY. Кроме того, некоторые электронные таблицы (в частности, Microsoft Excel 2000) также позволяют построить трехмерный набор данных и просматривать различные сечения куба, параллельные его грани, изображенной на листе рабочей книги (workbook).
Если в предложении WHERE содержится четыре или более параметров, результирующий набор значений (также называемый OLAP-кубом) может быть 4-мерным, 5-мерным и т.д.
Рассмотрев, что представляют собой многомерные OLAP-кубы, перейдем к некоторым ключевым терминам и понятиям, используемым при многомерном анализе данных.
- Аналитические базы данных
- Содержание
- Введение
- Гипотеза — модель — решение.
- Лекция 1 Эволюция корпоративных информационных систем
- Лекция 2 olap системы на железнодорожном транспорте.
- Лекция 3 Основные понятия olap
- Общие свойства хранилищ
- Ориентированность на предметную область
- Интегрированность
- Зависимость от времени
- Постоянство
- Данные хранилища
- Источники данных
- Хранилище данных (в узком смысле)
- Оперативный склад данных (Operational Data Store - ods)
- Витрины данных (Datamart)
- Метаданные
- Компоненты хранилища
- Подсистема загрузки данных
- Подсистема обработки запросов и представления данных
- Подсистема администрирования хранилища
- Лекция 4 Методика (методология) построения хранилищ данных
- Постановка задачи Системно-аналитическое обследование
- Техническое задание
- Проектирование
- Автоматизируемые процессы и функции
- Информационное обеспечение
- Компонентная архитектура
- Техническая архитектура
- Реализация
- Внедрение
- Выбор метода реализации Хранилищ данных
- Лекция 5 Рынок bi
- Продукция Microsoft
- Аналитическая платформа Deductor
- Лекция 6olapкуб. Построение, работа с элементамиOlap-куба
- Invoices.Customers.CompanyName as
- Invoices.OrderDate, Categories.CategoryName,
- Invoices.ProductName,
- Invoices.Shippers.CompanyName as
- Некоторые термины и понятия
- Типичная структура хранилищ данных
- Таблицы измерений
- Olap на клиенте и на сервере
- Технические аспекты многомерного хранения данных
- Лекция 7 Data mining
- Условные сокращения и обозначения
- Словарь