|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Что скрывается за строкой «Выражение_множества»
Строка «Выражение_множества» определяет некоторое MDX-выражение, которое должно быть рассчитано в кубе. Обычно «Выражение_множества» — это текстовая строка, но в функции поддерживаются и другие способы его задания. Эти дополнительные режимы делают функцию КУБМНОЖ() очень мощным инструментом по работе с наборами непосредственно в среде Microsoft Excel. Каждый набор объединяет несколько кортежей. Допустим, в книге Microsoft Excel в ячейках B1 и B2 заданы выражения, определяющие отдельные элементы многомерного пространства, например ([Дирекция].[Дирекция].&[2], [Сервис].[Сервис].&[1]) и ([Дирекция].[Дирекция].&[1], [Сервис].[Сервис].&[3]) соответственно. Каждое из этих выражений в отдельности можно использовать в функциях КУБЭЛЕМЕНТ() и КУБЗНАЧЕНИЕ(). О том, как это делается, рассказывалось в прошлых частях статьи. Но как быть, если нам требуется объединить эти разрозненные элементы в единое целое — набор? Явный путь заключается в написании соответствующего MDX-выражения средствами Microsoft Excel. К примеру, можно составить формулу СЦЕПИТЬ(«{«;B1;», «;B2;»}»), которая на выходе даст длинную текстовую строку «{([Дирекция].[Дирекция].&[2], [Сервис].[Сервис].&[1]), ([Дирекция].[Дирекция].&[1], [Сервис].[Сервис].&[3])}». Такая строка определяет уже выражение множества из двух элементов, поэтому ее можно использовать в качестве аргумента для функции КУБМНОЖ(). Недостатки предложенного решения очевидны. Вопервых, составление синтаксически корректного выражения набора при помощи функции конкатенации строк является весьма трудоемким занятием. Представьте, сколько усилий придется потратить, чтобы объединить в одну строку данные из 20 ячеек. А ведь их может быть и 100, и даже 200! Вовторых, последовательность объединения строк определяет очередность их попадания в набор и соответственно порядок их отображения на осях аналитического отчета. Для прикладных задач важно обеспечить упорядоченность размещения элементов в наборе: сначала должны идти кортежи, относящиеся к «Дирекции_1», а затем к «Дирекции_2». В противном случае пользователю будет сложно ориентироваться в отчетной форме. При малом числе измерений в кортежах (одно или два) и небольшом количестве самих элементов такую задачу вполне реально выполнить вручную — достаточно аккуратно перечислять ячейки в формуле СЦЕПИТЬ(). Но при значительных объемах данных одной внимательности будет недостаточно. Ситуация значительно усугубляется, когда в ходе работы требуется динамически менять состав набора — добавлять новые или удалять существующие элементы. Такая операция требует постоянного переписывания громоздкой формулы СЦЕПИТЬ(), что не очень удобно, учитывая необходимость вставки промежуточных служебных строк типа «,». Более эффективным и подходящим решением будет разбиение процедуры создания набора на два этапа. На первой стадии элементы объединяются в одно множество без оглядки на их взаимное расположение, а на второй они сортируются в соответствии с некоторым критерием. Кроме текстовой строки «Выражение_множества», исходное множество элементов разрешается собирать путем перечисления диапазонов ячеек. Microsoft Excel предлагает несколько способов выполнения такой операции:
На рис. 1 приведен пример вызова функции КУБМНОЖ(), в которой используется каждый из перечисленных вариантов.
Рис. 1. Возможные способы определения диапазонов ячеек На этом возможности формулы не исчерпываются. Одну функцию КУБМНОЖ() можно использовать в качестве аргумента при составлении другой функции КУБМНОЖ(). Иными словами, ссылки на ячейки с формулами КУБМНОЖ() можно указывать в разделе «Выражение_множества», причем как в отдельности, так и объединяя их в собственные диапазоны ячеек. В свою очередь, вновь полученное значение функции КУБМНОЖ() допустимо применять для организации рекурсивного вызова в следующей функции и т.д. Столь широкий потенциал открывает перед пользователями практически неограниченные возможности манипулирования многомерными данными. Единственное существенное ограничение, о котором всегда нужно помнить, — при составлении наборов из нескольких элементов следует ориентироваться на синтаксис MDX, который запрещает объединение в единое целое разнородных объектов. Поэтому, к примеру, попытка составить набор из кортежей (Дирекция, Сервис) и (Сервис, Дирекция) обречена на провал. Понятно, что гибкость и скорость составления множеств из диапазонов ячеек неизбежно приводят к хаотической структуре итогового набора. Поэтому финальный набор должен быть упорядочен в соответствии с определенным критерием. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |