**THIS TOPIC APPLIES TO:**SQL Server (starting with 2008)Azure SQL DatabaseAzure SQL Data Warehouse Parallel Data Warehouse

Converts one or more sets to an array for use in a user-defined function.

## Syntax

```
SetToArray(Set_Expression1 [ ,Set_Expression2,...n ][ ,Numeric_Expression ] )
```

## Arguments

*Set_Expression1*

A valid Multidimensional Expressions (MDX) expression that returns a set.

*Set_Expression2*

A valid Multidimensional Expressions (MDX) expression that returns a set.

*Numeric_Expression*

A valid numeric expression that is typically a Multidimensional Expressions (MDX) expression of cell coordinates that return a number.

## Remarks

The **SetToArray** function converts one or more sets to an array for use in a user-defined function. The number of dimensions in the resulting array is the same as the number of sets specified.

The optional numeric expression can provide the values in the array cells. If a numeric expression is not specified, the cross join of the sets is evaluated in the current context.

The cell coordinates in the resulting array correspond to the position of the sets in the list. For example, there are three sets, `SA`

, `SB`

, and `SC`

. Each of these sets has two elements. The MDX statement, `SetToArray(SA, SB, SC)`

, creates the following three-dimensional array:

```
(SA1, SB1, SC1) (SA2, SB1, SC1) (SA1, SB2, SC1) (SA2, SB2, SC1)
(SA1, SB1, SC2) (SA2, SB1, SC2) (SA1, SB2, SC2) (SA2, SB2, SC2)
```

##### Note

The return type of the **SetToArray** function is the VARIANT type, VT_ARRAY. Therefore, the output of the **SetToArray** function should be used only as input to a user-defined function.

## Example

The following example returns an array.

```
SetToArray([Geography].[Geography].Members, [Measures].[Internet Sales Amount])
```