Skip to main content
In this section, we provide guides and references to use the QuestDB connector. Configure and schedule QuestDB metadata workflows from the OpenMetadata UI:

How to Run the Connector Externally

To run the Ingestion via the UI you’ll need to use the OpenMetadata Ingestion Container, which comes shipped with custom Airflow plugins to handle the workflow deployment. If, instead, you want to manage your workflows externally on your preferred orchestrator, you can check the following docs to run the Ingestion Framework anywhere.

External Schedulers

Get more information about running the Ingestion Framework Externally

Requirements

QuestDB exposes metadata through its built-in table functions (tables(), views(), materialized_views(), and table_columns()). Any authenticated user can call these functions - no additional database grants are required beyond valid credentials and network access to the QuestDB PostgreSQL wire protocol port (default: 8812).

Python Requirements

We have support for Python versions 3.9-3.11
To run the QuestDB ingestion, you will need to install:
pip3 install "openmetadata-ingestion[questdb]"

Metadata Ingestion

All connectors are defined as JSON Schemas. Here you can find the structure to create a connection to QuestDB. In order to create and run a Metadata Ingestion workflow, we will follow the steps to create a YAML configuration able to connect to the source, process the Entities if needed, and reach the OpenMetadata server. The workflow is modeled around the following JSON Schema

1. Define the YAML Config

This is a sample config for QuestDB:

2. Run with the CLI

First, we will need to save the YAML file. Afterward, and with all requirements installed, we can run:
metadata ingest -c <path-to-yaml>
Note that from connector to connector, this recipe will always be the same. By updating the YAML configuration, you will be able to extract metadata from different sources.

Lineage

QuestDB supports view lineage extraction. Reuse the same serviceConnection block from metadata ingestion so the lineage workflow can connect to the database. Query-log lineage and stored-procedure lineage are not supported, so keep those modes disabled. This is a sample config for QuestDB view lineage:
source:
  type: questdb-lineage
  serviceName: <service_name>
  serviceConnection:
    config:
      type: QuestDB
      username: <username>
      authType:
        password: <password>
      hostPort: localhost:8812
  sourceConfig:
    config:
      type: DatabaseLineage
      overrideViewLineage: false
      processViewLineage: true
      processQueryLineage: false
      processStoredProcedureLineage: false
sink:
  type: metadata-rest
  config: {}
workflowConfig:
  openMetadataServerConfig:
    hostPort: <openmetadata_host_port>
    authProvider: openmetadata
    securityConfig:
      jwtToken: <jwt_token>
After saving the YAML config, run the command the same way you did for metadata ingestion:
metadata ingest -c <path-to-yaml>