Прежде чем мы углубимся в структуру запроса, давайте еще раз закрепим понимание трех основных сущностей, с которыми вы будете постоянно работать в MDX: члены, кортежи и наборы. Это как атомы, молекулы и клетки в биологии данных.
Член (Member): Единица ИзмеренияЧлен — это самый базовый элемент в любом измерении. Это конкретное значение на определенном уровне иерархии. Например:
- [Date].[Calendar Year].&[2007] — член '2007' из иерархии 'Calendar Year' измерения 'Date'.
- [Product].[Category].&[Bikes] — член 'Bikes' изиерархии 'Category' измерения 'Product'.
- [Geography].[Country].&[United States] — член 'United States' из иерархии 'Country' измерения 'Geography'.
- [Measures].[Sales Amount] — членмеры 'Sales Amount' (меры также являются членами измерения Measures).
Каждый член имеет уникальное имя, которое позволяет однозначно его идентифицировать в кубе. Символ & перед уникальным именем члена ([UniqueName]) используется для ссылки на член по его ключу, а не по отображаемому имени, что обеспечивает однозначность.
Кортеж (Tuple): Точная Координата в КубеКортеж — это упорядоченная коллекция из одного или нескольких членов, по одному из каждого измерения, которые определяют конкретную ячейку в кубе. Кортеж указывает на
точную координату в вашем многомерном пространстве данных.
Например:- ([Measures].[Sales Amount], [Date].[Calendar Year].&[2007], [Product].[Category].&[Bikes]) — этот кортеж указывает на ячейку, содержащую сумму продаж велосипедов за 2007 год.
- ([Measures].[Order Quantity], [Geography].[Country].&[Canada], [Date].[Calendar Quarter].&[Q3 CY 2008]) — этот кортеж указывает на количество заказов из Канады за 3-й квартал 2008 года.
Если в кортеже не указан член для какого-либо измерения, MDX по умолчанию использует
член по умолчанию (default member) для этого измерения. Например, если вы запросите ([Measures].[Sales Amount], [Date].[Calendar Year].&[2007]), то продажи будут показаны для всех продуктов, регионов и клиентов, так как для измерений Product, Geography и Customer будут использованы их члены по умолчанию (обычно это член 'All' или 'Все').
Набор (Set): Коллекция для АнализаНабор — это коллекция из одного или нескольких кортежей или членов. Наборы являются основой для определения того, что будет отображаться на осях вашего запроса. Вы можете думать о наборах как о списках элементов, которые вы хотите включить в свой отчет.
Наборы могут быть:
- Явно определенными: { [Date].[Calendar Year].&[2007], [Date].[Calendar Year].&[2008] } — набор из двух членов.
- Созданными с помощью функций:
[Product].[Category].Members — набор всех членов на уровне категорий продуктов.
[Date].[Calendar Year].&[2007].Children — набор всех дочерних элементов 2007 года (т.е. кварталов 2007 года).
CrossJoin([Product].[Category].Members, [Geography].[Country].Members) — набор всех возможных комбинаций категорий продуктов и стран.
Понимание этих трех концепций — ключ к освоению MDX.