UNPKG

@finos/legend-data-cube

Version:
136 lines 12.4 kB
/** * 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