UNPKG

semantic-ds-toolkit

Version:

Performance-first semantic layer for modern data stacks - Stable Column Anchors & intelligent inference

99 lines 3.32 kB
import { StableColumnAnchor, ColumnData, ColumnFingerprint } from '../types/anchor.types'; import { DriftAlert } from './alert-generator'; export interface DriftDetectionConfig { ks_test_threshold: number; psi_threshold: number; pattern_similarity_threshold: number; uniqueness_threshold: number; scale_change_threshold: number; confidence_degradation_threshold: number; sample_size_limit: number; enable_performance_mode: boolean; } export interface DriftDetectionResult { anchor_id: string; column_name: string; drift_detected: boolean; drift_types: DriftType[]; severity: 'low' | 'medium' | 'high' | 'critical'; confidence_score: number; details: DriftDetails; alerts: DriftAlert[]; recommended_actions: string[]; performance_metrics: { detection_time_ms: number; samples_processed: number; optimization_applied?: boolean; compression_ratio?: number; }; } export interface DriftType { type: 'distribution' | 'format' | 'unit' | 'joinability' | 'confidence'; severity: 'low' | 'medium' | 'high' | 'critical'; metric_value: number; threshold: number; description: string; meta?: Record<string, any>; } export interface DriftDetails { distribution_drift?: { ks_statistic: number; ks_p_value: number; psi_score: number; distribution_change: string; }; format_drift?: { pattern_similarity: number; new_patterns: string[]; lost_patterns: string[]; sample_changes: string[]; }; unit_drift?: { scale_factor: number; magnitude_change: string; value_range_shift: { old_range: [number, number]; new_range: [number, number]; }; }; joinability_drift?: { uniqueness_change: number; duplicate_increase: number; key_integrity_score: number; }; confidence_drift?: { confidence_change: number; mapping_uncertainty_increase: number; semantic_alignment_degradation: number; }; } export declare class DriftDetector { private config; private statisticalTests; private patternDetector; private alertGenerator; constructor(config?: Partial<DriftDetectionConfig>); detectDrift(historicalAnchor: StableColumnAnchor, currentColumn: ColumnData, currentFingerprint: ColumnFingerprint): Promise<DriftDetectionResult>; private optimizeForPerformance; private detectDistributionDrift; private detectFormatDrift; private detectUnitDrift; private detectJoinabilityDrift; private detectConfidenceDrift; private calculateOverallSeverity; private calculateConfidenceScore; private generateRecommendations; private isNumericType; private getDistributionDetails; private getFormatDetails; private getUnitDetails; private getJoinabilityDetails; private getConfidenceDetails; detectDriftBatch(historicalAnchors: StableColumnAnchor[], currentColumns: ColumnData[], currentFingerprints: ColumnFingerprint[]): Promise<DriftDetectionResult[]>; getPerformanceMetrics(): { average_detection_time: number; total_detections: number; cache_hit_rate: number; }; } //# sourceMappingURL=drift-detector.d.ts.map