DataGuild Snowflake Connector - Enterprise-grade metadata ingestion
Project description
DataGuild Snowflake Connector
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.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
๐ License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
๐ Support
- Documentation: Full Documentation
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@dataguild.com
๐บ๏ธ 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
- Inspired by DataHub architecture and patterns
- Built on top of Snowflake Connector for Python
- Community feedback and contributions
DataGuild Snowflake Connector - Enterprise metadata management made simple.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dataguild_snowflake_connector-1.0.1.tar.gz.
File metadata
- Download URL: dataguild_snowflake_connector-1.0.1.tar.gz
- Upload date:
- Size: 496.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3ac086b50aa339dcf6d8b4fd05526901a75a2230b64b0abae6625b1f8a8b682
|
|
| MD5 |
99233442361d5e8157de3730f3fc7a01
|
|
| BLAKE2b-256 |
43f3154abcc8bf169a345854cb6307c4425180728bba8348e052f68942fa485b
|
File details
Details for the file dataguild_snowflake_connector-1.0.1-py3-none-any.whl.
File metadata
- Download URL: dataguild_snowflake_connector-1.0.1-py3-none-any.whl
- Upload date:
- Size: 536.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1fbfd8d655a1fc0d085f4098a7b781df95142cf3dc2095a79138990516a9f42
|
|
| MD5 |
a505fe24e40534e6fb26c5024ef8c7e1
|
|
| BLAKE2b-256 |
df1a441a6e9c0529ac9580d18b3fcb08a8ffe99ddafad6b0110adba84b5daa5f
|