semantic-ds-toolkit
Version:
Performance-first semantic layer for modern data stacks - Stable Column Anchors & intelligent inference
78 lines • 2.28 kB
TypeScript
import { SemanticValidationConfig } from './sql-generator';
export interface DbtModelConfig {
materialized: 'view' | 'table' | 'incremental' | 'ephemeral';
partition_by?: string;
cluster_by?: string[];
pre_hook?: string[];
post_hook?: string[];
tags?: string[];
meta?: Record<string, any>;
enabled?: boolean;
indexes?: Array<{
columns: string[];
unique?: boolean;
type?: string;
}>;
grants?: Array<{
privilege: string;
grantee: string;
}>;
}
export interface DbtTestConfig {
unique?: string[];
not_null?: string[];
accepted_values?: Array<{
column: string;
values: any[];
}>;
relationships?: Array<{
column: string;
to: string;
field: string;
}>;
custom_tests?: Array<{
name: string;
test: string;
}>;
}
export interface DbtSemanticModel {
modelName: string;
sql: string;
config: DbtModelConfig;
tests: DbtTestConfig;
documentation: {
description: string;
columns: Record<string, {
description: string;
tests?: string[];
meta?: Record<string, any>;
}>;
};
dependencies: string[];
}
export declare class DbtGenerator {
private templateEngine;
constructor();
generateSemanticValidationModel(config: SemanticValidationConfig, modelConfig?: Partial<DbtModelConfig>, testConfig?: Partial<DbtTestConfig>): DbtSemanticModel;
generateModelSQL(config: SemanticValidationConfig, dbtConfig: DbtModelConfig): string;
private generateValidationCases;
private adaptRuleForDbt;
private generateModelTests;
private generateDocumentation;
generateQuarantineModel(config: SemanticValidationConfig, parentModel: string): DbtSemanticModel;
generateDataQualityTests(modelName: string): Array<{
name: string;
test: string;
severity: 'error' | 'warn';
}>;
generateDbtProject(models: DbtSemanticModel[]): {
projectYml: string;
schemaYml: string;
sourcesYml: string;
};
private generateSchemaYml;
private generateTestsYml;
private generateSourcesYml;
private getDbtModelTemplate;
}
//# sourceMappingURL=dbt-generator.d.ts.map