Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ВУМИП 2012-07-06.doc
Скачиваний:
66
Добавлен:
13.05.2015
Размер:
9.35 Mб
Скачать

3.13. Анализ данныхcредствами многомерного кубаDecisionCube

Средства анализа данных (OLAP,OnLineAnalyticalProcessing) представ­лены вDelphiна панелиDecisionCube(Многомерный куб).

Рассмотрим порядок использования компонентов этой панели на примере анализа хода строительства по заказчикам и подрядчикам.

  1. Создадим новый проект и на форме размеcтим компонентDeci­sionQuery. Выполним командуDecision Query Editorиз кон­тек­ст­но­го меню этого компонента для вызова конструктора запросов (рис. 3.13.1).

  2. Нажмем кнопку SQL Builderдля построения запроса (рис. 3.13.2).

  3. Перенесем поля Nz,Np,Nsв окноDimension(измерение куба) и итоговые поля в клетках таблицы: итоги сметных и освоенных сумм (Sum(Ss),Sum(Fs)) и число строек (Count(Ns)) перенесем в окноSummaries.

  4. Перейдем на страницу SQLQueryи откорректируем текст коман­дыSQL: во фразеSelectукажем наименование колонок (без пробелов) «Заказ», «Подряд», «Стройка», «Смета», «Освоено», «Строек» (рис.3.13.3). Нажмем кнопкуEdit Query.

Рис. 3.13.1. Выбор данных, включаемых в таблицу анализа

Рис. 3.13.2. Окно построителя запросов

Рис. 3.13.3. Страница с текстом команды запросаSQL

Разместим на форме вычислительный компонентDecisionCubeсо свойствомDataSet=DecisionQuery1.

  1. Разместим компонент связиDecisionSourceсо свойствомDecisionCube=DecisionCube1.

  2. Разместим компоненты пользовательского интерфейса DecisionPivotи вывода результирующей таблицыDecisionGrid со свойствамиDecisionSource=DecisionSource1.

  3. Установим свойствоActive=Trueу компонентаDecision­Query1, что вызовет цепочку расчетов и вывод таблицы (рис. 3.13.4).

Рис. 3.13.4. Итоговая таблица и диаграмма анализа строительства

Щелчок мышкой по кружку с плюсом или минусом или по кнопкам с наименованиями полей (осей измерений) на объекте DecisionPivotразворачивает или сворачивает соответ­ствующие колонки или столбцы в таблице. Используя контекстное меню кнопок полей (осей измерений), можно перемещать эти поля по осям. Первая кнопка объектаDecisionPivotпозволяет выбрать тип итога в ячейках результирующей таблицы.

  1. Для получения графического представ­ле­ния результирующей таб­лицы анализа разместим компонентDecisionGraph(наследник компонентаChart(п. 2.3.7.7)) со свойствомDecisionSour­ce=Deci­sionSource1 (рис. 3.13.4). Вид диаграмммы можно настроить аналогично компонентуChart(п. 2.3.7.7).

  2. Выполним программу и проверим результат.

3.14. Клиент‑серверные субд

Клиент‑серверные СУБД обладают дополнительными возможностя­ми (например, запросы выполняются не на клиентской машине, а на от­дель­­­ном сервере‑базы данных и только результат возвращается и отоб­ра­жается на клиентской машине, что разгружает каналы передачи данных). Рассмотрим основные компоненты, применяемые дополнительно для орга­ни­зации работы таких СУБД.

Session‑ компонент организует связь с конкретной ба­зой, учитывая ее особенности. Если таких особенностей нет, то ком­по­нент можно не использовать, и будет создан стандартный сеанс под именемSession.

Основные свойства

AutoSessionName‑ генерируется уникальное имя сеанса (True).

ConfigMode‑ настройкаBDEдля поддержки псевдонимов.

DatabaseCount‑ число активный баз данных.

SessionName‑ уникальное имя сеанса для ссылки на компонент сеанса.

SQLHourGlass‑ указатель в виде песочных часов при работеBDE.

Основные методы

Open/Close‑ открытие/отключение всех баз и закрытие сеанса.

CloseDatabase(Database:TDatabase)‑ закрытие связи с конкретной базой.

GetDatabaseNames(List:TString)‑ получение списка всех псевдонимов баз.

GetTablebaseNames(...)‑ получение списка названий всех таблиц базы.

OpenDatabase(S):TDatabase‑ открытие базыSили создание временной.

Database‑ компонент обязателен и описывает подключаемую базу данных.

Основные свойства

AliasName/DriverName‑ псевдоним базы/имя драйвераBDE(например,STANDARD). Задается одно из этих двух свойств.

Connected‑ имеет значениеTrue, если связь с базой установлена.

DatabaseName‑ имя псевдонима или полное имя файла с базой данных.

DataSets‑ массив активных наборов данных.

Exclusive‑ монопольное использование базы (True).

InTransaction‑ имеет значениеTrue, если выполняется транзакция.

IsSQLBased‑ имеет значениеTrue, если используется драйверSQLLinksилиODBC.

KeepConnection‑ имеет значениеTrue, если программа сохраняет связь.

Params‑ параметры подсоединения к псевдониму BDE.

Session‑ ссылка на объект‑сеанс, если он есть иConnected=True.

SessionAlias‑ имеет значениеTrue, если используется псевдоним сеанса.

SessionName‑ название используемого сеанса.

ReadOnly‑ открытие базы только для чтения (True).

Temporary‑ использование временной базы (True).

TraceFlags‑ отслеживание работы над базой утилитойSQLMonitor.

TransIsolation‑ способ работы транзакций данной программы и других прило­же­ний:tiDirtyRead(разрешение чтения изменений данных до завер­шения транзакции),tiDirtyCommitted(разрешение чтения изменений дан­ных после завершения транзакции),tiRepeatableRead(чтение данных, кото­рые гарантированно хранятся в таблице без анализа других транзакций).

Основные методы

ApplyUpdates(...)‑ завершение всех транзакций.

StartTransaction, Commit, Rollback ‑ начать, завершить, отменить транзак­цию (п. 3.8).

Execute(S,...)‑ выполнение команды языка запросовSQLиз строкиS.

ValidateName (S)‑ процедура генерирует исключениеEdatebaseError, если базаSуже активна.

Обработчик события OnLogin(подключения базы) имеет парамет­ры:Database(псевдоним базы) иLoginParams(строка с параметрами для базы, например, имя пользователя и пароль).

StoredProc‑ хранимая процедура (например, на языкахDelphi, Паскаль,SQLилиJava), выполняемая не на клиентской машине, а на сервере базы.

Основные свойства

Params‑ массив типаTParamс параметрами хранимой процедуры.

ParamBindMode‑ передача параметров хранимой процедуре по имени (pbByName) или по порядковому номеру (pbByNumber).

ParamCount‑ число параметров хранимой процедуры.

Prepared‑ имеет значениеTrue, если процедура готова (отком­пили­рова­на) для выполнения.

StoredProcName‑ наименование хранимой процедуры на сервере.

Основные методы

CopyParams(Value:TParams)‑ копирование параметров хранимой процеду­ры в списокValue.

DescriptionsAvailable: Boolean‑ возвращаетTrue, если можно получить дополнительную информация о параметрах процедуры.

ExecProc‑ запуск процедуры на выполнение.

GetResults- возвращение выходного набора от СУБДSybaseилиMSSQL.

ParamByName(S):TParam‑ доступ к параметру под именемS.

Prepare‑ подготавливает хранимую процедуру к выполнению.

UnPrepare‑ отменяет подготовку хранимой процедуры к выполнению.

Пример:

StoredProc1.Params[0].AsString:=Edit2.Text; //передача параметра из Edit2.

StoredProc1.Prepare; //подготовка хранимой процедуры к выполнению.

StoredProc1.ExecProc; //выполнение хранимой процедуры.

StoredProc1.Getresults; //возвращение результата в параметреOutput.

Edit2.Text:=StoredProc1.ParamByname('Output').AsString;//вывод результата.

BatchMove‑ добавление, удаление или копирование записей.

Основные свойства

Destination/Source‑ исходный/выходной набор данных (таблица, запрос).

AbortOnKeyViolилиAbortOnProblem‑ имеет значениеTrue, если обработ­ка прерывается из‑за нарушения целостности базы или несоответствия типов полей.

ChangedCount‑ число записей в исходной таблице.

CommitCount‑ число записей в транзакции (для разбиения таблицы).

KeyViolCount ‑ число изменяемых записей, нарушающих целостность ключей.

Mappings‑ список строк связей между полями исходной и выходной таблиц вида: поле=поле.

Mode‑ режимы работы методаExecute:batAppend(добавить из исходной в вы­­хо­дную),batUpdate(замена записей в выходной таблице исходными по ключу),batAppendUpdate(режимbatUpdateи добавление отсут­ствующих),batCopy(копирование исходной в выходную),batDeleted(уда­ле­­ние запи­сей из выходной таблицы, совпадающих по ключу с исходны­ми).

ProblemCount/MoveCount‑ число не/скопированных записей.

RecordCount‑ ограничение на максимальное число копируемых записей.

Transliterate‑ вызов драйвера перекодировки символов.

Метод Executeосуществляет копирование.

UpdateSQL‑ обновление набора данных (запроса), не пред­назна­чен­­но­го для изменения. Компонент связывается с объектомQueryилиStoredProcчерез свойствоUpdateObjectэтих объектов. Затем за­дают­ся ко­мандыSQLдля автоматического выполнения после фор­ми­ро­ва­ния набора.

Основные свойства

DataSet, DeleteSQL, InsertSQL, ModifySQL‑ набор данных; командаSQLна удаление; добавление или обновления записей.

Query- ссылка на объектQuery, который описывает работу командыSQL.

Основные методы

Apply(UpdateKind: TUpdateKind)‑ задание параметров для командыSQLи ее исполнение.

ExecSQL(UpdateKind: TUpdateKind)‑ выполнение командыSQL.

SetParams(UpdateKind: TUpdateKind)‑установка параметров командыSQL.

NestedTable‑ доступ к вложенной целой таблице в одно поле базы. В свойствеDataSetFieldуказывается имя поля с таблицами.

Кэширование обновленияпозволяет хранить изменения в локальном буфере на клиентской машине и отправлять их в базу данных на сервере ба­зы методомApplyUpdates, что экономит время, но задерживает внесе­ние текущих изменений в базу. Режим кэширования устанавливается свойст­вомCachedUpdatesкомпонентовTable,Query,StoredProc. Этот про­цесс отсле­жи­вается событиямиOnUpdateRecordиOnUpdateError.