Goster
Member
Откуда: Питер
Сообщений: 416
|
У меня возникает навязчивое ощущение, что у тебя в голове полная путаница. И, следовательно, в посте.
Для начала несколько вопросов: Если твоя задача, как ты написал
| MikTar | | научиться свободно писать SQL запросы к объектам AW. | , то зачем нужен dbms_awm? Мой совет - не запаривайся на подобные вещи.
Для создания запросов к аналитическим пространствам есть, как ты и говорил, существует функция OLAP_TABLE. Используй только её.
По поводу работы OLAP_TABLE в двух словах и очень кастрировано: Пусть у нас есть AW под названием AWG. В нем находится 3 измерения: time_dim firms_dim countries_dim И один показатель(мера) quantity
OLAP_TABLE(analytic_workspace, table_object, olap_command, limit_map) | С тремя первыми параметрами все просто: analytic_workspace - здесь указываешь название AW и длительность присоединения AW - чаще всего SESSION. Например - AWG DURATION SESSION table_object - лениво описывать подробно, но в двух словах - нужен если ты определил свой тип для возвращаемого значения. Лично я никогда не использовал пока. olap_command - команда, которая будет выполнена перед запросом данных. Чаще всего - limit. Например - LIMIT counties_dim TO ''England'' limit_map - самый важный параметр. На нем остановимся подробнее. Итак, здесь описывается то, что ты хочешь получить от измерения. Хдесь указываешь показатели и измерения. Если хочешь просто получить список значений какого-то измерения указываешь только измерение. Например так DIMENSION DIM_LABEL FROM COUNTRIES_DIM Если хочешь получить значения показателя по измерениям, то пишешь: MEASURE MEAS_LABEL FROM cubname_quantity DIMENSION DIM_LABEL FROM firms_dim ............ DIM_LABEL и MEAS_LABEL - то как будут называться соответствующие колонки в запросе. При этом, переменная будет называться именно cubname_measname, где cubname - имя куба, measname - имя переменной.
после MEAS_LABEL можешь указать фразу AS datatype. Где datatype - тип данных, которому приводить показатель. Чаще всего number.
Т.е. если ты хочешь вывести показатель quantity по измерениям time_dim firms_dim countries_dim, то ситаксис будет такой:
MEASURE quant AS NUMBER FROM cubname_quantity
DIMENSION firms FROM FIRMS_DIM
DIMENSION countues FROM COUNTRIES_DIM
DIMENSION time FROM TIME_DIM |
Еще можно показывать аттрибуты измерения, например long_description. Для этого, после фразы dimension пишешь WITH ATTRIBUTE ATTR_LABEL FROM DIM_NAME_ATTR_NAME. Например для измерения firms_dim:
DIMENSION firms FROM FIRMS_DIM
WITH ATTRIBUTE firm_name FROM FIRMS_DIM_LONG_DESCRIPTION | .
Пример полного использования Olap_table:
SELECT *
FROM TABLE(
OLAP_TABLE(
'AWG DURATION SESSION',
'',
'',
'MEASURE quant AS NUMBER FROM cubname_quantity
DIMENSION firms FROM FIRMS_DIM
WITH ATTRIBUTE firm_name FROM FIRMS_DIM_LONG_DESCRIPTION
DIMENSION countues FROM COUNTRIES_DIM
DIMENSION time FROM TIME_DIM'
)
) |
Т.е. все просто. |