Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Возвращает векторное произведение одного или нескольких множеств.
Syntax
Standard syntax
Crossjoin(Set_Expression1 ,Set_Expression2 [,...n] )
Alternate syntax
Set_Expression1 * Set_Expression2 [* ...n]
Arguments
Set_Expression1
Допустимое выражение многомерных выражений (MDX), которое возвращает множество.
Set_Expression2
Допустимое выражение многомерных выражений (MDX), которое возвращает множество.
Remarks
Функция Crossjoin возвращает векторное произведение двух или более заданных множеств. Порядок кортежей в полученном множестве зависит от порядка объединяемых множеств и порядка их членов. Например, когда первое множество состоит из {x1, x2,...,xn}, а второе множество состоит из {y1, y2, ...,y n}, векторное произведение этих множеств равно:
{(x1, y1), (x1, y2),...,(x1, yn), (x2, y1), (x2, y2),...,
(x2,y n),..., (xn, y1), (xn, y2),..., (xn, yn)}
Important
Если множества в перекрёстном соединении состоят из кортежей из разных иерархий атрибутов в одном измерении, эта функция вернёт только те кортежи, которые действительно существуют. Для получения дополнительной информации см. раздел «Ключевые концепции в MDX (аналитические услуги)».
Примеры
Следующий запрос показывает простые примеры использования функции Crossjoin на оси Columns and Rows запроса:
SELECT
[Customer].[Country].Members *
[Customer].[State-Province].Members
ON 0,
Crossjoin(
[Date].[Calendar Year].Members,
[Product].[Category].[Category].Members)
ON 1
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
Следующий пример показывает автоматическую фильтрацию, которая происходит, когда разные иерархии одного измерения пересекаются:
SELECT
Measures.[Internet Sales Amount]
ON 0,
//Only the dates in Calendar Years 2003 and 2004 will be returned here
Crossjoin(
{[Date].[Calendar Year].&[2003], [Date].[Calendar Year].&[2004]},
[Date].[Date].[Date].Members)
ON 1
FROM [Adventure Works]
Следующие три примера дают те же результаты — Internet Sales Amount по штатам для штатов США. Первые два используют синтаксис перекрёстного соединения, а третий демонстрирует использование клаузы WHERE для возврата той же информации.
Пример 1
SELECT CROSSJOIN
(
{[Customer].[Country].[United States]},
[Customer].[State-Province].Members
) ON 0
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
Пример 2
SELECT
[Customer].[Country].[United States] *
[Customer].[State-Province].Members
ON 0
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
Пример 3
SELECT
[Customer].[State-Province].Members
ON 0
FROM [Adventure Works]
WHERE (Measures.[Internet Sales Amount],
[Customer].[Country].[United States])