Skip to content

[HELP WANTED] Implement a new adapter for Microsoft SQL Server #114

Description

@raphael-intugle

name: Help Wanted
about: Request community help on a specific task or feature
title: '[HELP WANTED] Implement a new adapter for Microsoft SQL Server'
labels: 'help wanted'
assignees: ''

What We Need Help With

We need help creating a new adapter to connect Intugle to Microsoft SQL Server. This will enable users to connect to their SQL Server databases to profile data, build semantic models, and generate data products.

Background & Context

To increase the versatility of Intugle, we want to expand our library of connectors to support popular enterprise database systems. Microsoft SQL Server is a widely used RDBMS, and adding a native adapter for it will make Intugle accessible to a larger group of users and a wider range of data ecosystems.

Current State

Currently, Intugle does not have a native connector for Microsoft SQL Server. Users must manually extract data into a supported format (like CSV) to use it with the toolkit, which is inefficient and doesn't allow for direct interaction with the database.

Desired Outcome

A robust and fully functional SQL Server adapter that is seamlessly integrated into the Intugle framework. A user should be able to configure their SQL Server connection details in profiles.yml and leverage Intugle's full feature set, including:

  • Profiling tables and columns.
  • Executing queries against SQL Server.
  • Materializing queries as new tables or views.
  • Building data products and performing semantic searches on their SQL Server data.

Scope of Work

  • Create the directory and file scaffolding for the SQL Server adapter in src/intugle/adapters/types/sqlserver/.
  • Define the Pydantic models for SQL Server connection and data configuration (models.py).
  • Implement the SQLServer class, inheriting from intugle.adapters.adapter.Adapter (sqlserver.py).
  • Implement all the abstract methods of the Adapter class, translating them into the appropriate T-SQL dialect.
  • Register the new adapter in the adapter factory to make it discoverable.
  • Add the necessary Python driver (e.g., pyodbc or pymssql) as an optional dependency in pyproject.toml.
  • Write unit tests to ensure the adapter is working correctly.

Technical Details

The new adapter should follow the established pattern of existing database adapters, such as the PostgresAdapter. It will need to handle the specifics of connecting to SQL Server and executing T-SQL queries.

Relevant Files/Modules

  • src/intugle/adapters/types/postgres/ (as a reference)
  • src/intugle/adapters/types/sqlserver/ (to be created)
  • src/intugle/adapters/factory.py (to register the new adapter)
  • pyproject.toml (to add optional dependencies)
  • tests/adapters/ (to add new tests)

Key Concepts/Technologies

  • Microsoft SQL Server & T-SQL
  • Python
  • Pydantic
  • Database connectivity in Python (e.g., pyodbc)

Related Documentation

Suggested Approach

The most effective approach is to use the PostgresAdapter as a blueprint. The overall structure and many of the methods can be adapted. Key areas of focus will be the database connection logic and ensuring that all generated SQL queries are compatible with the T-SQL dialect. The documentation's suggestion to use an AI assistant could be very helpful for generating the initial boilerplate code.

Skills Needed

  • Python development
  • Machine Learning (XGBoost, scikit-learn)
  • LLM/GenAI integration (LangChain, OpenAI)
  • Data engineering
  • SQL and database knowledge
  • Vector databases (Qdrant)
  • Databricks/Snowflake experience
  • Frontend/UI (Streamlit)
  • Documentation writing
  • Testing (pytest)
  • Other:

Difficulty Level

  • Beginner - Good understanding of Python
  • Intermediate - Familiarity with data engineering concepts
  • Advanced - Deep knowledge of ML/GenAI or distributed systems

Time Estimate

  • Small (a few hours)
  • Medium (a few days)
  • Large (a week or more)

Getting Started

  1. Fork the repository.
  2. Set up your development environment (see CONTRIBUTING.md).
  3. Follow the Implementing a Connector guide.
  4. Use the PostgresAdapter implementation as a reference for your SQLServerAdapter.

Testing Requirements

  • Unit tests for the new SQLServerAdapter class.
  • Integration tests (if possible, with a mock or local SQL Server instance).
  • Manual testing with sample datasets.
  • Documentation examples.

Questions & Support

  • Ask questions in the comments below.
  • Join our Discord for real-time help.
  • Tag maintainers:

Additional Context

The pyodbc library is a common choice for connecting to SQL Server from Python. Its documentation may be a useful resource: pyodbc Wiki


We appreciate your interest in contributing to Intugle! 🙏

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions