Страница 7 из 9 Объекты для доступа к данным Вторая ветвь объектной модели ADO MD применяется для получения сечений кубов (как правило, это двухмерные кросс-таблицы, подобные табл. 4, приведенной в начале этого раздела). Для получения подобных сечений требуется сформулировать к кубу соответствующий запрос. Поскольку многомерная база данных не является реляционной (как минимум, с логической точки зрения), то использовать язык SQL для запроса к ней мы не можем. Вместо этого нам следует описать, из чего состоят строки и столбцы и какие из доступных агрегатных данных следует отобразить. Для этого мы можем использовать так называемые multidimensional expressions (MDX) — расширения SQL для формулирования запросов к OLAP-кубам. Типичный MDX-запрос выглядит следующим образом: SELECT axis_specification ON COLUMNS, axis_specification ON ROWS FROM cube_name WHERE slicer_specification Здесь axis_specification — описание того, из чего состоит горизонтальная или вертикальная ось, в частности [Store].[Store Country].MEMBERS представляет собой список стран, [Store].[Mexico].CHILDREN — список штатов в Мексике. Slicer specification представляет собой имя агрегатных данных, используемых для создания кросс-таблицы. Например, следующий MDX-запрос: SELECT [Time].[Quarter].MEMBERS ON COLUMNS, {[Store].[USA].CHILDREN, [Store].[Canada].CHILDREN} ON ROWS FROM Sales WHERE [Measures].[Profit] приведет к получению кросс-таблицы, содержащей суммарный ежеквартальный доход для всех штатов США и Канады. Подробности о синтаксисе и ключевых словах MDX можно найти в Microsoft Platform SDK. В объектной модели ADO MD кросс-таблица, являющаяся результатом MDX-запроса, представлена объектом CellSet. Этот объект предоставляет доступ к объектам Cells, представляющим конкретные ячейки в кросс-таблице. Помимо этого объект CellSet содержит коллекцию Axes объектов Axis (обычно в этой коллекции два объекта, соответствующие строкам и столбцам). Как объект Cell, так и объект Axis обладают коллекцией Positions объектов Position, представляющих позицию вдоль оси. Объект Position обладает коллекцией Members, представляющей конкретное значение данных на оси. Рассмотрев объекты ADO MD, мы можем создать приложение, их использующее. Это будет сделано в следующем разделе. |