The CKAN DataStore offers an API for reading, searching and filtering data without the need to download the entire file first. The DataStore is an ad hoc database which means that it is a collection of tables with unknown relationships. This allows you to search in one DataStore resource (a table in the database) as well as queries across DataStore resources.
The datastore_search action allows you to search for data in a resource. By default 100 rows are returned - see the limit parameter for more information here.
api/3/action/datastore_search calls the API action 'datastore_search'
?resource_id=c5c16064-e2b3-4618-9b27-0dbf5c1388c2 is the query, and includes the resource id for that particular resource.
Finding the resource ID
Click on any resource on CanWIN's CKAN site. For example, the 'Greenedge Nutrient data 2016' data resource can be found here. Scroll down the page to 'Additional Information' and look for the field label 'Resource id'. This will be the ID for this specific resource.
Making requests to the API endpoint via python
Here are two ways to search and retrieve data from the DataStore using the API endpoint discussed above, and a python request module.
1. Requests
Installation
pip install requests
Python example using the requests module
2. urllib.request
Python example using the urllib.request module
Adding more functionality directly in the datasetore_search action call
To add more parameters to the query, use an & before each parameter pair (key=value) after the resource id. For example, to get the first two rows of data only add &limit=2 after the resource id. See all parameters here.