semantic-ds-toolkit
Version:
Performance-first semantic layer for modern data stacks - Stable Column Anchors & intelligent inference
99 lines • 3.32 kB
TypeScript
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