АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Что скрывается за строкой «Выражение_множества»

Читайте также:
  1. Преподает биологию. Строгий учитель старой формации. Дети его не особо жалуют, до поры до времени не подозревая, что в прошлом этого человека скрывается страшная тайна.
  2. Тайна раскрывается

Строка «Выражение_множества» определяет некоторое 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. Определить непрерывный диапазон стандартным способом — путем указания координат его начала и конца (заданием пары «верхняя левая ячейка — правая нижняя ячейка»).
  2. Из нескольких непрерывных диапазонов ячеек составить именованный диапазон в диспетчере имен Microsoft Excel.
  3. Объединить несколько именованных или непрерывных диапазонов в один внутри самой формулы — для этого при записи выражения их требуется выделить круглыми скобками.

На рис. 1 приведен пример вызова функции КУБМНОЖ(), в которой используется каждый из перечисленных вариантов.

 

Рис. 1. Возможные способы определения диапазонов ячеек

На этом возможности формулы не исчерпываются. Одну функцию КУБМНОЖ() можно использовать в качестве аргумента при составлении другой функции КУБМНОЖ(). Иными словами, ссылки на ячейки с формулами КУБМНОЖ() можно указывать в разделе «Выражение_множества», причем как в отдельности, так и объединяя их в собственные диапазоны ячеек. В свою очередь, вновь полученное значение функции КУБМНОЖ() допустимо применять для организации рекурсивного вызова в следующей функции и т.д.

Столь широкий потенциал открывает перед пользователями практически неограниченные возможности манипулирования многомерными данными. Единственное существенное ограничение, о котором всегда нужно помнить, — при составлении наборов из нескольких элементов следует ориентироваться на синтаксис MDX, который запрещает объединение в единое целое разнородных объектов. Поэтому, к примеру, попытка составить набор из кортежей (Дирекция, Сервис) и (Сервис, Дирекция) обречена на провал.

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


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |

Поиск по сайту:



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