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.

Prerequisites

Before proceeding, ensure the following prerequisites are met:

  1. Install MindsDB locally via Docker or use MindsDB Cloud.
  2. To connect Ckan to MindsDB, install the required dependencies following this instruction.
  3. Install or ensure access to Ckan.

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"')

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"
  };