import { AdvancedSlicer, Cube, Dimension, ISlicer } from '@metad/ocap-core'; import { WithMemberType } from './calculation'; import { MDXHierarchyFilter, MDXProperty } from './filter'; import { EngineAxis, MDXDialect } from './types/index'; /** * dimensions: * `[A]` * * condition: * ```json * { * path: [B] * operator: 'TopCount', * value: 10, * members: [C] * other: true * } * ``` * * generate: * ```sql * WITH * SET [Top 10 Members] AS Generate([A], TopCount([A].CurrentMember*[B], 10, Measure)) * MEMBER [B].[Other] AS Aggregate(Except([B], [Top 10 Members])) * SELECT * Order({[Top 10 Members], [A]*{[B].[Other]}}, [B]) ON ROWS * ``` * * @param dimensions * @param condition * @returns */ export declare function generateTopCount(dimensions: Array, condition: AdvancedSlicer): EngineAxis; /** * Divide the query dimensions at runtime into * - A: Not within the AdvancedSlicer restricted dimensions; * - B: In AdvancedSlicer restricted dimensions * * @param dimensions * @param condition * @returns */ export declare function splitQueryDimensionsAB(dimensions: Array, condition: AdvancedSlicer): { A: MDXProperty[]; B: MDXProperty[]; }; /** * `Generate(A, TopCount(A.CurrentMember*B, 10, Measure))` */ export declare function generateTopCountStatement(condition: AdvancedSlicer, A: Array, B: Array): string; export declare function generateCrossJoinStatement(dimensions: Array): string; export declare function generateSlicersStatement(slicers: Array, cube: Cube, withMembers: Record, dialect?: MDXDialect): string; export declare function serializeSlicer(slicer: ISlicer): string; export declare function serializeDimension({ dimension, hierarchy, level, exclude, members, displayHierarchy }: Dimension): string;