Анализ данных в Report Studio: IBM Cognos 8

Область применения: Разработка отчетов

Пакет IBM Cognos 8 Software Development Kit (SDK) – эффективное средство разработки приложений любого типа – от небольших программ до сложных многофункциональных программных комплексов

1. Введение

1.1. Цель

При открытии в Report Studio отчета Analysis Studio данные из спецификации Analysis Studio переносятся в спецификацию отчета Report Studio. Цель данного документа – описать элементы данных, которые создаются при переносе информации из Analysis Studio в Report Studio, и их составляющие, а также продемонстрировать, как использовать эти конструкции для эффективной реализации аналитических возможностей Analysis Studio в отчетах Report Studio.

1.2. Область применения

Информация, предлагаемая в данном документе, соответствует версии IBM Cognos 8 и проверена в контексте релиза MR2.

1.3. Исключения и допущения

Информация, предлагаемая в данном документе, не является окончательной и может быть изменена. Модификация существующей или добавление новой функциональности в последующих релизах Analysis Studio или Report Studio могут привести к изменению структур данных при открытии анализа в Report Studio.

Документ находится в стадии разработки. В будущем планируется включить в документ рассмотрение следующих вопросов:

  • влияние настроек отображения на опции отчета Analysis Studio;
  • элементы данных, создаваемые для вычислений и ранжирования;
  • представление показателей в виде процента от базового значения;
  • контекстные фильтры и их влияние на свойство hold context исходного множества;
  • подавление нулевых и пустых значений.

2. Множества Analysis Studio

Множество (set) - одно из ключевых понятий Analysis Studio. Множеством называется группа элементов, определенных по какому-либо правилу, например, путем выбора отдельных элементов из иерархии или путем выбора одного элемента и всех его дочерних объектов. На рисунке (см. ниже) каждая группа элементов, обведенных в кружок, является множеством. Обратите внимание на группу, обведенную красным – это множество показателей. Разница между обычным множеством и множеством показателей будет рассмотрена позже.

Интересующие нас характеристики каждого множества становятся очевидными, если открыть свойства и опции, определяющие конфигурацию фильтров, видимые элементы и сортировку. Пример того, как выглядит панель свойств, приведен на рисунке (см. ниже).

Как видно на рисунке, рассматриваемое множество определено следующими настройками:

  • Отображать все элементы множества, кроме того, показывать все вычисляемые элементы, подитоги для выбранных элементов, а также общий итог (включая данные по альпинистскому снаряжению).
  • Не отображать элементы альпинистского снаряжения, однако включать их данные в общий итог.
  • Показывать два лидирующих продукта по значению показателя по умолчанию.
  • Отбирать только элементы множества, для которых значение показателя по умолчанию больше 500000.
  • Использовать фильтры только в контексте метода Web-заказа. Это значит, что будут рассматриваться только показатели, применимые к заказам через Web-интерфейс.
  • Сортировать результаты по меткам (подписям) элементов в порядке возрастания.

Таким образом, для каждого множества элементов отслеживается довольно большой объем информации. В процессе работы Analysis Studio автоматически преобразует настройки каждого множества в соответствующие OLAP-выражения, так что от пользователя не требуется знания соответствующего синтаксиса. В результате определение простых на первый взгляд свойств приводит к выполнению довольно сложных операций.


3. Открытие анализа в Report Studio

Для импорта анализа в Report Studio воспользуйтесь командой Open in Report Studio в меню File пакета Analysis Studio или же соответствующей опцией объекта Analysis в IBM Cognos Connection. Функция открытия анализа Analysis Studio в Report Studio позволяет выполнять более сложные функции отчетности, предоставляя пользователю возможность управлять макетом отчета и настраивать OLAP-запросы, применяемые для генерации анализа в Analysis Studio.

При импортировании анализа в отчет Report Studio концепция множества и его свойств преобразуется в набор элементов данных. Каждый элемент данных, созданный в полученной спецификации Report Studio, отражает один из аспектов анализа данных, предоставляемых пользовательским интерфейсом Analysis Studio.

В результате переноса данных соответствующие OLAP-запросы становятся доступными из Report Studio и могут быть модифицированы пользователем. Изменяя OLAP-запросы в Report Studio, пользователь получает возможность управлять данными в макете отчета аналогично тому, как можно управлять результатами анализа в Analysis Studio, определяя свойства множества. Например, если вы хотите изменить список скрытых элементов или модифицировать критерии фильтра для выборки, вам достаточно поменять соответствующие параметры запроса в Report Studio. Эти изменения будут иметь тот же эффект, какой вы получили бы, изменив соответствующие свойства множества в Analysis Studio.

Следует заметить, что далеко не всегда при создании отчета Report Studio необходимы и полезны все аналитические возможности Analysis Studio. Зачастую непосредственная разработка отчета в Report Studio позволяет создать гораздо более правильно организованный и информативный документ, чем импортирование данных из Analysis Studio. Прежде чем приступить к созданию отчета, определите, какая информация должна быть включена в отчет и для кого он предназначен. Это поможет вам решить, насколько необходимо использование Analysis Studio для генерации базовой структуры отчета.

3.1. Элементы данных, создаваемые для множества

В таблице перечислены элементы данных, создаваемые при открытии анализа в Report Studio. Параметры <Имя множества> и <Имя элемента> в таблице соответствуют названию множества и его элементов в реальном наборе данных.

Элемент данныхОписание
<Имя множества> (base)Все множество элементов
<Имя множества> (total)Корневой элемент множества дочерних элементов или совокупность выбранных элементов множества, если множество определено как набор отдельных элементов.
<Имя множества> (filter rules)Фильтр выборки элементов множества на базе операций сравнения (больше чем или меньше чем), применяемых к значениям показателей, подписям (меткам) или атрибутам. Критерии фильтра действуют в контексте определения множества (заданного кортежем).
<Имя множества> (excluded filters)Фильтр исключений. Удаляет элементы, определенные в списке исключений, из результатов работы фильтра выборки.
<Имя множества> (excluded list)Список исключений. Набор элементов, которые всегда исключаются из расчетов независимо от критериев фильтра.
<Имя множества> (filter top bottom)Верхний/нижний фильтр - фильтр, который дополнительно ограничивает выборку элементов множества, полученную в результате применения фильтров выборки и фильтра исключений и позволяет определить верхние или нижние элементы по значениям Count, Percent, Running-Total.
<Имя множества> (excluded subtotal set)Итоговое значение показателя для всего множества за вычетом суммы для элементов, удовлетворяющих всем критериям фильтра.
<Имя множества> (excluded subtotal display)Условное отображение подитога для исключенных элементов.
<Имя множества> (Empty Set)Не используется в данной версии и будет удалено в последующих релизах.
<Имя множества> (included subtotal)Суммарное значение для элементов множества, удовлетворяющих критериям выборки.
<Имя множества> (included subtotal display)Условное отображение подитога элементов, удовлетворяющих всем критериям фильтрации.
<Имя множества> (included set)Набор элементов, удовлетворяющих критериям фильтра и не включенных в список скрытия.
<Имя множества> (hidden list)Набор элементов, которые не отображаются в отчете, но учитываются при вычислении подитога (список скрытия).
<Имя множества> (visible items set)Первые N элементов выборки, которые будут показаны в результирующем отчете (видимые элементы). Этот элемент данных используется для ограничения длины вывода.
<Имя множества> (subtotal)Подитог для видимых элементов. Определяется как суммарное значение для видимых элементов.
<Имя множества> (subtotal display)Условное отображение подитога видимых элементов.
<Имя множества> (more and hidden subtotal)Подитог дополнительных и скрытых элементов – суммарное значение для элементов, включенных в список скрытия, и элементов, которые удовлетворяют критериям фильтра, но не попали в список видимых элементов. Может быть пустым выражением (NULL) в зависимости от настроек общего итога и подитогов (Totals and Subtotals…) в Analysis Studio.
<Имя множества> (more and hidden subtotal display)Условное отображение подитога дополнительных и скрытых элементов.
<Имя множества> (more subtotal)Не используется в данной версии и будет удалено в последующих релизах.
<Имя множества> (total caption)Запрос, реализованный в более поздних релизах. Расширяет возможности работы с текстом подписи к итоговым значениям в пояснениях к диаграммам.
<Имя элемента>Одно или несколько полей данных, представляющих конкретный элемент базового множества, подмножества скрытых элементов или подмножества исключенных элементов. Названия этих полей определяются в соответствии с подписями элементов множества.
<Показатель>Наряду со ссылками на отдельные элементы множества запросы могут включать в себя показатели для определения критериев фильтра или для задания множества показателей.

3.2. Элементы данных, включаемые в макет отчета

Комбинации описанных выше данных определяют наборы видимых элементов и подитоги, которые выводятся в результирующем отчете. Элементы данных, включаемые в отчет, зависят от того, как видимые данные были определены в Analysis Studio перед открытием анализа в Report Studio. Если установлены все опции анализа, то набор элементов данных, включаемых в макет отчета, будет выглядеть следующим образом:

  • <Имя множества> (visible items set)
  • <Имя множества> (subtotal display)
  • <Имя множества> (more and hidden subtotal display)
  • <Имя множества> (included subtotal display)
  • <Имя множества> (excluded subtotal display)
  • <Имя множества> (total)

Так, например, если в Analysis Studio основной итог не отображался, то и в результирующем отчете Report Studio итоговое поле не будет включено в макет отчета. Однако соответствующий элемент данных все равно будет присутствовать в запросе, так что при необходимости итоговое значение может быть добавлено в отчет.

3.3. Зависимости

Данные, получаемые в результате выполнения запроса, связаны между собой, так что изменение одного значения неизбежно влечет за собой обновление других данных. Например, изменения в списке исключенных элементов, очевидно, должны влиять на значение подитога для этих элементов.

Следующая таблица описывает основные зависимости для набора данных. Таким образом, можно определить, как то или иное изменение параметров запроса отразится на результирующих данных.

Элемент данныхОпределяющие зависимости
<Имя множества> (base)<Имя элемента>

Базовое множество элементов может определяться как набор отдельных элементов, совокупность дочерних объектов корневого элемента, набор подчиненных узлов множества элементов или как все объекты одного уровня иерархии.

<Имя множества> (total)<Имя множества> (base)

Существуют два основных сценария для определения итогового значения. Если базовое множество задано как дочерняя структура или множество подчиненных узлов одного элемента, то итог будет определяться самим корневым элементом, так как агрегатное значение может быть получено непосредственно из OLAP-источника.

Если же базовое множество задано как набор отдельных независимых элементов, то итоговым значением такого множества будет агрегация всех элементов по показателю currentMeasure.

<Имя множества> (filter rules)<Имя множества> (base)

<Показатель>

<Имя элемента>

Базовое множество фильтруется по значению определенного показателя. Если в Analysis Studio фильтр должен накладываться на определенную строку или столбец, то для переноса информации в Report Studio создается кортеж, который определяет пересечение показателя с конкретной строкой или столбцом. Такой кортеж затем используется в критериях фильтра в виде булевого условия.

<Имя множества> (excluded filters)<Имя множества> (filter rules)

<Имя множества> (excluded list)

Функция except() убирает элементы, внесенные в список исключений, из результата работы фильтра выборки.

<Имя множества> (excluded list)<Имя элемента>

<Имя множества> (base)

Список исключений - пустое множество или множество, состоящее из одного или нескольких элементов той же иерархии, что и базовое множество.

<Имя множества> (filter top bottom) <Имя множества> (excluded filters)

<Показатель>

<Имя элемента>

Набор исключенных элементов фильтруется по значению какого-либо показателя. Если в Analysis Studio фильтр должен накладываться на определенную строку или столбец, то для переноса информации в Report Studio создается кортеж, который определяет пересечение показателя с конкретной строкой или столбцом. Такой кортеж затем используется для вычислений булевых значений фильтра.

<Имя множества> (excluded subtotal set)<Имя множества> (filter top bottom)

<Имя множества> (total)

<Имя множества> (base)

Если результатом работы верхнего/нижнего фильтра является пустое множество, то в качестве подитога исключенных элементов используется итоговое значение множества. В противном случае подитог исключенных элементов определяется как разница между суммарными значениями двух множеств. Для нового элемента подитога создается соответствующая связь в иерархии базового множества.

<Имя множества> (excluded subtotal display)<Имя множества> (excluded subtotal set)

<Имя множества> (filter top bottom)

<Имя множества> (base)

Подитог исключенных элементов отображается в том случае, если базовое множество содержит больше элементов, чем отобрано верхним или нижним фильтром (т.е. если есть собственно исключенные элементы).

<Имя множества> (Empty Set)<Имя множества> (base)

Определяет иерархию базового множества для создания подстановочной переменной пустого множества. Будет удалено в последующих релизах.

<Имя множества> (included subtotal) <Имя множества> (filter top bottom)

<Имя множества> (base)

Суммарное значение выбранного показателя для элементов из верхнего/нижнего списка. Для нового элемента подитога создается соответствующая связь в иерархии базового множества.

<Имя множества> (included subtotal display) <Имя множества> (included subtotal)

<Имя множества> (filter top bottom)

Возвращает подитог для выборки в случае, если в результате применения верхнего/нижнего фильтра получено непустое множество элементов.

<Имя множества> (included set)<Имя множества> (filter top bottom)

<Имя множества> (hidden list)

<Имя множества> (base)

<Показатель>

<Имя элемента>

Скрытые элементы удаляются из результатов работы верхнего/нижнего фильтра. Оставшиеся элементы сортируются по атрибутам иерархии, соответствующей базовому множеству. Если в качестве критерия сортировки используется показатель и конкретный столбец/строка, то создается кортеж, который определяет такое пересечение. Затем этот кортеж передается для вычисления показателя, используемого для сортировки.

<Имя множества> (hidden list)<Имя элемента>

<Имя множества> (base)

Пустой набор или набор, состоящий из одного или нескольких элементов той же иерархии, что и базовое множество.

<Имя множества> (visible items set)<Имя множества> (included set)

Первые N элементов выборки, которые не входят в список скрытия. В Analysis Studio количество видимых элементов может определяться пользователем. По умолчанию значение N равно 12. Допуск на переполнение составляет 2. Это значит, что если количество элементов в выборке превышает количество видимых элементов не больше чем на 2, будут показываться все элементы выборки.

<Имя множества> (subtotal)<Имя множества> (visible items set)

<Имя множества> (base)

Суммарное значение текущего показателя для набора видимых элементов. Для нового элемента подитога создается соответствующая связь в иерархии базового множества.

<Имя множества> (subtotal display)<Имя множества> (subtotal)

<Имя множества> (visible items set)

Возвращает подитог видимых элементов в том случае, если множество видимых элементов не пусто.

<Имя множества> (more and hidden subtotal)<Имя множества> (visible items set)

<Имя множества> (filter top bottom)

<Имя множества> (excluded subtotal set)

<Имя множества> (total)

<Имя множества> (included subtotal)

<Имя множества> (subtotal)

<Имя множества> (base)

Если настройки анализа в Analysis Studio запрещают отображение подитога дополнительных или скрытых элементов, то результатом работы данного выражения будет значение NULL определенной иерархии (полученной на основе базового множества).

Если опция отображения подитога дополнительных и скрытых элементов включена, то будут использоваться дополнительные подмножества элементов. Если множество видимых элементов не пусто, то подитог дополнительных и скрытых элементов вычисляется как разность между подитогом выборки и подитогом видимых элементов. Если список видимых элементов пуст, то рассматривается результат работы верхнего/нижнего фильтра. Если результатом работы фильтра является непустое множество, то это значит, что все элементы этого множества включены в список скрытия. Тогда в качестве подитога дополнительных и скрытых элементов возвращается подитог выборки. Если результатом работы верхнего/нижнего фильтра является пустое множество, то это значит, что все элементы включены в список исключений, или базовое множество является пустым. Если базовое множество не содержит элементов (т.е. и список исключений пуст), то возвращается значение NULL. В противном случае возвращается итог для базового множества, так как все его элементы попали в список исключений.

<Имя множества> (more and hidden subtotal display)<Имя множества> (more and hidden subtotal)

<Имя множества> (filter top bottom)

Возвращает подитог, если фильтр отбирает больше N элементов. Значение N конфигурируется в Analysis Studio.

По умолчанию значение подитога отображается в том случае, если верхний/нижний фильтр отбирает больше 14 элементов. Это соответствует настройкам определения видимого набора элементов, когда количество видимых элементов по умолчанию равно 12 и допуск на переполнение равен 2.

<Имя множества> (more subtotal)<Имя множества> (more and hidden subtotal)

Будет удалено в последующих релизах.

<Set Name> (total caption)<Имя множества> (total)

Содержит значение подписи итога. В случае, если базовое множество состоит из нескольких независимых элементов, итоговое значение будет обозначено как Итог (Total). Для базового множества, заданного как совокупность дочерних объектов корневого элемента, подпись для итога будет соответствовать подписи корневого элемента (как и будет определено после прохождения по всем элементам такого множества).

<Имя элемента> Нет зависимостей
<Показатель>Нет зависимостей

3.4. Указатель функций

Большинство элементов данных, создающихся при импортировании анализа в Report Studio, являются результатом работы OLAP-функций. Какие именно функции будут использоваться для генерации данных, определяется структурой отчета и опциями, установленными для анализа в Analysis Studio.

Элемент данныхФункции или конструкции, используемые для получения данных
<Имя множества> (base)set

children

descendants

members

<Имя множества> (total) member

aggregate

currentMeasure

hierarchy

<Имя множества> (filter rules)filter

tuple

completeTuple (для фиксированного контекста)

<Имя множества> (excluded filters)except
<Имя множества> (excluded list)set

emptySet (исключений нет)

hierarchy (исключений нет)

<Имя множества> (filter top bottom)topCount

bottomCount

topSum

bottomSum

topPercent

bottomPercent

tuple

completeTuple (для фиксированного контекста)

<Имя множества> (excluded subtotal set)member

if

count

head

aggregate

currentMeasure

hierarchy

<Имя множества> (excluded subtotal display)head

if

count

<Имя множества> (Empty Set)emptySet

hierarchy

<Имя множества> (included subtotal)member

aggregate

currentMeasure

hierarchy

<Имя множества> (included subtotal display)_remainderSet
<Имя множества> (hidden list)set

emptySet (нет скрытых элементов)

hierarchy (нет скрытых элементов)

<Имя множества> (visible items set)head

_firstFromSet

<Имя множества> (subtotal)member

aggregate

currentMeasure

hierarchy

<Имя множества> (subtotal display)_remainderSet
<Имя множества> (more and hidden subtotal)member

if

count

head

hierarchy

<Имя множества> (more and hidden subtotal display)_remainderSet
<Имя множества> (more subtotal)Функции не используются
<Имя множества> (total caption)caption
<Имя элемента>Функции не используются
<Показатель>Функции не используются

3.5. Множества показателей

При выборе в Analysis Studio нескольких показателей результирующее множество показателей отличается от множества, создаваемого для стандартных измерений. Исходное множество показателей определяется как набор, включающий несколько независимых элементов. Такое множество не требует дополнительной обработки, так что данные, импортированные в Report Studio, будут содержать следующую информацию:

Элемент данныхФункции или конструкции, используемые для получения данных
<Имя множества показателей> (base)Набор из нескольких выбранных показателей многомерного множества. Показатели будут объединены в один набор элементов с помощью функции set().
<Имя множества показателей> (included set)Будет удалено в последующих релизах.
<Имя множества показателей> (visible items set)Указывает на отображаемые значения базового множества.

Кроме того, набор показателей может быть определен путем прохода по иерархической структуре родитель-потомок показателей Analysis Studio. В этом случае результирующий набор показателей будет включать в себя не индивидуально выбранные показатели, а дочерние показатели определенного показателя.

Набор дочерних объектов может включать в себя несколько показателей. В этом случае в Analysis Studio необходимо задать дополнительные правила работы с данными, например, критерии отображения дополнительных и скрытых элементов, если какие-то показатели являются скрытыми или если не все показатели, используемые при обработке данных, отображаются в анализе Analysis Studio. Для такой обработки требуется более полное определение множества и его свойств. В результате для создания структуры элементов данных в Report Studio потребуется полный набор данных, рассмотренных выше для множеств, основанных на обычных измерениях.

3.6. Вычисления и порядок операций

При добавлении вычислений в Analysis Studio операции выполняются в установленной очередности. Правильная очередность операций гарантирует, что значения высчитываются и сводятся в порядке, необходимом для получения требуемого результата. Рассмотрим, как работает порядок операций, на примере операции деления, применяемой к результатам суммирования:

Quantity sold2004200520062006 / YearYears
Camping Equipment181,822306,566377,8450.436866,234
Golf Equipment18,91238,69241,7960.42099,400
Mountaineering Equipment0139,562162,3960.538301,958
Outdoor Protection274,650171,182112,0220.201557,854
Personal Accessories86,322133,674169,9120.436389,908
Camping Equipment + Goff Equipment 200,734345,259419,6420.435965,634
Products561,706789,676863,9720.3902,215,354

Выделенная ячейка соответствует пересечению следующих полей: сумме значений Camping Equipment (Туристское снаряжение) и Golf Equipment (Инвентарь для гольфа)» и делению полученного показателя за 2006 год на суммарное значение для всех лет. Это значение соответствует процентному отношению от базового множества по годам для каждой строчки продуктов и, как таковое, должно высчитываться после суммирования всех показателей для конкретной линии продуктов в крайней ячейке строки. Значение в выделенной ячейке соответствует правильному порядку вычислений. Если бы сначала вычислялась доля каждого из продуктов за 2006 год, а потом эти значения складывались, то мы получили бы 0.857 (сумма соответствующих полей для Camping Equipment и Golf Equipment после деления на суммарное значение по годам).

Для отслеживания порядка операций для каждого из вычисляемых элементов данных вводится свойство Solve Order (порядок операций). Например, анализ, показанный выше, при открытии в Report Studio будет иметь следующий вид:

1 IBM Cognos 8.1 задает свойство порядка операций для элемента кросс-таблицы. IBM Cognos 8.2 определяет свойство порядка операций непосредственно для элемента данных. В этом случае значение порядка операций доступно как свойство элемента данных в Query Explorer или при обращении к элементу данных в макете страницы.

Операции с большим порядком выполняются после операций меньшего порядка. В приведенном выше примере операция сложения имеет (неявно) порядок 2, а операция деления имеет порядок 3. Большее значение порядка для деления означает, что операция деления будет применена после того, как выполнится операция сложения. Если изменить порядок операций, то результат будет выглядеть следующим образом:

Выделенная ячейка содержит сумму двух процентных значений (что соответствует случаю неправильного порядка операций, рассмотренному выше).

Для каждой операции в Analysis Studio определен порядок ее выполнения. В приведенной ниже таблице представлен список общеупотребительных операций и порядок их выполнения.

ОперацияПорядок выполненияОписание
Константа 1Ссылка на значение отдельного элемента или числовой константы.
Сложение 2Суммирование по множеству, состоящему из одного или нескольких элементов. Если операция суммирования применяется к базовому множеству элементов в Analysis Studio, суммироваться будут элементы, удовлетворяющие критериям фильтра и не входящие в список исключений. Тот же порядок операций применяется при вычислении подитогов или окончательного итога для множества, определенного путем выбора отдельных элементов.
Вычитание 2Значение одного элемента вычитается из значения второго элемента.
Деление3Значение одного элемента делится на значение другого элемента.
Умножение3Перемножение значений двух или более элементов.
Возведение в степень3Значение одного элемента, помноженное на себя определенное количество раз.
Квадратный корень3Квадратный корень из значения элемента.
Сводка 4Результат работы функции агрегирования на множестве, состоящем из одного или нескольких элементов. Сводка применяет правила агрегации к каждому из показателей согласно определению OLAP-данных, вместо того чтобы просто выполнять статическое сведение, как, например, определение среднего значения для всех показателей в кросс-таблице или диаграмме.
Среднее значение 5Среднее для значений элементов множества.
Минимум 5Минимальное значение для множества, состоящего из одного или более элементов.
Максимум 5Максимальное значение для множества, состоящего из одного или более элементов
Дисперсия5Мера отклонения значений отдельных элементов от среднего значения для множества.
Стандартное отклонение5Квадратный корень из дисперсии для элементов множества.
Медиана5Серединное значение для множества, состоящего из одного или более элементов, отсортированных в порядке возрастания. Если количество элементов четно, то в качестве медианы используется интерполяция двух серединных значений. В результате ровно половина элементов множества имеют значения, большие медианы, и половина элементов имеют значения, меньшие медианы.
Количество 5Количество всех элементов множества, включая скрытые элементы.
Абсолютное значение5Возвращает положительное значение той же самой величины, что и исходное значение элемента. Таким образом, отрицательные значения преобразуются в положительные.
Округление5Округление значения элемента множества до целого. Если выбрано стандартное правило округления (до ближайшего целого, с учетом четности второй цифры), то значение, лежащее между двумя целыми, округляется либо в большую, либо в меньшую сторону до ближайшего целого числа. Если в Analysis Studio выбрана опция округления вниз (Round down), то значение округляется до целого всегда в меньшую сторону.
Percent of Total 6Сравнение определенных показателей элемента с агрегированными значениями этих показателей для всех элементов. Например, при применении к ячейке в перекрестной таблице, соответствующее значение в ячейке строки будет сравниваться с суммой всех значений ячеек этой строки.
Процентная разница6Сравнение значений элементов и их относительная разность. Определяется как результат деления разности двух элементов на абсолютное значение второго элемента.
Процентное отношение6Сравнение двух элементов, при котором показатели одного элемента делятся на соответствующие показатели второго элемента.
Ранг7Положение показателя для элемента по отношению к таким же показателям остальных элементов множества или по отношению к остальным показателям этого элемента.
Квартиль7Распределение элементов по 4 группам или квартилям. Один квартиль определяется как набор значений, составляющий 25% от базового набора значений. 4 квартиля определяются соответственно по 25, 50 и 75% значений.
Процентиль7Определение позиции значения по отношению к набору значений. Например, значение 70-го процентиля больше, чем значения 70% всех элементов данных.
Квантиль7Распределение значений элементов по определенному количеству групп. Квартиль – это квантиль из 4 групп, в котором границы между группами определяются как 25, 50 и 75%. В квантиле из 5 групп границы разделения будут определены как 20, 40, 60 и 80%.

Основываясь на порядке операций, легко увидеть, что функция ранжирования будет применяться после выполнения всех вычислений. Это гарантирует, что в результате будут показаны правильные значения, и ранг элемента не будет использоваться при вычислении значений других функций, таких как стандартное отклонение.

В случае, когда элемент данных в строке и в столбце имеют одинаковый порядок операций, высшим считается порядок операций для элемента в строке. При этом значение в строке будет вычисляться после вычисления значений столбца с этим же порядком операций.

Например, в следующей таблице вычисление максимума и среднего значения имеют один и тот же порядок (5). Однако пересечение этих вычислений дает максимальное из средних значений, а не среднее для максимальных значений (которое было бы равно $8,829,777.15):

Revenue200420052006Average (Years)
Golf Equipment$5,597,980.86$9,530,953.70$10,726,526.02$8,635,155.19
Mountaineering Equipment$0.00$9,642,674.54$11,248,676.06$6,963,783.53
Outdoor Protection$1,536,456.24$938,230.64$646,428.04$1,057,038.31
Maximum (Products)$5,597,980.86$9,642,674.54$11,248,676.06$8.635,155,19

Если поменять строки и столбцы местами, то больший порядок получит операция вычисления среднего (поскольку теперь средние значения выводятся в строке), что дает следующий результат:

RevenueGolf EquipmentMountaineering EquipmentOutdoor ProtectionMaximum (Products)
2004$5,597,980.86$0.00$1,536,456,24$5,597,930,85
2005$9,530,958.70$9,642,674.54$983,230,64$9,642,674.54
2006$10,726,526.02$11,248,676.06$646,428,04$11,218,676.06
Average (Years)$8,635,155.19$6,953,783, 53$1,057,033,31$8,829,777,15

Независимо от того, какая функция используется для вычисления, для каждого вычисления в Report Studio создается новый элемент данных. Порядок выполнения операций для таких элементов в макете отчета определяется как свойство элемента данных согласно приведенной выше таблице.

Все вычисляемые выражения будут иметь несколько одинаковых компонентов, которые создаются при переносе данных из Analysis Studio в Report Studio. Если вернуться к рассмотренному ранее примеру сложения показателей для туристского снаряжения и инвентаря для гольфа, выражение для получения результирующих данных будет иметь вид:

member(total(currentMeasure WITHIN SET set([Camping Equipment],[Golf
Equipment])), 'uuid:000014a045de0d4d000006f9', 'Camping Equipment +
Golf Equipment', hierarchy([Products (base)]))

Часть выражения, выделенная красным шрифтом, суммирует два выбранных элемента. Функция member применяется к выражению суммирования и служит для определения ключевых свойств элемента данных. Эта функция создает новый элемент данных и включает его в соответствующую иерархию.

Второй аргумент функции member 'uuid:000014a045de0d4d000006f9' определяет уникальный идентификатор нового элемента, что позволяет избежать конфликта с существующими элементами и вычислениями в иерархии.

Третий аргумент 'Camping Equipment + Golf Equipment' определяет подпись, соответствующую новому элементу, для отображения его в отчете. Это значение можно при желании изменить, чтобы выводить для созданного элемента другую текстовую метку.

Четвертый аргумент функции member hierarchy([Products (base)]) вносит новый элемент в ту же самую иерархию, что и множество, используемое для вычисления выражения. Если иерархия для нового элемента не задана, то элемент приписывается измерению показателя по умолчанию.

Использование функции member при вычислениях не является обязательным. В рассматриваемом случае основная цель создания нового элемента в рамках существующей иерархии – возможность его дальнейшего использования в отчете. В качестве элемента множества вычисляемое выражение может быть включено в кортеж (как пересечение элементов разных размерностей для получения значения показателя) и использоваться при сортировке или выборке наряду с другими элементами множества.

Например, если нам необходимо продолжить работу с вычисленными значениями для ‘Camping Equipment + Golf Equipment’, мы можем использовать вновь созданный элемент данных для сортировки по годам в убывающем порядке. Исходные значения поля Years (Годы) (все элементы включены) даются следующим выражением:

except([Years (filter top bottom)],[Years (hidden list)])

Применив функцию сортировки, мы можем отсортировать годы по результату вычисления суммы:

order( except([Years (filter top bottom)],[Years (hidden list)]),
tuple([great_outdoors_company].[Measures].[Quantity sold],[Products
(Custom Calculation Item)]),desc)

Текст, выделенный красным шрифтом, задает пересечение вычисляемого поля и показателя ‘Quantity sold’. Это дает нам сумму значений Quantity sold (Продажи) для Camping Equipment (Туристское снаряжение) и Quantity sold (Продажи) для Golf Equipment (Снаряжение для гольфа).

В результате модификации запроса отчет в Report Studio будет выглядеть следующим образом:

Quantity sold200620052004Years
Camping Equipment377,816306,566181,822866,234
Golf Equipment41,79638,69218,91299,400
Mountaineering Equipment162,396139,5620301,958
Outdoor Protection112,022171,182274,650557,854
Personal Accessories169,912133,67486,322389,908
Camping Equipment + Goff Equipment419,642345,253200,734965,634
Products863,972789,676561,7062,215,354

4. Управление данными в отчете Report Studio

Набор данных, создаваемый в Report Studio, предоставляет разработчику отчетов возможность оперировать теми же свойствами данных, которые доступны при управлении анализом данных в Analysis Studio. Это является основным преимуществом создания отчетов на базе анализа.

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

Большую часть данных в запросах можно оставить без изменения, так как их значения будут обновляться автоматически. Основной интерес для разработчика отчетов представляют следующие данные:

<Имя множества> (base)

<Имя множества> (total)

<Имя множества> (filter rules)

<Имя множества> (excluded list)

<Имя множества> (filter top bottom)

<Имя множества> (included set)

<Имя множества> (hidden list)

Модификация параметра “<Имя множества> (total)” может потребоваться только в том случае, если изменяется структура самого базового множества. Так, например, если базовое множество, заданное как дочерняя структура, меняет свое определение и становится набором отдельных независимых элементов, то в этом случае необходимо будет задать функцию агрегации для определения итога множества, так как ссылка на корневой элемент больше не будет являться корректным определением сводки базового множества.

В качестве примера управления остальными элементов данных рассмотрим следующий отчет Report Studio:

Revenue
Camping Equipment$89,713,990,92
Golf Equipment$25,905,465,58
Mountaineering Equipment$20,891,350.60
Outdoor Protection$3,171,114,92
Personal Accessories$31,894,465,86
Subtotal$31,576,387,88
Products$171,576,367,88

Предположим, что данные по инвентарю для гольфа необходимо исключить из отчета. Для этого нужно просто внести этот элемент в список исключений.

Исходный список исключений в нашем примере пуст, так как все элементы включены в отчет.

Изменим структуру отчета, задав множество исключений. Для этого необходимо перетащить элемент [Golf Equipment] из списка Available Components в выражение для задания множества. Соответствующий новый элемент будет добавлен в запрос Report Studio.

В результате такого простого преобразования отчет будет выглядеть следующим образом:

Revenue
Camping Equipment$89/713,990.92
Mountaineering Equipment$20,391,350,60
Outdoor Protection$3,171,114.92
Personal Accessories$31,394,465.86
Subtotal$145,670,922.30
Products$171,576,387.88

Обратите внимание, что значение подитога (Subtotal) автоматически обновилось и соответствует четырем элементам, которые не вошли в список исключений.

Чтобы включить в отчет подитог исключенных элементов, достаточно перетащить элемент, соответствующий отображению подитога исключенных данных (Subtotal (excluded)), из структуры запроса в соответствующее место макета отчета:

Revenue
Camping Equipment$39,713,990.92
Mountaineering Equipment$20,391,350.60
Outdoor Protection$3,171,114.92
Personal Accessories$31,394,465.86
Subtotal$145,670,922.30
Subtotal (excluded)$25,905,465.58
Products$171,576,387.88

Для фильтрации данных в отчете работает тот же подход, что и для создания множества исключенных элементов. Необходимо просто обновить критерии фильтра для элемента filter rules или filter top bottom. Предположим, что в рассматриваемом примере в отчет должны попасть только те линии продуктов, объем продаж которых превышает пять миллионов долларов. В этом случае следует вместо пустых критериев фильтра (включаются все элементы множества):

задать критерии для отбора по объему продаж:

В результате данные по Outdoor Protection будут исключены из отчета:

Revenue
Camping Equipment$89,713,990.92
Mountaineering Equipment$20,891,350.60
Personal Accessories$31,894,465.86
Subtotal$142,499,807.38
Subtotal (excluded)$29,076,580.50
Products$171,576,387.88

Одновременно будут пересчитаны значения подитога (Subtotal) и подитога исключенных элементов Subtotal (excluded), учитывая, что данные Outdoor Protection необходимо исключить из подитога по результатам работы фильтра.

Аналогично, изменив верхний/нижний фильтр с пустого множества

на фильтр, отбирающий два верхних элемента, можно включить в отчет только два верхних продукта.

В результате продукция Mountaineering Equipment будет исключена из набора видимых элементов, а ее данные будут суммироваться при подсчете подитога исключенных элементов:

Revenue
Camping Equipment$39/713,990.92
Personal Accessories$31,894,465.86
Subtotal$121,603,456.78
Subtotal (excluded)$49,967,931.10
Products$171,576,367.88

Теперь рассмотрим последний элемент данных включенного множества из приведенного выше списка. Один из способов манипулирования выборкой элементов – сортировка итогового множества. При отсутствии сортировки выражение для задания множества включенных элементов выглядит следующим образом:

Добавим показатель и порядок для сортировки:

В результате получим отчет, в котором первую позицию занимает продукция Personal Accessories, а следом идет продукция Camping Equipment, чей объем продаж выше:

Revenue
Personal Accessories$31,894,465.86
Campina Equipment$89,713,990.92
Subtotal$121,608,456.78
Subtotal (excluded)$49,967,931.10
Products$171,576,387.88

Еще одна возможность управлять данными, выбранными для генерации отчета, - определение количества видимых элементов. Это значение задается двумя элементами данных:

<Имя множества> (visible items set)

<Имя множества> (more and hidden subtotal display)

Количество видимых элементов в наборе visible items set можно ограничить с помощью функций head или _firstFromSet, которые устанавливают максимальное число видимых элементов в результирующем отчете. Если необходимо снять все ограничения, эти функции следует удалить из выражения и оставить только [<Имя множества> (included set)]. В противном случае можно установить любое ограничение на количество видимых элементов, так что в отчете будет присутствовать не более чем указанное число элементов.

Элемент “more and hidden subtotal display” будет обновляться каждый раз при изменении набора видимых элементов “visible items set” для синхронизации данных. Представьте, что изменение набора видимых элементов не влечет за собой соответствующее обновление граничного значения для функции _remainderSet, определяющей “more and hidden subtotal display”. В результате такого рассогласования может случиться, что подитог скрытых или дополнительных элементов не будет отображаться как раз тогда, когда он должен присутствовать в отчете, или, наоборот, будет выводиться в отчете, невзирая на то, что видимый набор элементов включает в себя все элементы базового множества.


5. Приложение А. Используемые OLAP-функции

Элементы данных в спецификации Report Studio представляют собой комбинацию ряда общеупотребительных OLAP-функций. Для лучшего понимания синтаксиса и функциональности рассмотренных ранее элементов в этом приложении представлены примеры таких функций и конструкций с краткими пояснениями.

children
Синтаксис:children ( member )
Описание:Возвращает набор дочерних объектов указанного элемента.
descendants
Синтаксис:descendants ( set_expr , level | index [ , { self | before | beforewithmember | after } ] )
Описание:Для множества элементов возвращает набор подчиненных объектов указанного уровня или находящихся на указанном уровне вложения от корневого элемента. Подчиненные объекты промежуточных уровней включаются в результирующее множество только в том случае, если задана соответствующая опция. Дубликаты в результирующий набор не включаются.
members
Синтаксис:members ( hierarchy | level )
Описание:Возвращает набор всех элементов иерархии или определенного уровня иерархии. В случае выбора всех элементов иерархии результирующий набор не является гарантированно упорядоченным. Для упорядочивания результирующего набора необходимо явно использовать соответствующую функцию (например, hierarchize).
set
Синтаксис:set ( member { , member } )
Описание:Возвращает список элементов, принадлежащих одной иерархии
tuple
Синтаксис:tuple ( member { , member } )
Описание:Определяет ячейку (пересечение) заданных элементов, принадлежащих к разным измерениям. Если элемент не задан явно, используется текущий элемент для соответствующего измерения. Если текущий элемент некоторого измерения не определен явно в контексте вычисления, используется соответствующий элемент по умолчанию. Значение ячейки на пересечении измерений может быть получено с использованием функции value.
completeTuple
Синтаксис:completeTuple ( member { , member } )
Описание:Аналогично функции tuple, определяет ячейку (пересечение) заданных элементов, принадлежащих к разным измерениям. Если элемент не задан явно, функция completeTuple использует не текущий элемент измерения, а элемент по умолчанию для этого измерения. Значение ячейки на пересечении измерений может быть получено с использованием функции value.
count
Синтаксис:count( < currentMeasure | expr > within set set_expr { , set_expr } )
Описание:Возвращает целое значение, соответствующее количеству элементов, задаваемых выражением set_expr (или crossjoin, если задано несколько выражений set_expr), для которых значение currentMeasure или expr не пусто.
aggregate
Синтаксис:aggregate( < currentMeasure | expr > within set set_expr { ,set_expr } )
Описание:Возвращает значение, вычисляемое соответствующей функцией агрегации, которая зависит от типа агрегации выражения.

Использование этой функции особенно удобно при сведении различных показателей или выражений, имеющих разные типы агрегации. Например, если в отчете фигурируют показатели [Total Revenue] и [Average Revenue], то использование суммирования в качестве функции агрегации для обоих показателей приведет к тому, что в отчете будут выведены неправильные значения. То же самое произойдет, если для агрегации будет использоваться среднее значение. При использовании функции aggregate для указанных показателей в качестве функции агрегации для показателя [Total Revenue] будет использоваться суммирование, а для показателя [Average Revenue] – среднее значение. Конкретная функция агрегации для каждого показателя будет определена на основе свойства rollup этого показателя.

currentMeasure
Синтаксис:currentMeasure
Описание:Ключевое слово, которое может быть использовано в качестве первого аргумента функции суммирования элементов данных. Конкретный показатель будет выбран исходя из контекста макета отчета.

Так, например, в свойствах кросс-таблицы может быть определен показатель по умолчанию. Кроме того, в таблице может присутствовать еще один показатель, расположенный в строке или столбце. Если показатель определяет значения в строке или столбце таблицы, то для элементов данной строки или столбца этот показатель и является показателем по умолчанию. В противном случае для элементов строки или столбца показателем по умолчанию является параметр, определенный в свойствах таблицы. Аналогичные рассуждения применимы к другим контейнерам запросов.

except
Синтаксис:except ( set_exp1 , set_exp2 [,ALL] )
Описание:Возвращает все элементы множества, определяемого выражением set_exp1, которые не входят во множество set_exp2. Дублирующиеся элементы будут включены в результирующее множество только в том случае, если в качестве третьего аргумента присутствует ключевое слово ALL.
filter
Синтаксис:filter ( set_exp , boolean_exp )
Описание:Возвращает множество, полученное путем выборки элементов исходного множества на базе булевого условия. Каждый элемент множества будет включен в выборку только в том случае, если для этого элемента boolean_exp принимает значение «истинно».
top/bottom Существует несколько вариантов этой функции.
Синтаксис:topCount ( set_exp , index_exp , numeric_exp )

bottomCount ( set_exp , index_exp , numeric_exp )

topSum ( set_exp , numeric_exp1 , numeric_exp2 )

bottomSum ( set_exp , numeric_exp1 , numeric_exp2 )

topPercent ( set_exp , numeric_exp1 , numeric_exp2 )

bottomPercent ( set_exp , numeric_exp1 , numeric_exp2 )

Описание:Все функции этой группы выполняют сходную последовательность действий. Сначала они сортируют все элементы множества, задаваемого выражением set_exp. Элементы сортируются по значению последнего числового аргумента функции в порядке убывания для функций Top и в порядке возрастания для функций Bottom. Таким образом, функции Top упорядочивают элементы по убыванию и возвращают элементы с наибольшими значениями, в то время как функции Bottom упорядочивают элементы по возрастанию и возвращают элементы с наименьшими значениями.

К упорядоченным элементам исходного множества применяется одна из трех операций в зависимости от того, какой тип функции используется: Count, Sum или Percent.

Функции Count отбирают первые index_exp элементов множества. Для функций Top это будут index_exp элементов с наибольшими значениями, а для функций Bottom – index_exp элементов с наименьшими значениями соответственно.

Функции Sum возвращают серии элементов с наибольшими (top) или наименьшими (bottom) значениями, для которых подитог равен или превышает пороговое значение numeric_exp1.

Функции Percent возвращают серии элементов с наибольшими (top) или наименьшими (bottom) значениями, суммарная процентная доля которых от общей суммы всех элементов в исходном множестве равна или превышает numeric_exp1. Величина numeric_exp1 задается в виде значения от 0 до 100.

order
Синтаксис:order ( set_exp , value_exp [ , ASC | DESC | BASC | BDESC ] )
Описание:Упорядочивает элементы исходного множества на основе значений, полученных при вычислении выражения value_exp для каждого элемента множества. Порядок сортировки задается третьим параметром.

Существуют два способа упорядочивания: иерархический (ASC или DESC) и неиерархический (BASC или BDESC, где B означает "break hierarchy"). Иерархическое упорядочивание располагает элементы множества согласно их позиции в иерархии. Дочерние элементы каждого корневого элемента упорядочиваются по значению "value_exp". При неиерархическом упорядочивании элементы сортируются без учета их положения в иерархии. Если явное указание порядка сортировки отсутствует, используется значение ASC.

if
Синтаксис:if ( Boolean_exp ) then (value_exp1 ) else (value_exp2)
Описание:Определяет значение булевого выражения Boolean_exp и возвращает value_exp1, если выражение истинно, и value_exp2 в противном случае. Многомерные объекты, такие как иерархии, уровни, множества или элементы множества, не являются значениями и не могут быть использованы в качестве value_exp1 или value_exp2.
head
Синтаксис:head ( set_exp [ , index_exp ] )
Описание:Возвращает первые index_exp элементов множества set_exp. Значение index_exp по умолчанию равно 1.
member
Синтаксис:member ( value_exp [ , string1 [ , string2 [ , hierarchy ] ] ] )
Описание:Создает элемент множества в указанной иерархии с использованием указанного выражения. Параметр String1 используется для идентификации нового элемента. Значение String1 должно быть уникально в рамках работы запроса и отличаться от соответствующих значений других элементов иерархии. Значение string2 определяет подпись для нового элемента. Если оно не задано, в качестве подписи нового элемента будет использоваться пустая строка.

Если при обращении к функции member не указана иерархия, новый элемент считается показателем. Примечание. Все вычисления, используемые для получения группирующих элементов, дочерними объектами которых являются либо дополнительные вычисления, либо подмножества элементов, должны быть добавлены к иерархии с использованием функции member. В противном случае результаты работы таких вычислений будут непредсказуемы. Единственным исключением из этого правила является случай, когда в вычислениях в качестве дочерних объектов используются элементы одной иерархии. В этом случае результат по умолчанию считается элементом той же иерархии.

roleValue
Синтаксис:roleValue ( string [ , member | set_exp ] )
Описание:Возвращает значение атрибута, соответствующего роли string в заданном контексте. Второй аргумент может быть задан только в ограниченном количестве случаев, когда его значение можно получить из другого контекста. Использование ролей облегчает перенос приложений на различные источники и модели данных, так как значительно проще получить значение атрибута по соответствующему значению роли, чем по запросу с использованием уникального идентификатора элемента.

(При создании многомерных реляционных источников данных роли назначаются разработчиком модели).

Существуют встроенные значения ролей, которые определены для элементов всех типов данных и принимают значения _businessKey, _memberCaption, _memberDescription, _memberUniqueName.

Дополнительные значения ролей могут быть заданы в Framework Manager для каждого уровня иерархии. Например, уровень Product type может иметь атрибут Type Shipping Container, а уровень Product может иметь атрибут Product Shipping Container. Каждому из этих атрибутов в Framework Manager может быть назначена роль Container. После этого можно ссылаться на соответствующее значение атрибута без конкретного указания его имени, используя функцию roleValue.

_firstFromSet
Синтаксис:_firstFromSet ( set_exp, numeric_exp_max, numeric_exp_overflow )
Описание:Возвращает первые элементы множества в количестве, не превышающем numeric_exp_max + numeric_exp_overflow. Если общее количество элементов превышает значение numeric_exp_max + numeric_exp_overflow, возвращается только максимально разрешенное количество элементов.

Если количество элементов в исходном множестве превышает значение numeric_exp_max лишь на несколько элементов, то использование numeric_exp_overflow позволяет включить в результирующее множество все оставшиеся элементы. В случае если количество элементов в исходном множестве значительно больше, чем значение numeric_exp_max, результирующее множество будет включать ровно numeric_exp_max элементов.

_remainderSet
Синтаксис:_remainderSet ( member_exp, set_exp, numeric_exp )
Описание:Элемент множества, определяемый выражением member_exp, будет добавлен в результирующее множество в том случае, если количество элементов множества set_exp превышает заданное значение numeric_exp.
emptySet
Синтаксис:emptySet ( hierarchy )
Описание:Возвращает пустой элемент множества в заданной иерархии.

Эта функция в основном используется в качестве шаблона при разработке приложений или при создании динамических отчетов (с помощью SDK или непосредственно в Report Studio). Использование элементов данных, основанных на функции emptySet, позволяет создавать сложные выражения, которые впоследствии пересматриваются с заменой пустых множеств на реальные наборы данных.

hierarchy
Синтаксис:hierarchy ( level | member | set_exp )
Описание:возвращает иерархию, содержащую конкретный уровень, элемент или множество элементов.

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Information Management
ArticleID=676695
ArticleTitle=Анализ данных в Report Studio: IBM Cognos 8
publish-date=06012011