166 Ограничение. Эта операция реализуется с помощью оператора select, после ключевого слова where которого указывается условие, определяется ограничение: select * from <имя_таблицы> where P(Df здесь, P(Dj) это предикат, задающий ограничение на значения выбранного измерения Д. При формировании условия пользователь может воспользоваться следующими средствами: • знаками отношений <, >, <=, >=, <>, =, для построения запросов вида: select *from <имя_таблицы> where Dt>X; • агрегирующими функциями max, min, sum, avg, count для построения запросов вида: select * from <имя_таблицы> where D, in (select avg(Dj) from < имя_таблицы >); • CZDF-функциями, которые могут быть разработаны дополнительно, зарегистрированы в ХД, описаны в метаданных и предлагаться пользователю для построения условий. Эти функции могут использоваться для построения запросов вида: select * from <имя_таблицы> where Di in (select P(Dj) А'от<имя_таблицы>), где предикат P(Dj) реализуется с помощью UDF-функции и определяет произвольное условие на множестве значений Д. Соединение. Данная операция реализуется в два этапа. Обозначим таблицы, представляющие гиперкубы через R и S. Сначала из этих таблиц создаются представления, в которых исходные значения измерений, по которым будет производиться соединения, преобразуются с помощью функций отображения. create view VR as select Dj, f(Dm.if ...,fk(D„f Ah ...,Arfrom R create view VS as selectf’i(Dm.if ...ffDnf Dm+h Bh ...,Bpfrom S В качестве функций отображения доступны две функции: пустая, которая отображает значение измерения само в себя, и функция детализации, которая |
выполнения операции свертки вносятся изменения в метаданные, описывающие содержимое составных атрибутов. 117 Развертка. Столбец составного атрибута, по которому производится развертка, становится самостоятельным измерением. При этом с самой таблицей ничего не происходит. Изменения вносятся только в метаданные. insert into hc_dimension (id_hypercube, id_dimension, id_aggregate_Ievel_attrib) values (<идентификатор гиперкуба>, идентификатор измерения>, идентификатор измерения>) Удаление измерения. Операция приводит к удалению из таблицы атрибута, соответствующего удаляемому измерению. delete from hc_dimension where id_hypercube = идентификатор гиперкуба> and id_dimension = идентификатор измерения> Ограничение. Эта операция реализуется с помощью оператора select, после ключевого слова where которого указывается условие, определяется ограничение. select *from <имя_таблицы> where P(D) Здесь, P(Dj) это предикат, задающий ограничение на значения выбранного измерения Д. При формировании условия пользователь может воспользоваться следующими средствами: знаками отношении <, >, <=, >=, о , =, для построения запросов вида select *from <имя_таблицы> where D,>X; агрегирующими функциями max, m/л, sum, avg, count для построения запросов вида select *from <гтя_таблицы> where Di in (select avg(Dj)from <гшя_таблицы>); t/DF-функциями, которые могут быть разработаны дополнительно, зарегистрированы в ХД, описаны в метаданных и предлагаться пользователю для построения условий. Эти функции могут использоваться для построения запросов вида: select * from <гшя_таблицы> where Д in (select P(DJ from<имя_таблицы>), где предикат P(D) реализуется с помощью UDF-функции и определяет произвольное условие на множестве значений Д . Соединение. Данная операция реализуется в два этапа. Обозначим таблицы, представляющие гиперкубы через R и S. Сначала из этих таблиц создаются представления, в которых исходные значения измерений, по которым будет производиться соединения, преобразуются с помощью функций отображения. create view VR as select D...,Dn-k-u fi(Dn-d>•••fifDn), Aj,...,Arfrom R create view VSas selectf i(Dm.i),...f \fD J, Dn+u...,Drt, Bj,...,Bpfrom S В качестве функций отображения доступны две функции: пустая, которая отображает значение измерения само в себя, и функция детализации, которая отображает значение более высокого уровня консолидации данных в ряд значений более низкого уровня (например, номер месяца отображается на все даты этого месяца, рис. 12) На втором шаге выполняется внутреннее реляционное соединение полученных представлений. select VR.Di,...,VR.Dmt VS.Dm+]f VS.D„, f e/em(VR.Aj,..., VR.Ar,VS.BIt ..., VS.Bp) from VR, VS where (VR.Dm.*=VS.Dm.k • Ф • VR.Dn~VS.DJ 118 |