datapilot-cli
Version:
Enterprise-grade streaming multi-format data analysis with comprehensive statistical insights and intelligent relationship detection - supports CSV, JSON, Excel, TSV, Parquet - memory-efficient, cross-platform
57 lines • 2.14 kB
TypeScript
/**
* Smart FK/PK Detection Algorithms
* Phase 1: Foundation Architecture - Relationship Detection Engine
*/
import { TableMeta, ForeignKeyCandidate, TableDependencyGraph, BusinessRule, TemporalJoin, IntegrityReport, JoinConfidence } from './types';
export declare class RelationshipDetector {
private confidenceThreshold;
private enableFuzzyMatching;
private enableSemanticAnalysis;
constructor(config?: {
confidenceThreshold?: number;
enableFuzzyMatching?: boolean;
enableSemanticAnalysis?: boolean;
});
/**
* Detect foreign key relationships across multiple tables
*/
inferForeignKeys(tables: TableMeta[]): Promise<ForeignKeyCandidate[]>;
/**
* Build comprehensive dependency graph showing table relationships
*/
buildDependencyGraph(tables: TableMeta[]): Promise<TableDependencyGraph>;
/**
* Infer business relationships from table structures and naming patterns
*/
inferBusinessRelationships(graph: TableDependencyGraph): Promise<BusinessRule[]>;
/**
* Detect temporal relationships for time-series joins
*/
detectTemporalRelationships(tables: TableMeta[]): Promise<TemporalJoin[]>;
/**
* Validate referential integrity across identified relationships
*/
validateIntegrity(foreignKeys: ForeignKeyCandidate[]): Promise<IntegrityReport>;
/**
* Calculate semantic similarity between column names
*/
semanticSimilarity(col1: string, col2: string): number;
/**
* Analyze value distribution similarity between columns
*/
distributionSimilarity(data1: any[], data2: any[]): JoinConfidence;
private detectForeignKeysBetweenTables;
private inferCardinality;
private calculateNodeLevels;
private detectCycles;
private calculateBusinessRuleConfidence;
private identifyTimeColumns;
private cleanColumnName;
private levenshteinDistance;
private calculateDistributionStats;
private compareRanges;
private comparePatterns;
private compareTypes;
private extractPatterns;
}
//# sourceMappingURL=relationship-detector.d.ts.map