|
Вы находитесь на страницах старой версии сайта. Перейдите на новую версию OLAP.ru |
| Поиск по сайту | ||||||
| Новости | ||||||
| Основы OLAP | ||||||
| Продукты | ||||||
| Business Objects/ Crystal Decisions | ||||||
| Каталог | ||||||
| OLAP в жизни | ||||||
| Тенденции | ||||||
| Download | ||||||
| ||||||
Анализ с применением матричных отчетовГенераторы отчетов баз данных и электронные таблицы обычно рассматриваются как два полностью независимых программных продукта. Генераторы отчетов баз данных очень хорошо сортируют и выбирают данные, в то время как электронная таблица превосходна для анализа, подытоживания, и отслеживания тенденций, обеспечивая представление численных данных в компактном матричном формате. Crystal Reports предоставляет инструмент, в некотором смысле объединяющий эти две особенности: объект cross-tab. Cross-Tab - матричный объект, который выглядит как электронная таблица. Этот объект суммирует данные с использованием, по крайней мере, трех полей базы данных: строки, столбца, и итогового поля. Для каждого пересечения строк и столбцов, итоговое поле подвергается операции группирования (суммируется, подсчитывается, или обрабатывается иным образом). Давайте рассмотрим два обычных итоговых отчета. Первый итоговый отчет показывает суммарные продажи в долларах для каждого региона. Второй отчет показывает общее количество единиц проданного продукта. Если рыночному аналитику понадобится скомбинировать вместе эти два отчета для более подробного анализа продаж в долларах по регионам и единицам проданного продукта, то вам придется ограничиться стандартным сгруппированным итоговым отчетом. Но не все так плохо! Вы можете создать отчет, подобный изображенному на рис. 1 (первоначально сгруппированный по регионам, а в пределах региона сгруппированный по типу продукта), который предоставит информацию, соответствующую пожеланиям аналитика. Однако и здесь есть проблема – если аналитику требуется сравнить общее количество горных велосипедов, проданных в стране с общим количеством детских велосипедов, проданных там же, то подобный отчет сделает этот процесс весьма трудоемким. Дело в том, что тип продукта – это вложенная группа, так что нет никакой возможности подсчета по этому показателю общего количества продукта. Также было бы весьма трудным занятием сравнение общих количеств одного региона с общими количествами другого, потому что эти регионы будут разделены в отчете несколькими страницами.
Этот сценарий - прекрасный пример того, где может использоваться объект Cross-Tab . Матричный отчет (Cross-Tab)– это компактный отчёт, который даёт возможность сравнивать промежуточные суммы и итоги по двум или более различным полям базы данных. Всякий раз, когда требуется показать данные по одной и другой позициям, матричный отчет является наилучшим вариантом для достижения этой цели. Оцените смысл выражения “по этой и по той позиции”. Рисунок 2, возможно, прояснит описываемую ситуацию. Создание объекта Cross-TabКогда вы смотрите на матричный отчет, хочется думать, что он сам по себе представляет полный отчёт, подобно полностью независимой электронной таблице Excel. На самом деле, матричный отчет – это только объект, который находится в существующей секции отчёта. Даже когда вы выбираете Cross-Tab Expert из Report Gallery, Crystal Reports только создает объект Cross-Tab и помещает его в заголовок отчёта. При желании, в одном отчёте можно создать несколько матричных отчетов. Фактически вы можете даже скопировать какой-нибудь существующий матричный отчет и поместить его в несколько различных секций одного и того же отчёта. Это - только объект, подобно текстовому объекту, карте или полю базы данных. Матричный отчет может существовать в отчёте сам по себе (о чём свидетельствует Cross-Tab Expert) или может быть помещен в отчёт, который уже содержит поля в разделе элементов, а также одну или более групп. Можно составить отчёт, полностью функциональный во всех отношениях, а потом добавить матричный отчет — этот объект только накладывается поверх отчёта. На первом этапе создания матричного отчета нужно убедиться, что таблицы, которые вы выбрали и связали для вашего отчёта, содержат достаточно данных для его заполнения. Если, например, вы хотите просмотреть итоги заказов за 1995,1996,1997 и 1998 годы по штату, убедитесь, что вы выбрали таблицы, которые включают количество заказов, год размещения заказа и штат клиента, разместившего заказы. Хотя это может показаться вполне очевидным, но если вы заранее всё тщательно не продумали, у вас может оказаться недостаточно данных для заполнения вашего матричного отчета. При желании, вы можете либо использовать, либо не использовать поля текущего отчёта в качестве полей матричного отчета. Если поля уже существуют в отчёте, то вы можете добавить их к объекту Cross-Tab. Или, если вы уже завершили добавление различных полей к отчёту, не огорчайтесь, еще не все потеряно. У вас все еще сохраняется возможность использования других полей, на базе которых создается этот матричный отчет. Вы можете использовать Cross-Tab Expert из Report Gallery или добавить матричный отчет к уже существующему отчёту. Чтобы использовать Cross-Tab Expert, просто выберите его из Report Gallery при создании нового отчёта. Как только вы выбрали и связали таблицы, которые будут использоваться в матричном отчёте, щёлкните кнопкой мыши по закладке Cross-Tab. При этом в Cross-Tab Expert появятся три закладки, полностью аналогичные закладкам, составляющим диалоговое окно Format Cross-Tab (обсуждаемое более подробно далее в этой статье). Если вы уже создали другой отчет, используя какой-либо другой эксперт (отличный от Cross-Tab Expert) или опцию Blank Report, то можете вставить объект Cross-Tab в любой момент, когда захотите. Чтобы создать объект Cross-Tab, лучше всего сначала выбрать закладку Design. Хотя поместить матричный отчет в отчёт можно и с помощью закладки Preview, вы не сможете точно указать место его размещения. При использовании закладки Design таких проблем не возникает. Нажмите кнопку Insert Cross-Tab на панели инструментов Supplementary или выберите Insert I Cross-Tab из раскрывающегося меню. Появится диалоговое окно Format Cross-Tab, как показано на рисунке 3.
Диалоговое окно Format Cross-Tab содержит три закладки: Cross-Tab, Style и Customize Style (закладки Style и Customize Style – это новые функции Crystal Reports 8). Закладка Cross-Tab используется для определения полей базы данных или формул, составляющих матричный отчет. Закладка Style позволяет вам выбрать заранее заданный стиль форматирования для матричного отчета. И, наконец, закладка Customize Style отображает ряд задаваемых пользователем опций форматирования, позволяющих точно управлять внешним видом матричного отчета. Первый этап при создании матричного отчета – это определение полей, которые составят строку, столбец и суммируемые поля матричного отчета. Это делается с помощью закладки Cross-Tab. Просмотрите окошко Available Fields, чтобы найти поля, которые вы планируете использовать в качестве полей строк и столбцов матричного отчета. Просто перетащите выбранное вами поле из окошка Available Fields в окошко Rows or Columns. Вы можете также выделить поле в окошке Available Fields и нажать на кнопку Add Row или Add Column. Затем выберите поле, которое вы хотите просуммировать по каждой ячейке (пересечение каждой строки и столбца). Обычно это бывает поле с числовыми или денежными единицами, типа Quantity Sold (Количество продаж) или Order Amount (Число заказов), но, в принципе, совсем не обязательно. Если вы выбираете числовое поле, Crystal Reports будет вычислять промежуточную сумму поля для каждой ячейки. Если вы выбираете поле с другим типом данных, будет показано количество появлений поля для каждой комбинации строка/столбец. Перетащите поле, которое требуется просуммировать, из окошка Available Fields в окошко Summarized Field, или выделите поле и щёлкните по кнопке Add Summarized Field. Если вы хотите использовать какую-нибудь уже существующую формулу для строки, столбца или суммируемого поля, нужно только выбрать эту формулу в окошке Available Fields. Если вы хотите создать новую формулу или отредактировать существующую формулу прежде, чем применить её в матричном отчете, нажмите кнопку New Formula или кнопку Edit Formula, любая из которых запускает редактор формул (Formula Editor), в котором вы можете создавать или редактировать формулу. Эта формула затем появится в окошке Available Fields, из которого её можно перетащить в окошки Rows, Columns или Summarized Fields. Если на начальном этапе вам не требуется выполнить какое-либо пользовательское форматирование объекта Cross-Tab, это значит, что он уже может быть помещен в отчёт (опции форматирования в двух других закладках диалогового окна Format Cross-Tab обсуждаются ниже). При нажатии ОК в диалоговом окне Format Cross-Tab вы возвращаетесь в отчёт с прикреплённым к курсору мыши небольшим объектом. Вы можете поместить объект Cross-Tab в заголовок или нижний колонтитул отчёта или группы. Матричные отчеты не могут быть помещены в секцию details, либо в заголовок или нижний колонтитул страницы – форма вашего курсора будет указывать на невозможность такого действия при попытке поместить матричный отчет в эти секции. Перетащите матричный отчет ниже всех объектов секции, таких как итоги, названия групп или текстовых объектов. Имейте в виду, что хотя в закладке Design матричный отчет занимает относительно немного места, но когда вы будете производить предварительный просмотр или печать отчёта, матричный отчет расширится по горизонтали и по вертикали для того, чтобы разместить все ее строки и столбцы. Поэтому, если ниже или правее матричных отчетов есть другие объекты, он будет напечатан прямо поверх их. Когда вы перетаскиваете матричный отчет, небольшой объект на курсоре мыши разворачивается в объект Cross-Tab большего размера, показывающий расположение строки, столбца, суммируемого поля, а также итогов по строке и столбцу. |
|
Опция |
Описание |
|
|
Rows list (Список строк) |
Выберите строку, которую вы хотите отформатировать. Если множественные поля строки уже были вами добавлены, то увидите перечень каждого поля строки. Можно также выбрать опции форматирования отдельно для общего итога (grand total) строки. |
|
|
Columns list(Список столбцов) |
Выберите столбец, который вы хотите отформатировать. Если множественные поля столбца уже были вами добавлены, то увидите перечень каждого поля столбца. Можно также выбрать опции форматирования отдельно для общего итога (grand total) столбца. |
|
|
Опции Group |
||
|
Suppress Subtotal |
Если вы выбираете эту опцию, строка или столбец промежуточной суммы (в зависимости от того, что выбрано в списке строк или столбцов) не будет появляться. В этом случае матричный отчет по-прежнему отображает иерархические групповые отношения между множественными полями строки и столбца, но промежуточная сумма для избранного поля не появляется. Эта опция доступна только для полей высокого уровня, когда вы уже выбрали множественные поля строки или столбца – опция не доступна, если вы выбрали поле строки или столбца низшего уровня (или если добавили только одно поле). |
|
|
Опции Grid |
||
|
Suppress Label |
Если вы выбираете опцию Suppress Subtotal, эта опция становится доступной. Установка этой опции полностью удалит поле, которое вы выбираете из строки или столбца. Иерархия группирования останется, но группа более высокого уровня совсем не появится в матричном отчете. |
|
|
Alias for Formulas |
Используется для ссылки на целую строку или столбец при выполнении условного форматирования в матричном отчете. |
|
|
Background Color |
Устанавливает фоновый цвет для целой строки или столбца, выбранных из списка строк или столбцов. Этот цвет не зависит от цвета любой индивидуальной ячейки, который можно выбрать, выделяя объект в матричном отчете и используя Format Editor. |
|
|
Show Cell Margins |
Окружает ячейки свободным пространством вдоль всех сторон. Отключение этой опции будет размещать ячейки прямо друг за другом. |
|
|
Indent Row Labels . |
Выбор этой опции приводит к отступу метки выбранной строки от левого края матричного отчета. После установки флажка Indent Row Labels можно задать величину отступа строки в текстовом поле. Это обычно используется для выделения иерархической связи групп при добавлении множественных полей строки в матричный отчет. |
|
|
Format Grid Lines |
Показывает диалоговое окно Format Grid Lines с кнопками (описано далее), которое предназначено для задания того, где и как должны появляться линии сетки в матричном отчете. |
|
|
Repeat Row Labels |
При выборе Keep Columns Together, эта опция будет повторять метки строки, если ширина матричных отчетов превышает страницу и таблица должна быть распечатана на двух или более страницах. |
|
|
Keep Columns |
Защищает столбцы от разрезания пополам, когда распечатываемая таблица превосходит по ширине страницу. |
|
|
Row Totals on Top |
Отображает итог по строке вверху, а не внизу текущих строк, содержащих обрабатываемые данные. |
|
|
Column Totals |
Отображает итог по столбцу слева, а не справа от левого текущего столбца, содержащего обрабатываемые данные. |
|
|
Suppress Empty Rows |
Строки, не содержащие данных, не появятся в строках матричного отчета. |
|
|
Suppress Empty Columns |
Столбцы, не содержащие данных, не появятся в столбцах матричного отчета. |
|
|
Suppress Row |
Предотвращает появление общего итога строки из общего итога (Grand Totals) матричного отчета. |
|
|
Suppress Column |
Предотвращает появление общего итога столбца из общего итога (Grand Totals) матричного отчета. |
Некоторые из опций закладки Customize Style, в частности, опции Repeat Row Labels и Keep Columns Together определяют, как будет выглядеть матричный отчет при распечатке его на бумаге. Это важно, так как Crystal Reports изображает матричные отчеты в закладке Preview иначе, чем они будут выглядеть в распечатанном виде. Даже если ширина матричного отчета превышает ширину страницы, закладка Preview покажет полный матричный отчет. Вы можете сильно прокрутить изображение вправо, чтобы увидеть остальную часть матричного отчета, не поместившуюся на экран.
Однако при распечатке матричного отчета на бумаге из Crystal Reports, если его ширина больше, чем ширина печатной страницы, необходимо обозначить разрывы страниц. Можно управлять форматированием матричного отчета Crystal Reports на нескольких страницах с помощью опций закладки Customize Style. Когда вы отображаете матричный отчетв закладке Preview, то можете увидеть, где Crystal Reports вставляет разрывы страниц для распечатки на бумаге матричных отчетов. В следующем примере обратите внимание что разрывы страниц вставлены между столбцами (они не разбивают числа в столбце) и что разметки строк повторяются после каждого разрыва страницы. Это результат активации обеих опций – Keep Columns Together и Repeat Row Labels.

В предыдущих версиях Crystal Reports вы просто могли по желанию включить или отключить опцию линий сетки. В версии 8 добавлена возможность настройки характера линий, определяющая, какие именно линии появятся, и как они будут выглядеть. Настроить линии сетки можно, нажав кнопку Format Grid Lines в секции Grid Options закладки Customize Style. Появится диалоговое окно Format Grid Line, как показано на рис.10.
Как и в предыдущих версиях, вы можете совсем не отображать линии сетки, отключив Show Grid Lines. Чтобы отрегулировать отдельные линии сетки, можно либо выделить в списке линий сетки ту линию, которую вы хотите настроить, либо просто щёлкнуть мышью по отдельной линии на диаграмме линий сетки в верхней части диалогового окна. Затем можно выбрать индивидуальные опции для линии сетки в секции Line Options диалогового окна Format Grid Lines.

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

В каждой ячейке существует несколько суммируемых полей. Однако пользователю не очевидно, что это за числа – они могут быть итогами, средними значениями или количеством появлений полей. Хотя программа Crystal Reports не имеет возможности делать подписи для матричных отчетов, вы можете создать свои собственные подписи, воспользовавшись текстовыми объектами и, при желании, используя отрисовку с помощью цветных прямоугольников. Здесь изображен многоитоговый матричный отчет с подписью:

Текстовые объекты просто помещены в ту же секцию отчёта, что и матричный отчет, так что они появляются в левом верхнем углу матричного отчета. Небольшая незаполненная область над первой строкой и слева от первого столбца матричного отчета может быть помещена прямо над верхней частью текстовых объектов. Поля итогов отформатированы разными цветами, а небольшие цветные прямоугольники одного и того же цвета нарисованы с помощью инструмента для отрисовки прямоугольников.
При желании, можно условно форматировать ячейки в зависимости от их содержания. Условное форматирование – это процесс изменения вида матричного отчета в зависимости от его содержимого. Вы можете выделить определённые ячейки, которые превышают определённый показатель сбыта или норму отгрузки; можете изменить цвет, сделать затенение или обрамление именно этих ячеек.
Выделите итоговый объект или объект с промежуточной суммой, который вы хотите условно отформатировать. Затем выберите Format | Highlighting Expert из раскрывающегося меню или щёлкните правой кнопкой мыши и выберите Highlighting Expert из всплывающего меню. Вы можете выбрать условия и форматы Highlighting Expert для того, чтобы выделить определённые ячейки.
Существует также возможность использовать условные формулы. После выделения в матричном отчете итогового объекта или объекта с промежуточной суммой отобразите Format Editor, выбирая опции из раскрывающегося меню или щёлкнув правой кнопкой мыши и выбрав опции из всплывающего меню. Вы можете нажать кнопку Conditional Formula в любом месте Format Editor, чтобы задать условия для этого свойства форматирования.
Если вы решили воспользоваться условными формулами, а не Highlighting Expert, необходимо быть внимательными с тестами, использующимися для условного форматирования итогов матричного отчета. Так как итоги – это вычисления, основанные на полях базы данных, но при этом сами не являющиеся полями базы данных, вы не можете просто протестировать поле базы данных для условного форматирования матричного отчета. И, в отличие от того, что вы видите, если помещаете промежуточные суммы или итоги в нижний колонтитул группы, вы не увидите промежуточных сумм или итогов, которые заполняют ячейки в списке полей Formula Editor.
При условном форматировании матричных отчетов вы должны протестировать встроенную функцию Current Field Value. Current Field Value, как следует из его названия, возвращает всё, что содержит протестированное поле (т.е. показывает текущее значение поля). Следовательно, можно использовать условную формулу, например, чтобы окрашивать в серебристый цвет фон для промежуточных сумм матричного отчета, превышающих $ 10,000:
If CurrentFieldValue > 10000 Then Silver Else NoColor
На рис.11 показан матричный отчет с таким форматированием

Используя функцию Current Field Value, описанную в предыдущем разделе, вы можете только задать условия форматирования матричного отчета на основе значения текущей ячейки. Однако вам может понадобиться также условное форматирование на основе строки или столбца, содержащих эту ячейку, а не только на основе её значения. В версии Crystal Reports 8 добавлены две новых функции GridRowColumnValue и Alias for Formulas, позволяющие реализовать эту возможность.
При условном форматировании ячейки обратите внимание на новую функцию GridRowСolumnValue в окошке Functions редактора формата формул Format Formula Editor. Используя эту функцию вместе с формулой If-Then-Else (при установке свойства многовариантного форматирования) или с булевой (логической) формулой (при установке свойства форматирования включить/выключить), вы можете определить строку или столбец, в котором находится ячейка, и, соответственно, произвести форматирование. Рассмотрим следующую булеву (логическую) формулу, которая задаёт свойство Drop Shadow в закладке Format Editor Border:.
GridRowColumnValue("Customer.Region") = "CA"
Результат показан на рис.12. Обратите внимание, что затенены только ячейки, расположенные в столбце CA. Используя псевдоним как параметр функции GridRowColumnValue, можно определить, к какой строке или столбцу будет относиться формула. В этом сценарии Customer.Region употреблён в качестве псевдонима. Так тестируется функция GridRowColumnValue для столбца Region. Если значение столбца – CA, то будет использоваться затенение.

По умолчанию, псевдоним каждой строки или каждого столбца – это название поля или формулы строки или столбца (без фигурных скобок). Если вы хотите изменить псевдоним на более содержательное название (допустим, только название поля вместо полной комбинации названий таблицы/поля), то можете сделать это в закладке Customize Style диалогового окна Format Cross-Tab (см. рис.9). Выделите поле строки или столбца в списке Rows или Columns. Затем введите новое значение в текстовом поле псевдонима Alias for Formulas. Далее можно использовать новый текст, введенный вами, как параметр функции GridRowColumnValue для обращения к строке или столбцу.
Вы не сможете анализировать объект Cross-Tab по иерархии настолько глубоко, насколько вам бы этого хотелось. Если вы включаете матричный отчет в другой итоговый отчёт, то вы можете иерархически анализировать группы итогового отчёта, но не матричный отчет.
Cкачать статью в виде .pdf файла
© 2001 Interface Ltd