Symptom
You are using an OData query to retrieve data from a ByD or C4C data source, however your query returns the following error:
'$skip' are not allowed in the requested URL
Environment
- SAP Business ByDesign
- SAP Cloud for Customer
Reproducing the Issue
- Go to the work center Business Analytics and select the view Design Data Sources.
- Search for your data source and mark it.
- Click Build OData Queries.
- Select the relevant attributes and set the required filters.
- Click Generate Data Query.
- Copy and paste the URL into your browser, for example.
- Before running the query, add the query option &skip.
- Your query may now look like this: https://myxxxxxx.crm.ondemand.com/sap/c4c/odata/analytics/ds/Hcmpab01.svc/Hcmpab01?$select=C_EmployeeUuid,Count&$skip=10 (xxxxxx stands for the URL of your system). Run this query.
- The browser returns the above error message.
Cause
The $skip clause for data sources only works for data which is non-aggregated. This is also outlined in the help center documentation.
Data in a data source is aggregated (i.e. summarized) unless a key field is requested in the view. Here are some examples for key field:
- In the Account Master Data data source, Account would be a key field.
- In the Employee Master Data data source, Employee would be a key field.
- In a transactional data source, the Node ID field is the key field.
Resolution
Make sure you add the respective key field to your query.
The node ID field is a technical field, which you will see of you request the metadata for a data source. It will not be listed in the "Build OData Queries" feature because it is technical, however you can still add this field via the $select clause:
https://myxxxxxx.crm.ondemand.com/sap/c4c/odata/analytics/ds/Hcmpab01.svc/Hcmpab01?$select=NodeId,C_EmployeeUuid,Count&$skip=10
Note: The ID field is also a field considered as key field by the OData service. However, it does not ensure that the data is not aggregated. For this reason, please use the NodeId field if in doubt.
If the data source is a combined one, please include both the NodeID as well as the field Mdav. For example:
https://myxxxxxx.crm.ondemand.com/sap/c4c/odata/analytics/ds/Hcmpab01.svc/Hcmpab01?$select=NodeId,Mdav,C_EmployeeUuid,Count&$skip=10
See Also
2697858 - OData Query for Data Sources Does Not Work
2821437 - OData Query Builder Does Not Work With Date Time Fields
2675247 - Build OData Queries Button Grayed Out or Missing
Keywords
odata, skip, not allowed in requested URL, not working, query, operator, data source, report, analytics, nodeid , KBA , AP-RC-ANA , C4C, ByD, Travel: Analytics Tools & Frameworks , Problem