---
url: /process-functions/cube-slice.md
description: >-
  Slices data from an intersection of elements from their respective dimensions
  within the cube.
---

# cube.slice

Slices data from an intersection of elements from their respective dimensions within the cube.

```js
cube.slice(cubeName, elements...)
cube.slice(cubeName, elementsArray)
cube.slice(cubeName, elementsByDimension)
cube.slice(cubeName, ignoreConsolidations, elements...)
cube.slice(cubeName, ignoreConsolidations, elementsArray)
cube.slice(cubeName, ignoreConsolidations, elementsByDimension)
```

### Parameters

* `cubeName` (string): The identifier of the cube.
* `ignoreConsolidations` (boolean): If `true`, consolidated elements are ignored and only leaf-level intersections are returned. `(optional)`
* `elements` (string... | string\[] | object): One element per dimension in the cube (in dimensional order).

When elements is an object:&#x20;

* Keys must match dimension names.
* Missing dimensions default to "".

Each dimension argument:

* May contain a single value.
* May contain multiple values separated by a pipe (`|`).
* May be an empty string (`""`) to include all elements in that dimension (based on valid intersections).

### Returns

* `slice` (object): A slice result set that can be iterated and also read using cursor-style methods.

The returned slice supports:

* `Size()` (number): Total number of rows available in the slice.
* `Reset()`: Resets the slice cursor back to the start.
* `EOF()` (boolean): Returns `true` when no more rows are available.
* `Next()` (array): Returns the next available row and advances the cursor.
* `GetIndex()` (number): Returns the current cursor index (0-based).
* `exportCsv(filename, withHeaders, escapeControlCharacters (optional))`: Exports the slice to a CSV file.

As of , the returned `slice` is also **iterable**, so you can use `for...of`.

Each row returned from `Next()` or iteration is an array containing the cell locations elements and value:

```
[
  element1,
  element2,
  ...
  elementN,
  value
]
```

***

## Examples

### Iterable&#x20;

```js
// Cube Name - Sales; 
// Dimensions: Year, Month, Scenario, Department, Product, Measures 
var slice = cube.slice("Sales", "2017|2018", "", "Actual", "", "", "Units Sold");

for (var row of slice) {
    console.log(row);
}
```

### Cursor Style

```js
// Cube Name - Sales; 
// Dimensions: Year, Month, Scenario, Department, Product, Measures 
var slice = cube.slice("Sales", "2017|2018", "", "Actual", "", "", "Units Sold");

while (!slice.EOF()) {
    var row = slice.Next();
    console.log(row);
}
```

### Object Example&#x20;

```js
// Cube Name - Sales; 
// Dimensions: Year, Month, Scenario, Department, Product, Measures 
var slice = cube.slice("Sales", {
    "Year": "2017|2018",
    "Scenario": "Actual",
    "Measures": "Units Sold"
});

for (var row of slice) {
    console.log(row);
}
```

### Export to CSV

```js
var slice = cube.slice("Sales", "2017|2018", "", "Actual", "", "", "Units Sold");
slice.exportCsv("exports/sales_slice.csv", true);
```
