Delphi та розширення ADO - все про IT та програмування

Written on 16 Вересня 2006 . Posted in Delphi

ЗМІСТ

Використання ADO MultiDimensional

Подробиці про OLAP можна знайти на сайті www.olap.ru, який супроводжує компанія «Інтерфейс», постачальник багатьох OLAP-продуктів на українському ринку.

У нашій статті ми можемо собі дозволити лише коротке введення в OLAP та створення сховищ даних, бо це знадобиться для розуміння того, що є об'єктами ADO MD. Більш детально тему OLAP буде розкрито в одній із статей циклу «Вступ до СУБД».

OLAP та створення сховищ даних: коротке введення

Розглянемо, із чого зазвичай складається багатовимірне сховище даних. Уявімо торгову компанію, яка зберігає всі відомості про торгові операції в будь-якій базі даних, що містить серед інших уявлення Invoices з детальними відомостями про замовлення клієнтів. Припустимо, що звернення до цього подання приводить до появи набору даних, показаного в табл. 3.

Date ProductCategory ProductSubcategory Product Name Country City SalesPerson Payment
01.01.99VegetablesCanned VegetablesCanned TomatosНімеччинаBerlinNicolas Wilson$1280
01.01.99VegetablesFresh VegetablesDried MushroomsUKLondonDaniel Adams$514
01.02.99DairyCheeseCheddar CheeseНімеччинаFrankfurtNicolas Wilson$723
01.02.99DairyCheeseGorilla Cheese SpreadAustriaViennaNicolas Wilson$330
01.03.99VegetablesCanned VegetablesCanned TomatosUKLondonDaniel Adams$439
. . .. . .. . .. . .. . .. . .. . .. . .

Допустимо, нам потрібно дізнатися сумарну вартість усіх замовлень, зроблених клієнтами з Німеччини. Очевидно, що для отримання такого сумарного значення (summary) потрібно виконати наступний запит:

У цьому запиті можна замінити 'Germany' на 'Austria', або 'UK', або назву іншої країни. В результаті ми отримаємо одновимірний масив значень — по одному числу кожної країни, як показано в табл. 4:

Німеччина Austria UK USA.
$2003$330$953$5321

Тепер трохи ускладнимо завдання. Наприклад, запитаємо, якою є сумарна вартість замовлень овочів, зроблених клієнтами з Німеччини:

Vegetables Dairy Drinks …
Німеччина$1280$723$239
UK$514$0$732
Austria$0$330$0

Подібна таблиця найчастіше називається перехресною таблицею, крос-таблицею, і навіть зведеною таблицею (Cross table, Pivot table). Першим виміром (dimension) у ній є вимір Country, другим - ProductCategory.

Знову модифікуємо наш запит. Припустимо, тепер нам потрібно дізнатися, якою є сумарна вартість замовлень овочів, зроблених клієнтами з Німеччини та оброблених співробітником на ім'я NicolasВілсон.

Слід зазначити, що наборів таких сумарних значень може бути кілька (зокрема це можуть бути суми платежів, середня вартість, кількість замовлень тощо). Подібні сумарні значення в українській термінології називаються агрегатними даними, а в англомовній найбільш застосовні терміни summaries та measures.

У нашій статті для ілюстрації застосування об'єктів ADO MultiDimensional як OLAP-сервера ми будемо використовувати Microsoft SQL Server 7.0 OLAP Extensions (або Microsoft SQL Server 2000 Analysis Services). На даний момент OLE DB Provider for OLAP Services, що входить до складу Microsoft SQL Server OLAP Extensions (Microsoft SQL Server 2000 Analysis Services) та до складу Microsoft Office, є єдиним провайдером OLE DB, що дозволяє звертатися до багатовимірних даних. З його допомогою можна звертатися до даних, що зберігаються у багатовимірних базах даних Microsoft SQL Server 7.0/2000 або локальних файлах *.cub, які можна створити за допомогою Microsoft Excel 2000 . Однак ми вважаємо, що найближчим часом слід очікувати на випуск інших OLE DB-провайдерів для інших OLAP-серверів.

Для ілюстрації роботи ADO MD ми використовуємо багатовимірну базу даних FoodMart, що входить до комплекту Microsoft SQL Server 7.0 OLAP Extensions. Однак за необхідності можна використовувати будь-який локальний файл *.cub, створений за допомогою Microsoft Excel 2000, - у цьому випадку на комп'ютері, де будуть створюватися приклади, має бути встановлений Microsoft Excel 2000.

Почнемо вивчення ADO MD з об'єктної моделі, доступної у програмах Delphi.