docs-mintlify/reference/core-data-apis/mdx-api.mdx
The MDX API enables Cube to connect to Microsoft Excel. It derives its name from multidimensional data expressions, a query language for OLAP in the Microsoft ecosystem.
Unlike Cube Cloud for Excel, it only works with Excel on Microsoft Windows. However, it allows using the data from the MDX API with the native PivotTable in Excel.
<Note>Available on Enterprise plan.
</Note> <Warning>The MDX API is currently in preview.
</Warning>Key features:
While the MDX API is in preview, your Cube account team will enable and configure it for you.
</Warning>To enable or disable the MDX API on a specific deployment, go to Settings in the Cube Cloud sidebar, then Configuration, and then toggle the Enable MDX API option.
To ensure the best user experience in Excel, the MDX API should be able to respond to requests with a subsecond latency. Consider the following recommendations:
By default, the MDX API creates additional hierarchies for all [time dimensions][ref-time-dimensions] and organizes them in a separate folder called "Calendar" for each dimension. The following hierarchies are created:
- Dimension Calendar:
- Year
- Quarter
- Month
- Day
- Dimension Calendar Weeks:
- Year
- Week
- Dimension Calendar Quarter of Year:
- Quarter
- Dimension Calendar Year:
- Year
The Calendar Quarter of Year and Calendar Year hierarchies are particularly useful in Excel because they allow you to filter your data without needing to drill down or expand all levels. You can use them as slicers while placing other dimensions on the axes.
You can set the CUBE_MDX_CREATE_DATE_HIERARCHIES environment variable to false to disable this behavior.
The MDX API respects the format parameter of measures so that the
values are displayed accordingly in Excel, i.e., percent formats values as percentages
and currency formats values as monetary values.
Currency formatting is locale-aware and responds to the language configuration set via
the CUBE_XMLA_LANGUAGE environment variable.
The MDX API works only with views, not cubes.
</Info>The following section describes Excel-specific configuration options.
MDX API supports dimension hierarchies. You can define multiple hierarchies. Each level in the hierarchy is a dimension from the view.
views:
- name: orders_view
description: "Data about orders, amount, count and breakdown by status and geography."
meta:
hierarchies:
- name: "Geography"
levels:
- country
- state
- city
For historical reasons, the syntax shown above differ from how hierarchies are supposed to be defined in the data model. This is going to be harmonized in the future.
</Info>You can define a member that will be used as a key for a dimension in the cube's model file.
cubes:
- name: users
sql_table: USERS
public: false
dimensions:
- name: id
sql: "{CUBE}.ID"
type: number
primary_key: true
- name: first_name
sql: FIRST_NAME
type: string
meta:
key_member: users_id
You can define a member that will be used as a label for a dimension in the cube's model file.
cubes:
- name: users
sql_table: USERS
public: false
dimensions:
- name: id
sql: "{CUBE}.ID"
type: number
meta:
label_member: users_first_name
You can define custom properties for dimensions in the cube's model file.
cubes:
- name: users
sql_table: USERS
public: false
dimensions:
- name: id
sql: "{CUBE}.ID"
type: number
meta:
properties:
- name: "Property A"
column: users_first_name
- name: "Property B"
value: users_city
MDX API supports organizing measures into groups (folders). You can define measure groups in the view's model file.
views:
- name: orders_view
description: "Data about orders, amount, count and breakdown by status and geography."
meta:
folders:
- name: "Folder A"
members:
- total_amount
- average_order_value
- name: "Folder B"
members:
- completed_count
- completed_percentage
For historical reasons, the syntax shown above differ from how folders are supposed to be defined in the data model. This is going to be harmonized in the future.
</Info>Authentication and authorization work the same as for the SQL API.