This is the implementation of the Ckan data handler for MindsDB.

CKAN is a Data Catalogue for Open Data. It stores data in a DataStore. To retrieve data from CKAN, you need to use the CKAN API.

Implementation

You can connect CKAN by creating a CKAN API client. In this handler, you can create a CKAN API client with ckanapi.

Some CKAN instances require you to provide API key. You can find it in the CKAN user panel.

from ckanapi import RemoteCKAN
ckan = RemoteCKAN('https://ckan.example.com/', apikey='YOUR_API_KEY')

CKAN API client supports all API methods of CKAN. For our handler we use the DataStore API.

The datastore_search_sql action supports raw SQL commands to be used to search for the data.

Here is an example:

ckan.action.datastore_search_sql(sql='SELECT * FROM "resource_id"')

If you installed MindsDB locally via pip, you need to install all handler dependencies manually. To do so, go to the handler’s folder (mindsdb/integrations/handlers/ckan_handler) and run this command: pip install -r requirements.txt.

Usage

In order to make use of this handler and connect to a Ckan server in MindsDB, the following syntax can be used:

CREATE DATABASE ckan_datasource
WITH
  engine = 'ckan',
  parameters = {
    "url": "http://demo.ckan.org/api/3/action/",
    "apikey": "YOUR_API_KEY"
  };