@finos/legend-data-cube
Version:
136 lines • 12.4 kB
TypeScript
/**
* Copyright (c) 2020-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 V1_ValueSpecification, type V1_Lambda, type TDSExecutionResult, type V1_AppliedFunction, type V1_ExecuteInput } from '@finos/legend-graph';
import { DataCubeQueryAggregateOperation__Sum } from './aggregation/DataCubeQueryAggregateOperation__Sum.js';
import { DataCubeQueryAggregateOperation__Average } from './aggregation/DataCubeQueryAggregateOperation__Average.js';
import { DataCubeQueryAggregateOperation__Count } from './aggregation/DataCubeQueryAggregateOperation__Count.js';
import { DataCubeQueryAggregateOperation__Min } from './aggregation/DataCubeQueryAggregateOperation__Min.js';
import { DataCubeQueryAggregateOperation__Max } from './aggregation/DataCubeQueryAggregateOperation__Max.js';
import { DataCubeQueryAggregateOperation__UniqueValue } from './aggregation/DataCubeQueryAggregateOperation__UniqueValue.js';
import { DataCubeQueryAggregateOperation__First } from './aggregation/DataCubeQueryAggregateOperation__First.js';
import { DataCubeQueryAggregateOperation__Last } from './aggregation/DataCubeQueryAggregateOperation__Last.js';
import { DataCubeQueryAggregateOperation__VariancePopulation } from './aggregation/DataCubeQueryAggregateOperation__VariancePopulation.js';
import { DataCubeQueryAggregateOperation__VarianceSample } from './aggregation/DataCubeQueryAggregateOperation__VarianceSample.js';
import { DataCubeQueryAggregateOperation__StdDevPopulation } from './aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.js';
import { DataCubeQueryAggregateOperation__StdDevSample } from './aggregation/DataCubeQueryAggregateOperation__StdDevSample.js';
import { DataCubeQueryAggregateOperation__JoinStrings } from './aggregation/DataCubeQueryAggregateOperation__JoinStrings.js';
import { DataCubeQueryFilterOperation__Equal } from './filter/DataCubeQueryFilterOperation__Equal.js';
import { DataCubeQueryFilterOperation__LessThanOrEqual } from './filter/DataCubeQueryFilterOperation__LessThanOrEqual.js';
import { DataCubeQueryFilterOperation__LessThan } from './filter/DataCubeQueryFilterOperation__LessThan.js';
import { DataCubeQueryFilterOperation__GreaterThanOrEqual } from './filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.js';
import { DataCubeQueryFilterOperation__GreaterThan } from './filter/DataCubeQueryFilterOperation__GreaterThan.js';
import { DataCubeQueryFilterOperation__NotEqual } from './filter/DataCubeQueryFilterOperation__NotEqual.js';
import { DataCubeQueryFilterOperation__EqualColumn } from './filter/DataCubeQueryFilterOperation__EqualColumn.js';
import { DataCubeQueryFilterOperation__EqualCaseInsensitive } from './filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.js';
import { DataCubeQueryFilterOperation__NotEqualCaseInsensitive } from './filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.js';
import { DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn } from './filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.js';
import { DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn } from './filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.js';
import { DataCubeQueryFilterOperation__NotEqualColumn } from './filter/DataCubeQueryFilterOperation__NotEqualColumn.js';
import { DataCubeQueryFilterOperation__LessThanColumn } from './filter/DataCubeQueryFilterOperation__LessThanColumn.js';
import { DataCubeQueryFilterOperation__LessThanOrEqualColumn } from './filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.js';
import { DataCubeQueryFilterOperation__GreaterThanColumn } from './filter/DataCubeQueryFilterOperation__GreaterThanColumn.js';
import { DataCubeQueryFilterOperation__GreaterThanOrEqualColumn } from './filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.js';
import { DataCubeQueryFilterOperation__Contain } from './filter/DataCubeQueryFilterOperation__Contain.js';
import { DataCubeQueryFilterOperation__ContainCaseInsensitive } from './filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.js';
import { DataCubeQueryFilterOperation__NotContain } from './filter/DataCubeQueryFilterOperation__NotContain.js';
import { DataCubeQueryFilterOperation__StartWith } from './filter/DataCubeQueryFilterOperation__StartWith.js';
import { DataCubeQueryFilterOperation__StartWithCaseInsensitive } from './filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.js';
import { DataCubeQueryFilterOperation__NotStartWith } from './filter/DataCubeQueryFilterOperation__NotStartWith.js';
import { DataCubeQueryFilterOperation__EndWith } from './filter/DataCubeQueryFilterOperation__EndWith.js';
import { DataCubeQueryFilterOperation__EndWithCaseInsensitive } from './filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.js';
import { DataCubeQueryFilterOperation__NotEndWith } from './filter/DataCubeQueryFilterOperation__NotEndWith.js';
import { DataCubeQueryFilterOperation__IsNull } from './filter/DataCubeQueryFilterOperation__IsNull.js';
import { DataCubeQueryFilterOperation__IsNotNull } from './filter/DataCubeQueryFilterOperation__IsNotNull.js';
import { DataCubeSnapshot } from './DataCubeSnapshot.js';
import { type DataCubeColumn } from './model/DataCubeColumn.js';
import { type DataCubeSource } from './model/DataCubeSource.js';
import { type DocumentationEntry, type LogEvent, type PlainObject, type TimingsRecord, type StopWatch } from '@finos/legend-shared';
import type { CachedDataCubeSource } from './model/CachedDataCubeSource.js';
import { DataCubeSpecification } from './model/DataCubeSpecification.js';
export type CompletionItem = {
completion: string;
display: string;
};
export type DataCubeRelationType = {
columns: DataCubeColumn[];
};
export type DataCubeExecutionOptions = {
debug?: boolean | undefined;
clientVersion?: string | undefined;
};
export type DataCubeCacheInitializationOptions = {
debug?: boolean | undefined;
clientVersion?: string | undefined;
};
export type DataCubeExecutionResult = {
result: TDSExecutionResult;
executedQuery: string;
executedSQL?: string | undefined;
executionTime: number;
};
export declare class DataCubeExecutionError extends Error {
executeInput?: PlainObject<V1_ExecuteInput> | undefined;
queryCode?: string | undefined;
}
/**
* This is the base engine of DataCube, it provides capabilities that DataCube cannot itself
* handle, such as query execution, compilation, etc.
*
* Note that we want to make sure this class is stateless, since from the perspective of DataCube,
* the engine simply should not hold any state. This does not mean any implementations of this engine
* must be stateless as well, that's totally up to their authors.
*/
export declare abstract class DataCubeEngine {
readonly filterOperations: (DataCubeQueryFilterOperation__Equal | DataCubeQueryFilterOperation__LessThanOrEqual | DataCubeQueryFilterOperation__LessThan | DataCubeQueryFilterOperation__GreaterThanOrEqual | DataCubeQueryFilterOperation__GreaterThan | DataCubeQueryFilterOperation__NotEqual | DataCubeQueryFilterOperation__EqualColumn | DataCubeQueryFilterOperation__EqualCaseInsensitive | DataCubeQueryFilterOperation__NotEqualCaseInsensitive | DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn | DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn | DataCubeQueryFilterOperation__NotEqualColumn | DataCubeQueryFilterOperation__LessThanColumn | DataCubeQueryFilterOperation__LessThanOrEqualColumn | DataCubeQueryFilterOperation__GreaterThanColumn | DataCubeQueryFilterOperation__GreaterThanOrEqualColumn | DataCubeQueryFilterOperation__Contain | DataCubeQueryFilterOperation__ContainCaseInsensitive | DataCubeQueryFilterOperation__NotContain | DataCubeQueryFilterOperation__StartWith | DataCubeQueryFilterOperation__StartWithCaseInsensitive | DataCubeQueryFilterOperation__NotStartWith | DataCubeQueryFilterOperation__EndWith | DataCubeQueryFilterOperation__EndWithCaseInsensitive | DataCubeQueryFilterOperation__NotEndWith | DataCubeQueryFilterOperation__IsNull | DataCubeQueryFilterOperation__IsNotNull)[];
readonly aggregateOperations: (DataCubeQueryAggregateOperation__Sum | DataCubeQueryAggregateOperation__Average | DataCubeQueryAggregateOperation__Count | DataCubeQueryAggregateOperation__Min | DataCubeQueryAggregateOperation__Max | DataCubeQueryAggregateOperation__UniqueValue | DataCubeQueryAggregateOperation__First | DataCubeQueryAggregateOperation__Last | DataCubeQueryAggregateOperation__VariancePopulation | DataCubeQueryAggregateOperation__VarianceSample | DataCubeQueryAggregateOperation__StdDevPopulation | DataCubeQueryAggregateOperation__StdDevSample | DataCubeQueryAggregateOperation__JoinStrings)[];
getFilterOperation(value: string): import("./filter/DataCubeQueryFilterOperation.js").DataCubeQueryFilterOperation;
getAggregateOperation(value: string): import("./aggregation/DataCubeQueryAggregateOperation.js").DataCubeQueryAggregateOperation;
deserializeValueSpecification(json: PlainObject<V1_ValueSpecification>): V1_ValueSpecification;
serializeValueSpecification(protocol: V1_ValueSpecification): PlainObject<T>;
/**
* By default, for a function chain, Pure grammar composer will extract the first parameter of the first function
* and render it as the caller of that function rather than a parameter
* e.g. fx(fy(p1, p2), p3) will be rendered as p1->fy(p2)->fx(p3) instead of fy(p1, p2)-> fx(p3)
*
* We do a hack to get around this by setting a dummy value as the first parameter of the first function in the chain.
* Then remove this dummy value from the final code.
*/
getPartialQueryCode(snapshot: DataCubeSnapshot, pretty?: boolean | undefined): Promise<string>;
generateBaseSpecification(sourceData: PlainObject, source: DataCubeSource): Promise<DataCubeSpecification>;
abstract processSource(sourceData: PlainObject): Promise<DataCubeSource>;
abstract getDataFromSource(source?: DataCubeSource): PlainObject;
abstract finalizeTimingRecord(stopWatch: StopWatch, timings?: TimingsRecord): TimingsRecord | undefined;
abstract parseValueSpecification(code: string, returnSourceInformation?: boolean | undefined): Promise<V1_ValueSpecification>;
abstract getValueSpecificationCode(value: V1_ValueSpecification, pretty?: boolean | undefined): Promise<string>;
abstract getQueryTypeahead(code: string, baseQuery: V1_Lambda, context: DataCubeSource | PlainObject): Promise<CompletionItem[]>;
abstract getQueryRelationReturnType(query: V1_Lambda, source: DataCubeSource): Promise<DataCubeRelationType>;
abstract getQueryCodeRelationReturnType(code: string, baseQuery: V1_ValueSpecification, source: DataCubeSource): Promise<DataCubeRelationType>;
abstract executeQuery(query: V1_Lambda, source: DataCubeSource, options?: DataCubeExecutionOptions | undefined): Promise<DataCubeExecutionResult>;
abstract buildExecutionContext(source: DataCubeSource): V1_AppliedFunction | undefined;
initializeCache(source: DataCubeSource, options?: DataCubeCacheInitializationOptions | undefined): Promise<CachedDataCubeSource | undefined>;
disposeCache(source: CachedDataCubeSource): Promise<void>;
logDebug(message: string, ...data: unknown[]): void;
debugProcess(processName: string, ...data: [string, unknown][]): void;
logInfo(event: LogEvent, ...data: unknown[]): void;
logWarning(event: LogEvent, ...data: unknown[]): void;
logError(event: LogEvent, ...data: unknown[]): void;
logUnhandledError(error: Error): void;
logIllegalStateError(message: string, error?: Error): void;
getDocumentationEntry(key: string): DocumentationEntry | undefined;
openLink(url: string): void;
sendTelemetry(event: string, data: PlainObject): void;
}
//# sourceMappingURL=DataCubeEngine.d.ts.map