plywood
Version:
A query planner and executor
85 lines • 4.38 kB
TypeScript
import * as Druid from 'druid.d.ts';
import { PlywoodRequester } from 'plywood-base-api';
import { Transform } from 'readable-stream';
import { Attributes, PlywoodRange } from '../datatypes';
import { ApplyExpression, ChainableExpression, Expression, FilterExpression, SortExpression, SplitExpression } from '../expressions';
import { ExtendableError } from '../helper/utils';
import { External, ExternalJS, ExternalValue, Inflater, IntrospectionDepth, QueryAndPostTransform, QuerySelection } from './baseExternal';
import { CustomDruidAggregations, CustomDruidTransforms } from './utils/druidTypes';
export declare class InvalidResultError extends ExtendableError {
result: any;
constructor(message: string, result: any);
}
export interface ParsedResplitAgg {
resplitAgg: ChainableExpression;
resplitApply: ApplyExpression;
resplitSplit: SplitExpression;
}
export interface GranularityInflater {
granularity: Druid.Granularity;
inflater: Inflater;
}
export interface DimensionInflater {
virtualColumn?: Druid.VirtualColumn;
dimension: Druid.DimensionSpec;
inflater?: Inflater;
}
export interface DimensionInflaterHaving extends DimensionInflater {
having?: Expression;
}
export interface DruidSplit {
queryType: string;
timestampLabel?: string;
virtualColumns?: Druid.VirtualColumn[];
granularity: Druid.Granularity | string;
dimension?: Druid.DimensionSpec;
dimensions?: Druid.DimensionSpec[];
leftoverHavingFilter?: Expression;
postTransform: Transform;
}
export declare class DruidExternal extends External {
static engine: string;
static type: string;
static TIME_ATTRIBUTE: string;
static SELECT_MAX_LIMIT: number;
static fromJS(parameters: ExternalJS, requester: PlywoodRequester<any>): DruidExternal;
static getSourceList(requester: PlywoodRequester<any>): Promise<string[]>;
static getVersion(requester: PlywoodRequester<any>): Promise<string>;
static isTimestampCompatibleSort(sort: SortExpression, label: string): boolean;
static timeBoundaryPostTransformFactory(applies?: ApplyExpression[]): Transform;
static generateMaker(aggregation: Druid.Aggregation): Expression;
static columnMetadataToRange(columnMetadata: Druid.ColumnMetadata): null | PlywoodRange;
static segmentMetadataPostProcess(timeAttribute: string, res: Druid.SegmentMetadataResults): Attributes;
static introspectAttributesWithSegmentMetadata(dataSource: Druid.DataSource, requester: PlywoodRequester<any>, timeAttribute: string, context: Record<string, any>, depth: IntrospectionDepth): Promise<Attributes>;
static movePagingIdentifiers(pagingIdentifiers: Druid.PagingIdentifiers, increment: number): Druid.PagingIdentifiers;
static parseResplitAgg(applyExpression: Expression): ParsedResplitAgg | null;
timeAttribute: string;
customAggregations: CustomDruidAggregations;
customTransforms: CustomDruidTransforms;
allowEternity: boolean;
allowSelectQueries: boolean;
exactResultsOnly: boolean;
querySelection: QuerySelection;
context: Record<string, any>;
constructor(parameters: ExternalValue);
valueOf(): ExternalValue;
toJS(): ExternalJS;
equals(other: DruidExternal | undefined): boolean;
canHandleFilter(filter: FilterExpression): boolean;
canHandleSort(sort: SortExpression): boolean;
getQuerySelection(): QuerySelection;
getDruidDataSource(): Druid.DataSource;
getTimeAttribute(): string | undefined;
splitExpressionToGranularityInflater(splitExpression: Expression, label: string): GranularityInflater | null;
makeOutputName(name: string): string;
topNCompatibleSort(): boolean;
expressionToDimensionInflater(expression: Expression, label: string): DimensionInflater;
expressionToDimensionInflaterHaving(expression: Expression, label: string, havingFilter: Expression): DimensionInflaterHaving;
splitToDruid(split: SplitExpression): DruidSplit;
isMinMaxTimeExpression(applyExpression: Expression): boolean;
getTimeBoundaryQueryAndPostTransform(): QueryAndPostTransform<Druid.Query>;
nestedGroupByIfNeeded(): QueryAndPostTransform<Druid.Query> | null;
getQueryAndPostTransform(): QueryAndPostTransform<Druid.Query>;
protected getIntrospectAttributes(depth: IntrospectionDepth): Promise<Attributes>;
}
//# sourceMappingURL=druidExternal.d.ts.map