@finos/legend-extension-dsl-data-quality
Version:
Legend extension for Data Quality
105 lines • 5.52 kB
TypeScript
/**
* Copyright (c) 2026-present, Goldman Sachs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import type { PureModel, ObserverContext, AbstractPropertyExpression, PrimitiveInstanceValue, CollectionInstanceValue, VariableExpression, ColSpecArrayInstance, ColSpecInstanceValue } from '@finos/legend-graph';
import type { LambdaBody } from './DataQualityLambdaParameterParser.js';
import { DATA_QUALITY_VALIDATION_LOGICAL_FUNCTIONS } from '../constants/DataQualityConstants.js';
export interface VariableDeclaration {
value: string;
type: string;
}
export interface BaseValidationParameters {
variableDeclaration?: VariableExpression;
}
export interface AssertionValidationParameters extends BaseValidationParameters {
columns: ColSpecArrayInstance;
otherParam?: DataQualityValidationFilterFunction | DataQualityValidationCustomHelperFunction;
}
export interface CustomHelperValidationParameters extends BaseValidationParameters {
column: ColSpecInstanceValue;
otherParams: Array<PrimitiveInstanceValue | CollectionInstanceValue>;
}
export interface FilterValidationParameters extends BaseValidationParameters {
lambda: {
body: DataQualityValidationFilterCondition | DataQualityValidationLogicalGroupFunction;
} & BaseValidationParameters;
}
export interface FilterConditionParameters {
property: AbstractPropertyExpression | DataQualityValidationPropertyGuarantee;
otherParams: (PrimitiveInstanceValue | CollectionInstanceValue)[];
}
export interface PropertyGuaranteeParameters {
property: AbstractPropertyExpression;
}
export interface LogicalGroupValidationParameters {
left: DataQualityValidationFilterCondition | DataQualityValidationLogicalGroupFunction;
right: DataQualityValidationFilterCondition | DataQualityValidationLogicalGroupFunction;
}
export declare abstract class DataQualityValidationFunction<T> {
protected type: string;
abstract name: string;
abstract parameters: T;
abstract accept<R>(visitor: DataQualityValidationFunctionVisitor<R>): R;
id: string;
createParameterFromLambda(lambdaBody: LambdaBody, graph: PureModel, observerContext: ObserverContext): void;
}
export interface DataQualityValidationFunctionVisitor<T> {
visitAssertion(func: DataQualityValidationAssertionFunction): T;
visitFilter(func: DataQualityValidationFilterFunction): T;
visitCustomHelper(func: DataQualityValidationCustomHelperFunction): T;
visitFilterCondition(func: DataQualityValidationFilterCondition): T;
visitLogicalGroup(func: DataQualityValidationLogicalGroupFunction): T;
visitPropertyGuarantee(func: DataQualityValidationPropertyGuarantee, context?: unknown): T;
}
export declare class DataQualityValidationFilterFunction extends DataQualityValidationFunction<FilterValidationParameters> {
readonly name = "filter";
parameters: FilterValidationParameters;
lambdaBodyVariableDeclaration: VariableDeclaration | undefined;
constructor(parameters: FilterValidationParameters);
accept<R>(visitor: DataQualityValidationFunctionVisitor<R>): R;
}
declare abstract class AbstractDataQualityValidationFilterCondition<T> extends DataQualityValidationFunction<T> {
name: string;
parameters: T;
constructor(name: string, parameters: T);
abstract accept<R>(visitor: DataQualityValidationFunctionVisitor<R>): R;
}
export declare class DataQualityValidationFilterCondition extends AbstractDataQualityValidationFilterCondition<FilterConditionParameters> {
accept<R>(visitor: DataQualityValidationFunctionVisitor<R>): R;
}
export declare class DataQualityValidationPropertyGuarantee extends AbstractDataQualityValidationFilterCondition<PropertyGuaranteeParameters> {
accept<R>(visitor: DataQualityValidationFunctionVisitor<R>, context?: unknown): R;
}
export declare class DataQualityValidationLogicalGroupFunction extends DataQualityValidationFunction<LogicalGroupValidationParameters> {
name: DATA_QUALITY_VALIDATION_LOGICAL_FUNCTIONS;
parameters: LogicalGroupValidationParameters;
constructor(name: DATA_QUALITY_VALIDATION_LOGICAL_FUNCTIONS, parameters: LogicalGroupValidationParameters);
changeName(): void;
accept<R>(visitor: DataQualityValidationFunctionVisitor<R>): R;
}
export declare class DataQualityValidationCustomHelperFunction extends DataQualityValidationFunction<CustomHelperValidationParameters> {
name: string;
parameters: CustomHelperValidationParameters;
constructor(name: string, parameters: CustomHelperValidationParameters);
accept<R>(visitor: DataQualityValidationFunctionVisitor<R>): R;
}
export declare class DataQualityValidationAssertionFunction extends DataQualityValidationFunction<AssertionValidationParameters> {
name: string;
parameters: AssertionValidationParameters;
constructor(name: string, parameters: AssertionValidationParameters);
accept<R>(visitor: DataQualityValidationFunctionVisitor<R>): R;
}
export {};
//# sourceMappingURL=DataQualityValidationFunction.d.ts.map