594_____________________________________________Глава 10

не сразу всю таблицу, а по одной записи за раз, причем имеется блок Do, обрабаты-
вающий каждую возвращенную запись. В данном примере (и обычно) этот блок ис-
пользует ключевое слово SUSPEND, означающее возвращение записи в предложе-
ние SQL, вызвавшее данную процедуру.

Для использования хранимой на сервере процедуры выбора не требуется ника-
кой специальной команды, как для выполняемых процедур. Вызов осуществляет-
ся обычной командой Select, в которой имя процедуры выбора фигурирует как
обычная таблица. Только в данном случае для этой таблицы могут указываться па-
раметры. Например, из WISQL вызов приведенной процедуры имеет вид:

Select * from Selectd ("Бухгалтерия")

В этот оператор Select можно включать вычисления совокупных характери-
стик и вообще работать с процедурой выбора как с обычной таблицей.

Из приложения C++Builder процедуру выбора можно вызывать элементом Qu-
ery, не используя StoredProc, с помощью аналогичного оператора Select. Впро-
чем, можно использовать и StoredProc. Это, однако, менее удобно, так как при
этом нельзя включать результат в предложения SQL.

10.4 Многомерный анализ данных —
компоненты Decision Cube

10.4.1 Настройка компонентов приложения

Для анализа многофакторной информации, получаемой из базы данных, в
Delphi имеются специальные компоненты, размещенные на странице библиотеки
Decision Cube. При анализе данные представляются в виде так называемого много-
мерного куба (метакуба) или куба решений. Каждое измерение этого куба соответ-
ствует одному полю. Например, данные по сотрудникам организации, содержащи-
еся в таблице Pers, могут анализироваться по подразделениям, по признаку пола,
по году рождения, по тому, работают ли они в управлении или в производственном
отделе. Таким образом возникает четырехмерный куб. При анализе может возник-
нуть желание узнать, сколько человек работают в управлении и в производстве,
сколько всего в организации мужчин и женщин, как распределяются мужчины и
женщины в управлении и на производстве, распределение сотрудников по годам
рождения и т.п.

Таких вопросов может быть великое множество и в приложении невозможно
предусмотреть какие-то меню, кнопки и иные управляющие элементы, которые
бы охватывали все, что может захотеться знать пользователю, принимающему ре-
шения на основе сведений, почерпнутых из базы данных. Желательно иметь инст-
румент, с помощью которого пользователь мог бы сам наглядно формулировать
любые запросы, получая на них ответы в удобной табличной или графической фор-
ме. Именно таким инструментом и является система Decision Cube.

Эта система включает следующие компоненты:

DecisionCube      Реализует многомерный куб данных

DecisionGraph     Отображает графики, соответствующие выбору, сделанно-
му пользователем в многомерном кубе

DecisionGrid       Отображает в табличном виде данные, соответствующие
выбору, сделанному пользователем в многомерном кубе

DecisionPivot      Дает возможность пользователю закрывать и открывать
отдельные измерения куба