Skip to main content

DataGuild Snowflake Connector - Enterprise-grade metadata ingestion

Project description

DataGuild Snowflake Connector

PyPI version Python 3.8+ License: Apache 2.0 Code style: black

Enterprise-grade Snowflake metadata ingestion with comprehensive lineage tracking, usage analytics, and data governance capabilities.

๐Ÿš€ Features

  • Comprehensive Metadata Extraction: Tables, views, schemas, columns, and relationships
  • Advanced Lineage Tracking: Table-to-table and column-level lineage from SQL queries
  • Usage Analytics: Query patterns, access patterns, and operational statistics
  • Data Governance: Tag management, data classification, and ownership tracking
  • Production Ready: Robust error handling, monitoring, and performance optimization
  • CLI Interface: Easy-to-use command-line tools for extraction and management
  • DataHub Compatible: Follows DataHub patterns for seamless integration

๐Ÿ“ฆ Installation

From PyPI (Recommended)

pip install dataguild-snowflake-connector

From Source

git clone https://github.com/your-org/dataguild-snowflake-connector.git
cd dataguild-snowflake-connector
pip install -e .

๐Ÿš€ Quick Start

Basic Usage

from dataguild.source.snowflake.main import SnowflakeV2Source, SnowflakeV2Config
from dataguild.api.common import PipelineContext

# Configure your Snowflake connection
config = SnowflakeV2Config(
    account_id="your-account.snowflakecomputing.com",
    username="your-username",
    password="your-password",
    warehouse="your-warehouse",
    database="your-database",
    schema="your-schema"  # Optional
)

# Create and run the source
ctx = PipelineContext(run_id="my_extraction")
source = SnowflakeV2Source(ctx, config)

# Extract metadata workunits
all_workunits = []
for workunit in source.get_workunits():
    all_workunits.append(workunit)
    print(f"Processed workunit: {workunit.id}")

print(f"Extracted {len(all_workunits)} workunits.")

CLI Usage

# Test connection
dataguild test-connection --config config.yml

# Extract metadata
dataguild extract --config config.yml --output metadata.json

# Generate sample configuration
dataguild init-config --output config.yml

๐Ÿ“‹ Configuration

Create a configuration file (config.yml):

# Snowflake Connection
account_id: "your-account.snowflakecomputing.com"
username: "your-username"
password: "your-password"
warehouse: "your-warehouse"
database: "your-database"
schema: "your-schema"  # Optional
role: "your-role"      # Optional

# Extraction Settings
include_usage_stats: true
include_lineage: true
include_tags: true
include_view_definitions: true
include_primary_keys: true
include_foreign_keys: true

# Performance Settings
max_workers: 4
connection_timeout: 300
query_timeout: 600

# Logging
log_level: "INFO"

๐Ÿ—๏ธ Architecture

The DataGuild Snowflake Connector follows a modular architecture inspired by DataHub:

dataguild_snowflake/
โ”œโ”€โ”€ src/dataguild/
โ”‚   โ”œโ”€โ”€ source/snowflake/
โ”‚   โ”‚   โ”œโ”€โ”€ main.py              # Main source class
โ”‚   โ”‚   โ”œโ”€โ”€ config.py            # Configuration management
โ”‚   โ”‚   โ”œโ”€โ”€ connection.py        # Snowflake connection handling
โ”‚   โ”‚   โ”œโ”€โ”€ schema_gen.py        # Schema metadata generation
โ”‚   โ”‚   โ”œโ”€โ”€ lineage.py           # Lineage extraction
โ”‚   โ”‚   โ”œโ”€โ”€ usage.py             # Usage analytics
โ”‚   โ”‚   โ”œโ”€โ”€ tag.py               # Tag management
โ”‚   โ”‚   โ””โ”€โ”€ ...                  # Additional modules
โ”‚   โ””โ”€โ”€ cli.py                   # Command-line interface
โ”œโ”€โ”€ tests/                       # Test suite
โ”œโ”€โ”€ examples/                    # Usage examples
โ””โ”€โ”€ docs/                        # Documentation

๐Ÿ”ง Advanced Usage

Custom Extraction Patterns

config = SnowflakeV2Config(
    # ... connection settings ...
    
    # Database filtering
    database_pattern={"allow": ["PROD_DB", "STAGING_DB"]},
    schema_pattern={"allow": ["PUBLIC", "ANALYTICS"]},
    
    # Table filtering
    table_pattern={"allow": ["FACT_%", "DIM_%"]},
    
    # Lineage settings
    include_column_lineage=True,
    include_view_lineage=True,
    
    # Usage analytics
    include_usage_stats=True,
    usage_lookback_days=30,
)

Programmatic Configuration

from dataguild.source.snowflake.config import SnowflakeV2Config

# Create config programmatically
config = SnowflakeV2Config(
    account_id="my-account.snowflakecomputing.com",
    username="my-user",
    password="my-password",
    warehouse="COMPUTE_WH",
    database="MY_DATABASE",
    include_usage_stats=True,
    include_lineage=True,
    max_workers=8
)

๐Ÿ“Š Extracted Metadata

The connector extracts comprehensive metadata including:

  • Database & Schema Information: Names, descriptions, creation dates
  • Table & View Metadata: Structure, types, comments, ownership
  • Column Details: Data types, constraints, descriptions, tags
  • Lineage Relationships: Table-to-table and column-level dependencies
  • Usage Statistics: Query patterns, access frequency, performance metrics
  • Data Governance: Tags, classifications, ownership, data quality metrics

๐Ÿงช Testing

Run the test suite:

# Unit tests
pytest tests/unit/

# Integration tests (requires Snowflake connection)
pytest tests/integration/

# All tests
pytest

๐Ÿ“ˆ Performance

The connector is optimized for performance:

  • Parallel Processing: Multi-threaded extraction for large datasets
  • Incremental Updates: Stateful ingestion for efficient updates
  • Query Optimization: Optimized SQL queries for metadata extraction
  • Memory Management: Efficient memory usage for large-scale extractions

๐Ÿ”’ Security

  • Credential Management: Secure handling of Snowflake credentials
  • Network Security: Encrypted connections to Snowflake
  • Data Privacy: No sensitive data stored in logs or outputs
  • Access Control: Role-based access following Snowflake permissions

๐Ÿค Contributing

We welcome contributions! Please see our Contributing Guide for details.

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. Submit a pull request

๐Ÿ“„ License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

๐Ÿ†˜ Support

๐Ÿ—บ๏ธ Roadmap

  • Support for additional Snowflake features (streams, tasks, etc.)
  • Enhanced lineage visualization
  • Real-time metadata updates
  • Integration with additional data platforms
  • Advanced data quality metrics

๐Ÿ™ Acknowledgments


DataGuild Snowflake Connector - Enterprise metadata management made simple.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dataguild_snowflake_connector-1.0.1.tar.gz (496.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dataguild_snowflake_connector-1.0.1-py3-none-any.whl (536.6 kB view details)

Uploaded Python 3

File details

Details for the file dataguild_snowflake_connector-1.0.1.tar.gz.

File metadata

File hashes

Hashes for dataguild_snowflake_connector-1.0.1.tar.gz
Algorithm Hash digest
SHA256 d3ac086b50aa339dcf6d8b4fd05526901a75a2230b64b0abae6625b1f8a8b682
MD5 99233442361d5e8157de3730f3fc7a01
BLAKE2b-256 43f3154abcc8bf169a345854cb6307c4425180728bba8348e052f68942fa485b

See more details on using hashes here.

File details

Details for the file dataguild_snowflake_connector-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for dataguild_snowflake_connector-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f1fbfd8d655a1fc0d085f4098a7b781df95142cf3dc2095a79138990516a9f42
MD5 a505fe24e40534e6fb26c5024ef8c7e1
BLAKE2b-256 df1a441a6e9c0529ac9580d18b3fcb08a8ffe99ddafad6b0110adba84b5daa5f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page