> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cognite.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Data modeling OData service

> Connect a Cognite Data Fusion data model as a data source and use OData clients to query, transform, and visualize data stored in CDF data models.

The data modeling <span translate="no">OData</span> service allows you to access data models created in <span translate="no">CDF</span> using <span translate="no">OData</span> protocols and accepts URLs with the following schema:

```
https://{cluster}.cognitedata.com/odata/{apiVersion}/projects/{project}/models/spaces/{spaceExternalId}/datamodels/{dataModelExternalId}/versions/{dataModelVersion}
```

Where:

* `{cluster}`: the name of the <span translate="no">CDF</span> cluster, e.g., `westeurope-1`.
* `{apiVersion}`: the version of the <span translate="no">OData</span> service API (latest is `20230821`).
* `{project}`: the name of the <span translate="no">CDF</span> project, e.g., `publicdata`.
* `{spaceExternalId}`: the external ID of the <span translate="no">space</span> where the data model is published.
* `{dataModelExternalId}`: the external ID of the data model.
* `{dataModelVersion}`: the version of the data model.

If you point the <span translate="no">OData</span> client to the correct data model <span translate="no">OData</span> URL and [authenticate](/cdf/access/concepts/authentication_flows_oidc), the server returns a table with all <span translate="no">views</span> existing on the associated data model.

## Character guidelines

Follow these character usage guidelines for the `space` and `externalId` fields in <span translate="no">Power BI</span>:

* **Safe to use**:

  * Alphanumeric characters: `a-z` `A-Z` `0-9`
  * Unreserved special characters: `-` `_` `.` `~`

* **Use with caution**:

  * The following reserved characters may work but are not guaranteed to function consistently: `!` `*` `'` `(` `)` `;` `:` `@` `&` `=` `+` `$` `,`

* **Avoid**:
  * Any special characters not listed above may prevent <span translate="no">Power BI</span> from loading or navigating data correctly.

<a id="filter-items-in-data-models" />

## Filter items in data models

Use filters to create workable data sets for reporting or dashboarding. The data modeling <span translate="no">OData</span> service supports server-side filtering that allows you to push down filters to the server to avoid downloading all data into the client.

| Type                   | Pushdown                              |
| ---------------------- | ------------------------------------- |
| Model property         | Yes, except `EndsWith` and `Contains` |
| Time series metadata   | No                                    |
| Data and string points | `timestamp` only                      |
| Files metadata         | No                                    |

<span translate="no">Power Query</span> performs `EndsWith` and `Contains` string filtering operations in memory.

`JSONObjects` are presented as text values in <span translate="no">Power BI</span>.

<a id="working-with-time-series-and-data-points" />

## Working with time series and data points

The data modeling <span translate="no">OData</span> service supports fetching `Timeseries` from data models.

To get data points for a specific time series, you can navigate to `string` or `dataPoints`. To get data points from a time range, filter the data point on a timestamp value.

<span translate="no">CDF</span> doesn't support filtering time series based on their values.

Time series can contain highly granular data. To improve performance and reduce the data load, use the dataPoint `Aggregate` function.

## Known limitations and issues

The sections below cover current known limitations and issues related to using <span translate="no">CDF</span> data models as the data source for <span translate="no">Power BI</span>.

### Types with relations to other types

The integration between <span translate="no">CDF</span> data models and <span translate="no">Power BI</span> has limited support for traversing direct relations between nodes using the [<span translate="no">OData</span> "expand" concept](https://learn.microsoft.com/en-us/odata/webapi/odata-expand).

<span translate="no">Power BI</span> processes an operation to flatten a table using an expand relation by issuing a separate API request for each instance/row to be expanded. This is very time-consuming for any significant data volume.

### Graph edges and attached properties

Currently, we don't support retrieval of properties on edges.

### Data refreshes

The minimum refresh rate for data in <span translate="no">Power BI</span> is 15 minutes. The <span translate="no">OData</span> service doesn't let you load data in small increments for dashboard updates. If a dashboard contains a large amount of data that requires frequent updates, there may be better options than using the data modeling <span translate="no">OData</span> service.
