@finos/legend-application-repl 0.0.54 → 0.0.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/dataCube/editor/DataCubeEditor.d.ts.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditor.js +1 -2
- package/lib/components/dataCube/editor/DataCubeEditor.js.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditorCodePanel.d.ts.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditorCodePanel.js +3 -167
- package/lib/components/dataCube/editor/DataCubeEditorCodePanel.js.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.d.ts.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.js +18 -16
- package/lib/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.js.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditorHorizontalPivotsPanel.d.ts.map +1 -1
- package/lib/components/dataCube/editor/DataCubeEditorHorizontalPivotsPanel.js +3 -5
- package/lib/components/dataCube/editor/DataCubeEditorHorizontalPivotsPanel.js.map +1 -1
- package/lib/index.css +1 -1
- package/lib/package.json +1 -1
- package/lib/server/DataCubeQuery.d.ts +1 -0
- package/lib/server/DataCubeQuery.d.ts.map +1 -1
- package/lib/server/DataCubeQuery.js +5 -2
- package/lib/server/DataCubeQuery.js.map +1 -1
- package/lib/server/REPLServerClient.d.ts.map +1 -1
- package/lib/server/REPLServerClient.js +0 -1
- package/lib/server/REPLServerClient.js.map +1 -1
- package/lib/stores/dataCube/DataCubeEngine.d.ts +16 -2
- package/lib/stores/dataCube/DataCubeEngine.d.ts.map +1 -1
- package/lib/stores/dataCube/DataCubeEngine.js +35 -2
- package/lib/stores/dataCube/DataCubeEngine.js.map +1 -1
- package/lib/stores/dataCube/core/DataCubeConfiguration.d.ts +5 -1
- package/lib/stores/dataCube/core/DataCubeConfiguration.d.ts.map +1 -1
- package/lib/stores/dataCube/core/DataCubeConfiguration.js +9 -1
- package/lib/stores/dataCube/core/DataCubeConfiguration.js.map +1 -1
- package/lib/stores/dataCube/core/DataCubeConfigurationBuilder.d.ts.map +1 -1
- package/lib/stores/dataCube/core/DataCubeConfigurationBuilder.js +6 -1
- package/lib/stores/dataCube/core/DataCubeConfigurationBuilder.js.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQueryBuilder.d.ts +3 -2
- package/lib/stores/dataCube/core/DataCubeQueryBuilder.d.ts.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQueryBuilder.js +10 -15
- package/lib/stores/dataCube/core/DataCubeQueryBuilder.js.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQueryBuilderUtils.d.ts +7 -5
- package/lib/stores/dataCube/core/DataCubeQueryBuilderUtils.d.ts.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQueryBuilderUtils.js +61 -50
- package/lib/stores/dataCube/core/DataCubeQueryBuilderUtils.js.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQueryEngine.d.ts +11 -9
- package/lib/stores/dataCube/core/DataCubeQueryEngine.d.ts.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQueryEngine.js +11 -11
- package/lib/stores/dataCube/core/DataCubeQueryEngine.js.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQuerySnapshot.d.ts +2 -7
- package/lib/stores/dataCube/core/DataCubeQuerySnapshot.d.ts.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQuerySnapshot.js +7 -7
- package/lib/stores/dataCube/core/DataCubeQuerySnapshot.js.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilder.d.ts.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilder.js +36 -22
- package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilder.js.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilderUtils.d.ts +1 -2
- package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilderUtils.d.ts.map +1 -1
- package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilderUtils.js +9 -26
- package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilderUtils.js.map +1 -1
- package/lib/stores/dataCube/core/aggregation/{DataCubeQueryAggregationOperation.d.ts → DataCubeQueryAggregateOperation.d.ts} +7 -6
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation.d.ts.map +1 -0
- package/lib/stores/dataCube/core/aggregation/{DataCubeQueryAggregationOperation.js → DataCubeQueryAggregateOperation.js} +7 -2
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation.js.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Average.d.ts +27 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Average.d.ts.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Average.js +39 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Average.js.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Count.d.ts +27 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Count.d.ts.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Count.js +47 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Count.js.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__First.d.ts +27 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__First.d.ts.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__First.js +44 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__First.js.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.d.ts +27 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.d.ts.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.js +53 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.js.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Last.d.ts +27 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Last.d.ts.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Last.js +44 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Last.js.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Max.d.ts +27 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Max.d.ts.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Max.js +39 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Max.js.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Min.d.ts +27 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Min.d.ts.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Min.js +39 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Min.js.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.d.ts +27 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.d.ts.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.js +39 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.js.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.d.ts +27 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.d.ts.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.js +39 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.js.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Sum.d.ts +27 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Sum.d.ts.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Sum.js +39 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Sum.js.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.d.ts +27 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.d.ts.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.js +44 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.js.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.d.ts +27 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.d.ts.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.js +39 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.js.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.d.ts +27 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.d.ts.map +1 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.js +39 -0
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.js.map +1 -0
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation.d.ts +1 -0
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation.d.ts.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation.js +4 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Contain.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Contain.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWith.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWith.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Equal.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Equal.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualColumn.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThan.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThan.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNotNull.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNotNull.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNull.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNull.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThan.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThan.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanColumn.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotContain.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotContain.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEndWith.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEndWith.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqual.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqual.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotStartWith.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotStartWith.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWith.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWith.js.map +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.js +1 -1
- package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.js.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.d.ts +6 -6
- package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.d.ts.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.js +2 -2
- package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.js.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorColumnsPanelState.d.ts.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorColumnsPanelState.js +3 -3
- package/lib/stores/dataCube/editor/DataCubeEditorColumnsPanelState.js.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.d.ts +3 -3
- package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.d.ts.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.js +3 -3
- package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.js.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorHorizontalPivotsPanelState.d.ts +34 -0
- package/lib/stores/dataCube/editor/DataCubeEditorHorizontalPivotsPanelState.d.ts.map +1 -0
- package/lib/stores/dataCube/editor/DataCubeEditorHorizontalPivotsPanelState.js +57 -0
- package/lib/stores/dataCube/editor/DataCubeEditorHorizontalPivotsPanelState.js.map +1 -0
- package/lib/stores/dataCube/editor/{DataCubeMutableConfiguration.d.ts → DataCubeEditorMutableConfiguration.d.ts} +11 -14
- package/lib/stores/dataCube/editor/DataCubeEditorMutableConfiguration.d.ts.map +1 -0
- package/lib/stores/dataCube/editor/{DataCubeMutableConfiguration.js → DataCubeEditorMutableConfiguration.js} +25 -54
- package/lib/stores/dataCube/editor/DataCubeEditorMutableConfiguration.js.map +1 -0
- package/lib/stores/dataCube/editor/DataCubeEditorState.d.ts +5 -1
- package/lib/stores/dataCube/editor/DataCubeEditorState.d.ts.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorState.js +10 -3
- package/lib/stores/dataCube/editor/DataCubeEditorState.js.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorVerticalPivotsPanelState.d.ts.map +1 -1
- package/lib/stores/dataCube/editor/DataCubeEditorVerticalPivotsPanelState.js +0 -14
- package/lib/stores/dataCube/editor/DataCubeEditorVerticalPivotsPanelState.js.map +1 -1
- package/lib/stores/dataCube/extend/DataCubeColumnEditorState.d.ts.map +1 -1
- package/lib/stores/dataCube/extend/DataCubeColumnEditorState.js +1 -1
- package/lib/stores/dataCube/extend/DataCubeColumnEditorState.js.map +1 -1
- package/lib/stores/dataCube/extend/DataCubeExtendManagerState.d.ts +1 -1
- package/lib/stores/dataCube/extend/DataCubeExtendManagerState.d.ts.map +1 -1
- package/lib/stores/dataCube/extend/DataCubeExtendManagerState.js +3 -0
- package/lib/stores/dataCube/extend/DataCubeExtendManagerState.js.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridClientEngine.d.ts.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridClientEngine.js +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridClientEngine.js.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridConfigurationBuilder.d.ts.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridConfigurationBuilder.js +3 -4
- package/lib/stores/dataCube/grid/DataCubeGridConfigurationBuilder.js.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridControllerState.d.ts.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridControllerState.js +1 -3
- package/lib/stores/dataCube/grid/DataCubeGridControllerState.js.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.d.ts +2 -1
- package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.d.ts.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.js +5 -14
- package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.js.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.d.ts +1 -3
- package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.d.ts.map +1 -1
- package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.js +6 -19
- package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.js.map +1 -1
- package/package.json +3 -3
- package/src/components/dataCube/editor/DataCubeEditor.tsx +1 -2
- package/src/components/dataCube/editor/DataCubeEditorCodePanel.tsx +2 -176
- package/src/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.tsx +72 -65
- package/src/components/dataCube/editor/DataCubeEditorHorizontalPivotsPanel.tsx +5 -7
- package/src/server/DataCubeQuery.ts +5 -1
- package/src/server/REPLEngine.ts +1 -1
- package/src/server/REPLServerClient.ts +0 -1
- package/src/stores/dataCube/DataCubeEngine.ts +38 -7
- package/src/stores/dataCube/core/DataCubeConfiguration.ts +11 -1
- package/src/stores/dataCube/core/DataCubeConfigurationBuilder.ts +6 -0
- package/src/stores/dataCube/core/DataCubeQueryBuilder.ts +21 -13
- package/src/stores/dataCube/core/DataCubeQueryBuilderUtils.ts +87 -77
- package/src/stores/dataCube/core/DataCubeQueryEngine.ts +12 -13
- package/src/stores/dataCube/core/DataCubeQuerySnapshot.ts +16 -12
- package/src/stores/dataCube/core/DataCubeQuerySnapshotBuilder.ts +35 -24
- package/src/stores/dataCube/core/DataCubeQuerySnapshotBuilderUtils.ts +20 -34
- package/src/stores/dataCube/core/aggregation/{DataCubeQueryAggregationOperation.ts → DataCubeQueryAggregateOperation.ts} +19 -12
- package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Average.tsx +52 -0
- package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Count.tsx +61 -0
- package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__First.tsx +57 -0
- package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.tsx +81 -0
- package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Last.tsx +57 -0
- package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Max.tsx +52 -0
- package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Min.tsx +52 -0
- package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.tsx +55 -0
- package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.tsx +52 -0
- package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Sum.tsx +52 -0
- package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.tsx +57 -0
- package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.tsx +52 -0
- package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.tsx +52 -0
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation.ts +15 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Contain.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWith.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Equal.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualColumn.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThan.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNotNull.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNull.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThan.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanColumn.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotContain.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEndWith.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqual.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotStartWith.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWith.tsx +1 -1
- package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.tsx +1 -1
- package/src/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.ts +7 -5
- package/src/stores/dataCube/editor/DataCubeEditorColumnsPanelState.ts +8 -5
- package/src/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.ts +4 -4
- package/src/stores/dataCube/editor/DataCubeEditorHorizontalPivotsPanelState.ts +99 -0
- package/src/stores/dataCube/editor/{DataCubeMutableConfiguration.ts → DataCubeEditorMutableConfiguration.ts} +41 -60
- package/src/stores/dataCube/editor/DataCubeEditorState.tsx +11 -2
- package/src/stores/dataCube/editor/DataCubeEditorVerticalPivotsPanelState.ts +0 -21
- package/src/stores/dataCube/extend/DataCubeColumnEditorState.tsx +1 -0
- package/src/stores/dataCube/extend/DataCubeExtendManagerState.tsx +3 -1
- package/src/stores/dataCube/grid/DataCubeGridClientEngine.ts +1 -0
- package/src/stores/dataCube/grid/DataCubeGridConfigurationBuilder.tsx +3 -4
- package/src/stores/dataCube/grid/DataCubeGridControllerState.ts +1 -12
- package/src/stores/dataCube/grid/DataCubeGridQueryBuilder.ts +10 -17
- package/src/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.ts +6 -41
- package/tsconfig.json +16 -2
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregationOperation.d.ts.map +0 -1
- package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregationOperation.js.map +0 -1
- package/lib/stores/dataCube/editor/DataCubeMutableConfiguration.d.ts.map +0 -1
- package/lib/stores/dataCube/editor/DataCubeMutableConfiguration.js.map +0 -1
|
@@ -33,6 +33,7 @@ import {
|
|
|
33
33
|
} from './DataCubeQuerySnapshot.js';
|
|
34
34
|
import {
|
|
35
35
|
guaranteeNonNullable,
|
|
36
|
+
isNonNullable,
|
|
36
37
|
UnsupportedOperationError,
|
|
37
38
|
} from '@finos/legend-shared';
|
|
38
39
|
import {
|
|
@@ -53,15 +54,16 @@ import {
|
|
|
53
54
|
_filter,
|
|
54
55
|
_function,
|
|
55
56
|
_groupByAggCols,
|
|
56
|
-
_groupByExtend,
|
|
57
57
|
_lambda,
|
|
58
58
|
_primitiveValue,
|
|
59
59
|
_var,
|
|
60
60
|
} from './DataCubeQueryBuilderUtils.js';
|
|
61
|
+
import type { DataCubeQueryAggregateOperation } from './aggregation/DataCubeQueryAggregateOperation.js';
|
|
61
62
|
|
|
62
63
|
export function buildExecutableQuery(
|
|
63
64
|
snapshot: DataCubeQuerySnapshot,
|
|
64
65
|
filterOperations: DataCubeQueryFilterOperation[],
|
|
66
|
+
aggregateOperations: DataCubeQueryAggregateOperation[],
|
|
65
67
|
options?: {
|
|
66
68
|
postProcessor?: (
|
|
67
69
|
snapshot: DataCubeQuerySnapshot,
|
|
@@ -69,6 +71,7 @@ export function buildExecutableQuery(
|
|
|
69
71
|
funcMap: DataCubeQueryFunctionMap,
|
|
70
72
|
configuration: DataCubeConfiguration,
|
|
71
73
|
filterOperations: DataCubeQueryFilterOperation[],
|
|
74
|
+
aggregateOperations: DataCubeQueryAggregateOperation[],
|
|
72
75
|
) => void;
|
|
73
76
|
pagination?:
|
|
74
77
|
| {
|
|
@@ -144,22 +147,20 @@ export function buildExecutableQuery(
|
|
|
144
147
|
'groupBy',
|
|
145
148
|
_function(_name(DataCubeFunction.GROUP_BY), [
|
|
146
149
|
_cols(groupBy.columns.map((col) => _colSpec(col.name))),
|
|
147
|
-
_cols(
|
|
150
|
+
_cols(
|
|
151
|
+
_groupByAggCols(
|
|
152
|
+
groupBy.columns,
|
|
153
|
+
snapshot,
|
|
154
|
+
configuration,
|
|
155
|
+
aggregateOperations,
|
|
156
|
+
),
|
|
157
|
+
),
|
|
148
158
|
]),
|
|
149
159
|
);
|
|
150
|
-
|
|
151
|
-
// extend columns to maintain the same set of columns prior to groupBy()
|
|
152
|
-
const groupByExtend = _groupByExtend(snapshot.stageCols('aggregation'), [
|
|
153
|
-
...groupBy.columns,
|
|
154
|
-
...groupBy.aggColumns,
|
|
155
|
-
]);
|
|
156
|
-
if (groupByExtend) {
|
|
157
|
-
_process('groupByExtend', groupByExtend);
|
|
158
|
-
}
|
|
159
160
|
}
|
|
160
161
|
|
|
161
162
|
// --------------------------------- PIVOT ---------------------------------
|
|
162
|
-
|
|
163
|
+
/** TODO: @datacube pivot - implement this and CAST */
|
|
163
164
|
|
|
164
165
|
// --------------------------------- GROUP-LEVEL EXTEND ---------------------------------
|
|
165
166
|
|
|
@@ -229,7 +230,13 @@ export function buildExecutableQuery(
|
|
|
229
230
|
// --------------------------------- FROM ---------------------------------
|
|
230
231
|
|
|
231
232
|
sequence.push(
|
|
232
|
-
_function(
|
|
233
|
+
_function(
|
|
234
|
+
_name(DataCubeFunction.FROM),
|
|
235
|
+
[
|
|
236
|
+
data.mapping ? _elementPtr(data.mapping) : undefined,
|
|
237
|
+
_elementPtr(data.runtime),
|
|
238
|
+
].filter(isNonNullable),
|
|
239
|
+
),
|
|
233
240
|
);
|
|
234
241
|
|
|
235
242
|
// --------------------------------- FINALIZE ---------------------------------
|
|
@@ -240,6 +247,7 @@ export function buildExecutableQuery(
|
|
|
240
247
|
funcMap,
|
|
241
248
|
configuration,
|
|
242
249
|
filterOperations,
|
|
250
|
+
aggregateOperations,
|
|
243
251
|
);
|
|
244
252
|
|
|
245
253
|
if (!sequence.length) {
|
|
@@ -44,15 +44,15 @@ import {
|
|
|
44
44
|
type V1_PrimitiveValueSpecification,
|
|
45
45
|
V1_Variable,
|
|
46
46
|
V1_deserializeValueSpecification,
|
|
47
|
-
extractElementNameFromPath
|
|
47
|
+
extractElementNameFromPath,
|
|
48
48
|
type V1_ValueSpecification,
|
|
49
|
+
extractPackagePathFromPath,
|
|
49
50
|
} from '@finos/legend-graph';
|
|
50
51
|
import {
|
|
51
52
|
type DataCubeQuerySnapshotFilterCondition,
|
|
52
53
|
type DataCubeQuerySnapshotFilter,
|
|
53
|
-
_findCol,
|
|
54
54
|
type DataCubeQuerySnapshotColumn,
|
|
55
|
-
type
|
|
55
|
+
type DataCubeQuerySnapshot,
|
|
56
56
|
} from './DataCubeQuerySnapshot.js';
|
|
57
57
|
import {
|
|
58
58
|
guaranteeNonNullable,
|
|
@@ -68,11 +68,12 @@ import {
|
|
|
68
68
|
DEFAULT_LAMBDA_VARIABLE_NAME,
|
|
69
69
|
INTERNAL__FILLER_COUNT_AGG_COLUMN_NAME,
|
|
70
70
|
DataCubeQueryFilterGroupOperator,
|
|
71
|
-
DataCubeAggregateOperator,
|
|
72
71
|
type DataCubeOperationValue,
|
|
73
72
|
DataCubeOperationAdvancedValueType,
|
|
74
73
|
} from './DataCubeQueryEngine.js';
|
|
75
74
|
import type { DataCubeQueryFilterOperation } from './filter/DataCubeQueryFilterOperation.js';
|
|
75
|
+
import type { DataCubeQueryAggregateOperation } from './aggregation/DataCubeQueryAggregateOperation.js';
|
|
76
|
+
import type { DataCubeConfiguration } from './DataCubeConfiguration.js';
|
|
76
77
|
|
|
77
78
|
// --------------------------------- UTILITIES ---------------------------------
|
|
78
79
|
|
|
@@ -103,7 +104,52 @@ export function _lambda(
|
|
|
103
104
|
return lambda;
|
|
104
105
|
}
|
|
105
106
|
|
|
106
|
-
|
|
107
|
+
// NOTE: the list of auto-import are kept in `m3.pure` file in `finos/legend-pure`,
|
|
108
|
+
// this includes a more extensive list of packges which contain native functions, classes, etc.
|
|
109
|
+
// See https://github.com/finos/legend-pure/blob/master/legend-pure-core/legend-pure-m3-core/src/main/resources/platform/pure/grammar/m3.pure
|
|
110
|
+
const PURE_AUTO_IMPORT_PACKAGE_PATHS = [
|
|
111
|
+
'meta::pure::metamodel',
|
|
112
|
+
'meta::pure::metamodel::type',
|
|
113
|
+
'meta::pure::metamodel::type::generics',
|
|
114
|
+
'meta::pure::metamodel::relationship',
|
|
115
|
+
'meta::pure::metamodel::valuespecification',
|
|
116
|
+
'meta::pure::metamodel::multiplicity',
|
|
117
|
+
'meta::pure::metamodel::function',
|
|
118
|
+
'meta::pure::metamodel::function::property',
|
|
119
|
+
'meta::pure::metamodel::extension',
|
|
120
|
+
'meta::pure::metamodel::import',
|
|
121
|
+
'meta::pure::functions::date',
|
|
122
|
+
'meta::pure::functions::string',
|
|
123
|
+
'meta::pure::functions::collection',
|
|
124
|
+
'meta::pure::functions::meta',
|
|
125
|
+
'meta::pure::functions::constraints',
|
|
126
|
+
'meta::pure::functions::lang',
|
|
127
|
+
'meta::pure::functions::boolean',
|
|
128
|
+
'meta::pure::functions::tools',
|
|
129
|
+
'meta::pure::functions::relation',
|
|
130
|
+
'meta::pure::functions::io',
|
|
131
|
+
'meta::pure::functions::math',
|
|
132
|
+
'meta::pure::functions::asserts',
|
|
133
|
+
'meta::pure::functions::test',
|
|
134
|
+
'meta::pure::functions::multiplicity',
|
|
135
|
+
'meta::pure::router',
|
|
136
|
+
'meta::pure::service',
|
|
137
|
+
'meta::pure::tds',
|
|
138
|
+
'meta::pure::tools',
|
|
139
|
+
'meta::pure::profiles',
|
|
140
|
+
];
|
|
141
|
+
|
|
142
|
+
export function _functionName(funcNameOrPath: string) {
|
|
143
|
+
const funcPakagePath = extractPackagePathFromPath(funcNameOrPath);
|
|
144
|
+
if (
|
|
145
|
+
funcPakagePath &&
|
|
146
|
+
PURE_AUTO_IMPORT_PACKAGE_PATHS.includes(funcPakagePath)
|
|
147
|
+
) {
|
|
148
|
+
return extractElementNameFromPath(funcNameOrPath);
|
|
149
|
+
}
|
|
150
|
+
return funcNameOrPath;
|
|
151
|
+
}
|
|
152
|
+
|
|
107
153
|
export function _function(
|
|
108
154
|
functionName: string,
|
|
109
155
|
parameters: V1_ValueSpecification[],
|
|
@@ -209,48 +255,6 @@ export function _value(
|
|
|
209
255
|
}
|
|
210
256
|
}
|
|
211
257
|
|
|
212
|
-
function _aggFunctionName(operation: string) {
|
|
213
|
-
switch (operation) {
|
|
214
|
-
case DataCubeAggregateOperator.SUM:
|
|
215
|
-
return DataCubeFunction.SUM;
|
|
216
|
-
case DataCubeAggregateOperator.AVERAGE:
|
|
217
|
-
return DataCubeFunction.AVERAGE;
|
|
218
|
-
case DataCubeAggregateOperator.COUNT:
|
|
219
|
-
return DataCubeFunction.COUNT;
|
|
220
|
-
case DataCubeAggregateOperator.MIN:
|
|
221
|
-
return DataCubeFunction.MIN;
|
|
222
|
-
case DataCubeAggregateOperator.MAX:
|
|
223
|
-
return DataCubeFunction.MAX;
|
|
224
|
-
case DataCubeAggregateOperator.FIRST:
|
|
225
|
-
return DataCubeFunction.FIRST;
|
|
226
|
-
case DataCubeAggregateOperator.LAST:
|
|
227
|
-
return DataCubeFunction.LAST;
|
|
228
|
-
case DataCubeAggregateOperator.VAR_POP:
|
|
229
|
-
return DataCubeFunction.VAR_POP;
|
|
230
|
-
case DataCubeAggregateOperator.VAR_SAMP:
|
|
231
|
-
return DataCubeFunction.VAR_SAMP;
|
|
232
|
-
case DataCubeAggregateOperator.STDDEV_POP:
|
|
233
|
-
return DataCubeFunction.STDDEV_POP;
|
|
234
|
-
case DataCubeAggregateOperator.STDDEV_SAMP:
|
|
235
|
-
return DataCubeFunction.STDDEV_SAMP;
|
|
236
|
-
default:
|
|
237
|
-
throw new UnsupportedOperationError(
|
|
238
|
-
`Unsupported aggregate operation '${operation}'`,
|
|
239
|
-
);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
function _agg(
|
|
244
|
-
agg: DataCubeQuerySnapshotAggregateColumn,
|
|
245
|
-
variable?: V1_Variable | undefined,
|
|
246
|
-
) {
|
|
247
|
-
const parameters = agg.parameters.map((param) => _value(param));
|
|
248
|
-
return _function(_aggFunctionName(agg.operation), [
|
|
249
|
-
variable ?? _var(),
|
|
250
|
-
...parameters,
|
|
251
|
-
]);
|
|
252
|
-
}
|
|
253
|
-
|
|
254
258
|
export function _not(fn: V1_AppliedFunction) {
|
|
255
259
|
return _function(DataCubeFunction.NOT, [fn]);
|
|
256
260
|
}
|
|
@@ -274,18 +278,45 @@ export function _cols(colSpecs: V1_ColSpec[]) {
|
|
|
274
278
|
return _classInstance(V1_ClassInstanceType.COL_SPEC_ARRAY, colSpecArray);
|
|
275
279
|
}
|
|
276
280
|
|
|
281
|
+
export function _aggCol_basic(
|
|
282
|
+
column: DataCubeQuerySnapshotColumn,
|
|
283
|
+
func: string,
|
|
284
|
+
) {
|
|
285
|
+
const variable = _var();
|
|
286
|
+
return _colSpec(
|
|
287
|
+
column.name,
|
|
288
|
+
_lambda([variable], [_property(column.name, variable)]),
|
|
289
|
+
_lambda([variable], [_function(_functionName(func), [variable])]),
|
|
290
|
+
);
|
|
291
|
+
}
|
|
292
|
+
|
|
277
293
|
export function _groupByAggCols(
|
|
278
|
-
|
|
294
|
+
groupByColumns: DataCubeQuerySnapshotColumn[],
|
|
295
|
+
snapshot: DataCubeQuerySnapshot,
|
|
296
|
+
configuration: DataCubeConfiguration,
|
|
297
|
+
aggregateOperations: DataCubeQueryAggregateOperation[],
|
|
279
298
|
) {
|
|
280
299
|
const variable = _var();
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
300
|
+
const aggColumns = configuration.columns.filter(
|
|
301
|
+
(column) =>
|
|
302
|
+
!groupByColumns.find((col) => col.name === column.name) &&
|
|
303
|
+
!snapshot.data.groupExtendedColumns.find(
|
|
304
|
+
(col) => col.name === column.name,
|
|
305
|
+
),
|
|
306
|
+
);
|
|
307
|
+
return aggColumns.length
|
|
308
|
+
? aggColumns.map((agg) => {
|
|
309
|
+
const operation = aggregateOperations.find(
|
|
310
|
+
(op) => op.operator === agg.aggregateOperator,
|
|
311
|
+
);
|
|
312
|
+
const aggCol = operation?.buildAggregateColumn(agg);
|
|
313
|
+
if (!aggCol) {
|
|
314
|
+
throw new UnsupportedOperationError(
|
|
315
|
+
`Unsupported aggregate operation '${agg.aggregateOperator}'`,
|
|
316
|
+
);
|
|
317
|
+
}
|
|
318
|
+
return aggCol;
|
|
319
|
+
})
|
|
289
320
|
: // if no aggregates are specified, add a dummy count() aggregate to satisfy compiler
|
|
290
321
|
[
|
|
291
322
|
_colSpec(
|
|
@@ -331,24 +362,3 @@ export function _filter(
|
|
|
331
362
|
return filterCondition.not ? _not(condition) : condition;
|
|
332
363
|
}
|
|
333
364
|
}
|
|
334
|
-
|
|
335
|
-
export function _groupByExtend(
|
|
336
|
-
columns: DataCubeQuerySnapshotColumn[],
|
|
337
|
-
columnsUsedInGroupBy: DataCubeQuerySnapshotColumn[],
|
|
338
|
-
) {
|
|
339
|
-
const missingCols = columns.filter(
|
|
340
|
-
(col) => !_findCol(columnsUsedInGroupBy, col.name),
|
|
341
|
-
);
|
|
342
|
-
return missingCols.length
|
|
343
|
-
? _function(_functionName(DataCubeFunction.EXTEND), [
|
|
344
|
-
_cols(
|
|
345
|
-
missingCols.map((col) =>
|
|
346
|
-
_colSpec(
|
|
347
|
-
col.name,
|
|
348
|
-
_lambda([_var()], [_primitiveValue(PRIMITIVE_TYPE.STRING, '')]),
|
|
349
|
-
),
|
|
350
|
-
),
|
|
351
|
-
),
|
|
352
|
-
])
|
|
353
|
-
: undefined;
|
|
354
|
-
}
|
|
@@ -64,11 +64,11 @@ export enum DataCubeFunction {
|
|
|
64
64
|
MAX = 'meta::pure::functions::collection::max',
|
|
65
65
|
MIN = 'meta::pure::functions::collection::min',
|
|
66
66
|
SUM = 'meta::pure::functions::math::sum',
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
STANDARD_DEVIATION_POPULATION = 'meta::pure::functions::math::stdDevPopulation',
|
|
68
|
+
STANDARD_DEVIATION_SAMPLE = 'meta::pure::functions::math::stdDevSample',
|
|
69
|
+
UNIQUE_VALUE_ONLY = 'meta::pure::functions::collection::uniqueValueOnly',
|
|
70
|
+
VARIANCE_POPULATION = 'meta::pure::functions::math::variancePopulation',
|
|
71
|
+
VARIANCE_SAMPLE = 'meta::pure::functions::math::varianceSample',
|
|
72
72
|
// PERCENTILE = 'meta::pure::functions::math::percentile',
|
|
73
73
|
}
|
|
74
74
|
|
|
@@ -86,8 +86,7 @@ export type DataCubeQueryFunctionMap = {
|
|
|
86
86
|
leafExtend?: V1_AppliedFunction | undefined;
|
|
87
87
|
filter?: V1_AppliedFunction | undefined;
|
|
88
88
|
groupBy?: V1_AppliedFunction | undefined;
|
|
89
|
-
|
|
90
|
-
pivotExtend?: V1_AppliedFunction | undefined; // used to populate columns erased by pivot()
|
|
89
|
+
pivotExtend?: V1_AppliedFunction | undefined; // used to populate columns to be erased by pivot()
|
|
91
90
|
pivot?: V1_AppliedFunction | undefined;
|
|
92
91
|
pivotCast?: V1_AppliedFunction | undefined; // used to set the relation type post pivot() to make compilation works properly
|
|
93
92
|
groupExtend?: V1_AppliedFunction | undefined;
|
|
@@ -172,14 +171,14 @@ export enum DataCubeAggregateOperator {
|
|
|
172
171
|
COUNT = 'count',
|
|
173
172
|
MIN = 'min',
|
|
174
173
|
MAX = 'max',
|
|
175
|
-
|
|
174
|
+
UNIQUE = 'uniq',
|
|
176
175
|
FIRST = 'first',
|
|
177
176
|
LAST = 'last',
|
|
178
177
|
// MEDIAN = 'median',
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
178
|
+
VARIANCE_POPULATION = 'var',
|
|
179
|
+
VARIANCE_SAMPLE = 'var_sample',
|
|
180
|
+
STANDARD_DEVIATION_POPULATION = 'std',
|
|
181
|
+
STANDARD_DEVIATION_SAMPLE = 'std_sample',
|
|
183
182
|
// STANDARD_ERROR = 'stderr',
|
|
184
183
|
// NULL = 'null',
|
|
185
184
|
// ssq
|
|
@@ -190,7 +189,7 @@ export enum DataCubeAggregateOperator {
|
|
|
190
189
|
// maxmagnitude
|
|
191
190
|
// commonprefix
|
|
192
191
|
// commonprefixunstrict
|
|
193
|
-
|
|
192
|
+
JOIN_STRINGS = 'strjoin',
|
|
194
193
|
// strjoinuniq
|
|
195
194
|
// splitjoin
|
|
196
195
|
// daterange
|
|
@@ -18,6 +18,7 @@ import type { V1_Lambda, V1_ValueSpecification } from '@finos/legend-graph';
|
|
|
18
18
|
import type { DataCubeConfiguration } from './DataCubeConfiguration.js';
|
|
19
19
|
import {
|
|
20
20
|
IllegalStateError,
|
|
21
|
+
UnsupportedOperationError,
|
|
21
22
|
guaranteeNonNullable,
|
|
22
23
|
hashObject,
|
|
23
24
|
pruneObject,
|
|
@@ -62,26 +63,19 @@ export type DataCubeQuerySnapshotSortColumn = DataCubeQuerySnapshotColumn & {
|
|
|
62
63
|
operation: string;
|
|
63
64
|
};
|
|
64
65
|
|
|
65
|
-
export type DataCubeQuerySnapshotAggregateColumn =
|
|
66
|
-
DataCubeQuerySnapshotColumn & {
|
|
67
|
-
operation: string;
|
|
68
|
-
parameters: DataCubeOperationValue[];
|
|
69
|
-
};
|
|
70
|
-
|
|
71
66
|
export type DataCubeQuerySnapshotGroupBy = {
|
|
72
67
|
columns: DataCubeQuerySnapshotColumn[];
|
|
73
|
-
aggColumns: DataCubeQuerySnapshotAggregateColumn[];
|
|
74
68
|
};
|
|
75
69
|
|
|
76
70
|
export type DataCubeQuerySnapshotPivot = {
|
|
77
71
|
columns: DataCubeQuerySnapshotColumn[];
|
|
78
|
-
aggColumns: DataCubeQuerySnapshotAggregateColumn[];
|
|
79
72
|
castColumns: DataCubeQuerySnapshotColumn[];
|
|
80
73
|
};
|
|
81
74
|
|
|
82
75
|
export type DataCubeQuerySnapshotData = {
|
|
83
76
|
name: string;
|
|
84
77
|
runtime: string;
|
|
78
|
+
mapping: string | undefined;
|
|
85
79
|
sourceQuery: PlainObject<V1_ValueSpecification>;
|
|
86
80
|
configuration: PlainObject<DataCubeConfiguration>;
|
|
87
81
|
sourceColumns: DataCubeQuerySnapshotColumn[];
|
|
@@ -114,12 +108,14 @@ export class DataCubeQuerySnapshot {
|
|
|
114
108
|
private constructor(
|
|
115
109
|
name: string,
|
|
116
110
|
runtime: string,
|
|
111
|
+
mapping: string | undefined,
|
|
117
112
|
sourceQuery: PlainObject<V1_ValueSpecification>,
|
|
118
113
|
configuration: PlainObject<DataCubeConfiguration>,
|
|
119
114
|
) {
|
|
120
115
|
this.data = {
|
|
121
116
|
name,
|
|
122
117
|
runtime,
|
|
118
|
+
mapping,
|
|
123
119
|
sourceQuery,
|
|
124
120
|
configuration,
|
|
125
121
|
sourceColumns: [],
|
|
@@ -137,14 +133,21 @@ export class DataCubeQuerySnapshot {
|
|
|
137
133
|
static create(
|
|
138
134
|
name: string,
|
|
139
135
|
runtime: string,
|
|
136
|
+
mapping: string | undefined,
|
|
140
137
|
sourceQuery: PlainObject<V1_ValueSpecification>,
|
|
141
138
|
configuration: PlainObject<DataCubeConfiguration>,
|
|
142
139
|
) {
|
|
143
|
-
return new DataCubeQuerySnapshot(
|
|
140
|
+
return new DataCubeQuerySnapshot(
|
|
141
|
+
name,
|
|
142
|
+
runtime,
|
|
143
|
+
mapping,
|
|
144
|
+
sourceQuery,
|
|
145
|
+
configuration,
|
|
146
|
+
);
|
|
144
147
|
}
|
|
145
148
|
|
|
146
149
|
clone() {
|
|
147
|
-
const clone = new DataCubeQuerySnapshot('', '', {}, {});
|
|
150
|
+
const clone = new DataCubeQuerySnapshot('', '', '', {}, {});
|
|
148
151
|
(clone.data as Writable<DataCubeQuerySnapshotData>) = JSON.parse(
|
|
149
152
|
JSON.stringify(this.data),
|
|
150
153
|
) as DataCubeQuerySnapshotData;
|
|
@@ -164,8 +167,9 @@ export class DataCubeQuerySnapshot {
|
|
|
164
167
|
case 'aggregation':
|
|
165
168
|
return [...this.data.selectColumns];
|
|
166
169
|
case 'group-extend':
|
|
167
|
-
|
|
168
|
-
|
|
170
|
+
throw new UnsupportedOperationError(
|
|
171
|
+
`Can't get columns for group-level extend stage: dynamic pivot columns cannot be accounted for`,
|
|
172
|
+
);
|
|
169
173
|
case 'sort':
|
|
170
174
|
return [...this.data.selectColumns, ...this.data.groupExtendedColumns];
|
|
171
175
|
default:
|
|
@@ -46,7 +46,6 @@ import {
|
|
|
46
46
|
import { DataCubeConfiguration } from './DataCubeConfiguration.js';
|
|
47
47
|
import { buildDefaultConfiguration } from './DataCubeConfigurationBuilder.js';
|
|
48
48
|
import {
|
|
49
|
-
_aggCol,
|
|
50
49
|
_colSpecArrayParam,
|
|
51
50
|
_colSpecParam,
|
|
52
51
|
_funcMatch,
|
|
@@ -270,6 +269,7 @@ export function validateAndBuildQuerySnapshot(
|
|
|
270
269
|
const snapshot = DataCubeQuerySnapshot.create(
|
|
271
270
|
baseQuery.name,
|
|
272
271
|
baseQuery.source.runtime,
|
|
272
|
+
baseQuery.source.mapping,
|
|
273
273
|
V1_serializeValueSpecification(sourceQuery, []),
|
|
274
274
|
{},
|
|
275
275
|
);
|
|
@@ -295,12 +295,13 @@ export function validateAndBuildQuerySnapshot(
|
|
|
295
295
|
data.sourceColumns.map((col) => colsMap.set(col.name, col));
|
|
296
296
|
|
|
297
297
|
// --------------------------------- LEAF-LEVEL EXTEND ---------------------------------
|
|
298
|
-
|
|
298
|
+
/** TODO: @datacube roundtrip */
|
|
299
299
|
|
|
300
300
|
// --------------------------------- FILTER ---------------------------------
|
|
301
301
|
|
|
302
302
|
if (funcMap.filter) {
|
|
303
|
-
|
|
303
|
+
/** TODO: @datacube roundtrip */
|
|
304
|
+
data.filter = undefined;
|
|
304
305
|
// data.selectColumns = _colSpecArrayParam(funcMap.select, 0).colSpecs.map(
|
|
305
306
|
// (colSpec) => ({
|
|
306
307
|
// _col(colSpec),
|
|
@@ -323,21 +324,19 @@ export function validateAndBuildQuerySnapshot(
|
|
|
323
324
|
columns: _colSpecArrayParam(funcMap.groupBy, 0).colSpecs.map((colSpec) =>
|
|
324
325
|
_col(colSpec),
|
|
325
326
|
),
|
|
326
|
-
|
|
327
|
-
(colSpec) => _aggCol(colSpec, _col(colSpec)),
|
|
328
|
-
),
|
|
329
|
-
// TODO: verify agg columns agree with pivot agg columns
|
|
327
|
+
// TODO: verify group-by agg columns, pivot agg columns and configuration agree
|
|
330
328
|
};
|
|
331
329
|
}
|
|
332
330
|
|
|
333
331
|
// --------------------------------- PIVOT ---------------------------------
|
|
334
|
-
|
|
332
|
+
/** TODO: @datacube roundtrip */
|
|
333
|
+
// TODO: verify group-by agg columns, pivot agg columns and configuration agree
|
|
335
334
|
|
|
336
335
|
// --------------------------------- CAST ---------------------------------
|
|
337
|
-
|
|
336
|
+
/** TODO: @datacube roundtrip */
|
|
338
337
|
|
|
339
338
|
// --------------------------------- GROUP-LEVEL EXTEND ---------------------------------
|
|
340
|
-
|
|
339
|
+
/** TODO: @datacube roundtrip */
|
|
341
340
|
|
|
342
341
|
// --------------------------------- SORT ---------------------------------
|
|
343
342
|
|
|
@@ -368,25 +367,37 @@ export function validateAndBuildQuerySnapshot(
|
|
|
368
367
|
}
|
|
369
368
|
|
|
370
369
|
// --------------------------------- CONFIGURATION ---------------------------------
|
|
371
|
-
//
|
|
372
|
-
//
|
|
373
|
-
//
|
|
374
|
-
//
|
|
375
|
-
//
|
|
376
|
-
//
|
|
377
|
-
//
|
|
378
|
-
|
|
370
|
+
// NOTE: we aim to keep the data query a Pure query instead of a specification object
|
|
371
|
+
// so this configuration holds mostly layout and styling customization.
|
|
372
|
+
// But there are overlaps, i.e. certain data query configuration are stored in the
|
|
373
|
+
// configuration, e.g. column aggregation type, this is because a column
|
|
374
|
+
// aggregation's preference can be populated even when there's no aggregation specified
|
|
375
|
+
// in the data query.
|
|
376
|
+
//
|
|
377
|
+
// Arguably, the query should be the single source for these information, but when
|
|
378
|
+
// the configuration for a particular data query function coming from multiple sources
|
|
379
|
+
// conflict, we need to do some reconciliation (or throw error). Some examples include:
|
|
380
|
+
// - missing/extra columns present in the configuration
|
|
381
|
+
// - column kind and type conflict with aggregation
|
|
382
|
+
// - column kind and type conflict with the column configuration
|
|
383
|
+
//
|
|
384
|
+
// In certain cases, configuration needs to be generated from default presets. This
|
|
385
|
+
// helps with use cases where the query might comes from a different source, such as
|
|
386
|
+
// Studio or Query, or another part of Engine.
|
|
379
387
|
const configuration = baseQuery.configuration
|
|
380
388
|
? DataCubeConfiguration.serialization.fromJson(baseQuery.configuration)
|
|
381
389
|
: buildDefaultConfiguration(baseQuery.source.columns);
|
|
382
390
|
data.configuration =
|
|
383
391
|
DataCubeConfiguration.serialization.toJson(configuration);
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
392
|
+
/**
|
|
393
|
+
* TODO: @datacube roundtrip - implement the logic to reconcile the configuration with the query
|
|
394
|
+
* - columns (missing/extra columns - remove or generate default column configuration)
|
|
395
|
+
* - column kind
|
|
396
|
+
* - column type
|
|
397
|
+
* - base off the type, check the settings
|
|
398
|
+
* - aggregation
|
|
399
|
+
* - verify group-by agg columns, pivot agg columns and configuration agree
|
|
400
|
+
*/
|
|
390
401
|
|
|
391
402
|
return snapshot.finalize();
|
|
392
403
|
}
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import {
|
|
18
|
-
PRIMITIVE_TYPE,
|
|
19
18
|
V1_AppliedFunction,
|
|
20
19
|
V1_ClassInstance,
|
|
21
20
|
V1_ColSpec,
|
|
@@ -25,10 +24,7 @@ import {
|
|
|
25
24
|
matchFunctionName,
|
|
26
25
|
type V1_ValueSpecification,
|
|
27
26
|
} from '@finos/legend-graph';
|
|
28
|
-
import {
|
|
29
|
-
type DataCubeQuerySnapshotAggregateColumn,
|
|
30
|
-
type DataCubeQuerySnapshotColumn,
|
|
31
|
-
} from './DataCubeQuerySnapshot.js';
|
|
27
|
+
import { type DataCubeQuerySnapshotColumn } from './DataCubeQuerySnapshot.js';
|
|
32
28
|
import {
|
|
33
29
|
assertTrue,
|
|
34
30
|
assertType,
|
|
@@ -108,27 +104,6 @@ function _aggFuncMatch(
|
|
|
108
104
|
return _funcMatch(value.body[0], functionNames);
|
|
109
105
|
}
|
|
110
106
|
|
|
111
|
-
export function _defaultAggCol(
|
|
112
|
-
name: string,
|
|
113
|
-
type: string,
|
|
114
|
-
): DataCubeQuerySnapshotAggregateColumn | undefined {
|
|
115
|
-
switch (type) {
|
|
116
|
-
case PRIMITIVE_TYPE.NUMBER:
|
|
117
|
-
case PRIMITIVE_TYPE.INTEGER:
|
|
118
|
-
case PRIMITIVE_TYPE.DECIMAL:
|
|
119
|
-
case PRIMITIVE_TYPE.FLOAT: {
|
|
120
|
-
return {
|
|
121
|
-
name,
|
|
122
|
-
type,
|
|
123
|
-
operation: DataCubeAggregateOperator.SUM,
|
|
124
|
-
parameters: [],
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
default:
|
|
128
|
-
return undefined;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
107
|
export function _aggCol(
|
|
133
108
|
colSpec: V1_ColSpec,
|
|
134
109
|
column: DataCubeQuerySnapshotColumn,
|
|
@@ -179,28 +154,39 @@ export function _aggCol(
|
|
|
179
154
|
operation: DataCubeAggregateOperator.LAST,
|
|
180
155
|
parameters: [],
|
|
181
156
|
};
|
|
182
|
-
} else if (
|
|
157
|
+
} else if (
|
|
158
|
+
matchFunctionName(func.function, DataCubeFunction.VARIANCE_POPULATION)
|
|
159
|
+
) {
|
|
183
160
|
return {
|
|
184
161
|
...column,
|
|
185
|
-
operation: DataCubeAggregateOperator.
|
|
162
|
+
operation: DataCubeAggregateOperator.VARIANCE_POPULATION,
|
|
186
163
|
parameters: [],
|
|
187
164
|
};
|
|
188
|
-
} else if (
|
|
165
|
+
} else if (
|
|
166
|
+
matchFunctionName(func.function, DataCubeFunction.VARIANCE_SAMPLE)
|
|
167
|
+
) {
|
|
189
168
|
return {
|
|
190
169
|
...column,
|
|
191
|
-
operation: DataCubeAggregateOperator.
|
|
170
|
+
operation: DataCubeAggregateOperator.VARIANCE_SAMPLE,
|
|
192
171
|
parameters: [],
|
|
193
172
|
};
|
|
194
|
-
} else if (
|
|
173
|
+
} else if (
|
|
174
|
+
matchFunctionName(
|
|
175
|
+
func.function,
|
|
176
|
+
DataCubeFunction.STANDARD_DEVIATION_POPULATION,
|
|
177
|
+
)
|
|
178
|
+
) {
|
|
195
179
|
return {
|
|
196
180
|
...column,
|
|
197
|
-
operation: DataCubeAggregateOperator.
|
|
181
|
+
operation: DataCubeAggregateOperator.STANDARD_DEVIATION_POPULATION,
|
|
198
182
|
parameters: [],
|
|
199
183
|
};
|
|
200
|
-
} else if (
|
|
184
|
+
} else if (
|
|
185
|
+
matchFunctionName(func.function, DataCubeFunction.STANDARD_DEVIATION_SAMPLE)
|
|
186
|
+
) {
|
|
201
187
|
return {
|
|
202
188
|
...column,
|
|
203
|
-
operation: DataCubeAggregateOperator.
|
|
189
|
+
operation: DataCubeAggregateOperator.STANDARD_DEVIATION_SAMPLE,
|
|
204
190
|
parameters: [],
|
|
205
191
|
};
|
|
206
192
|
} else {
|