@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.
Files changed (297) hide show
  1. package/lib/components/dataCube/editor/DataCubeEditor.d.ts.map +1 -1
  2. package/lib/components/dataCube/editor/DataCubeEditor.js +1 -2
  3. package/lib/components/dataCube/editor/DataCubeEditor.js.map +1 -1
  4. package/lib/components/dataCube/editor/DataCubeEditorCodePanel.d.ts.map +1 -1
  5. package/lib/components/dataCube/editor/DataCubeEditorCodePanel.js +3 -167
  6. package/lib/components/dataCube/editor/DataCubeEditorCodePanel.js.map +1 -1
  7. package/lib/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.d.ts.map +1 -1
  8. package/lib/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.js +18 -16
  9. package/lib/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.js.map +1 -1
  10. package/lib/components/dataCube/editor/DataCubeEditorHorizontalPivotsPanel.d.ts.map +1 -1
  11. package/lib/components/dataCube/editor/DataCubeEditorHorizontalPivotsPanel.js +3 -5
  12. package/lib/components/dataCube/editor/DataCubeEditorHorizontalPivotsPanel.js.map +1 -1
  13. package/lib/index.css +1 -1
  14. package/lib/package.json +1 -1
  15. package/lib/server/DataCubeQuery.d.ts +1 -0
  16. package/lib/server/DataCubeQuery.d.ts.map +1 -1
  17. package/lib/server/DataCubeQuery.js +5 -2
  18. package/lib/server/DataCubeQuery.js.map +1 -1
  19. package/lib/server/REPLServerClient.d.ts.map +1 -1
  20. package/lib/server/REPLServerClient.js +0 -1
  21. package/lib/server/REPLServerClient.js.map +1 -1
  22. package/lib/stores/dataCube/DataCubeEngine.d.ts +16 -2
  23. package/lib/stores/dataCube/DataCubeEngine.d.ts.map +1 -1
  24. package/lib/stores/dataCube/DataCubeEngine.js +35 -2
  25. package/lib/stores/dataCube/DataCubeEngine.js.map +1 -1
  26. package/lib/stores/dataCube/core/DataCubeConfiguration.d.ts +5 -1
  27. package/lib/stores/dataCube/core/DataCubeConfiguration.d.ts.map +1 -1
  28. package/lib/stores/dataCube/core/DataCubeConfiguration.js +9 -1
  29. package/lib/stores/dataCube/core/DataCubeConfiguration.js.map +1 -1
  30. package/lib/stores/dataCube/core/DataCubeConfigurationBuilder.d.ts.map +1 -1
  31. package/lib/stores/dataCube/core/DataCubeConfigurationBuilder.js +6 -1
  32. package/lib/stores/dataCube/core/DataCubeConfigurationBuilder.js.map +1 -1
  33. package/lib/stores/dataCube/core/DataCubeQueryBuilder.d.ts +3 -2
  34. package/lib/stores/dataCube/core/DataCubeQueryBuilder.d.ts.map +1 -1
  35. package/lib/stores/dataCube/core/DataCubeQueryBuilder.js +10 -15
  36. package/lib/stores/dataCube/core/DataCubeQueryBuilder.js.map +1 -1
  37. package/lib/stores/dataCube/core/DataCubeQueryBuilderUtils.d.ts +7 -5
  38. package/lib/stores/dataCube/core/DataCubeQueryBuilderUtils.d.ts.map +1 -1
  39. package/lib/stores/dataCube/core/DataCubeQueryBuilderUtils.js +61 -50
  40. package/lib/stores/dataCube/core/DataCubeQueryBuilderUtils.js.map +1 -1
  41. package/lib/stores/dataCube/core/DataCubeQueryEngine.d.ts +11 -9
  42. package/lib/stores/dataCube/core/DataCubeQueryEngine.d.ts.map +1 -1
  43. package/lib/stores/dataCube/core/DataCubeQueryEngine.js +11 -11
  44. package/lib/stores/dataCube/core/DataCubeQueryEngine.js.map +1 -1
  45. package/lib/stores/dataCube/core/DataCubeQuerySnapshot.d.ts +2 -7
  46. package/lib/stores/dataCube/core/DataCubeQuerySnapshot.d.ts.map +1 -1
  47. package/lib/stores/dataCube/core/DataCubeQuerySnapshot.js +7 -7
  48. package/lib/stores/dataCube/core/DataCubeQuerySnapshot.js.map +1 -1
  49. package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilder.d.ts.map +1 -1
  50. package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilder.js +36 -22
  51. package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilder.js.map +1 -1
  52. package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilderUtils.d.ts +1 -2
  53. package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilderUtils.d.ts.map +1 -1
  54. package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilderUtils.js +9 -26
  55. package/lib/stores/dataCube/core/DataCubeQuerySnapshotBuilderUtils.js.map +1 -1
  56. package/lib/stores/dataCube/core/aggregation/{DataCubeQueryAggregationOperation.d.ts → DataCubeQueryAggregateOperation.d.ts} +7 -6
  57. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation.d.ts.map +1 -0
  58. package/lib/stores/dataCube/core/aggregation/{DataCubeQueryAggregationOperation.js → DataCubeQueryAggregateOperation.js} +7 -2
  59. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation.js.map +1 -0
  60. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Average.d.ts +27 -0
  61. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Average.d.ts.map +1 -0
  62. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Average.js +39 -0
  63. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Average.js.map +1 -0
  64. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Count.d.ts +27 -0
  65. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Count.d.ts.map +1 -0
  66. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Count.js +47 -0
  67. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Count.js.map +1 -0
  68. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__First.d.ts +27 -0
  69. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__First.d.ts.map +1 -0
  70. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__First.js +44 -0
  71. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__First.js.map +1 -0
  72. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.d.ts +27 -0
  73. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.d.ts.map +1 -0
  74. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.js +53 -0
  75. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.js.map +1 -0
  76. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Last.d.ts +27 -0
  77. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Last.d.ts.map +1 -0
  78. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Last.js +44 -0
  79. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Last.js.map +1 -0
  80. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Max.d.ts +27 -0
  81. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Max.d.ts.map +1 -0
  82. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Max.js +39 -0
  83. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Max.js.map +1 -0
  84. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Min.d.ts +27 -0
  85. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Min.d.ts.map +1 -0
  86. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Min.js +39 -0
  87. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Min.js.map +1 -0
  88. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.d.ts +27 -0
  89. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.d.ts.map +1 -0
  90. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.js +39 -0
  91. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.js.map +1 -0
  92. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.d.ts +27 -0
  93. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.d.ts.map +1 -0
  94. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.js +39 -0
  95. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.js.map +1 -0
  96. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Sum.d.ts +27 -0
  97. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Sum.d.ts.map +1 -0
  98. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Sum.js +39 -0
  99. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Sum.js.map +1 -0
  100. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.d.ts +27 -0
  101. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.d.ts.map +1 -0
  102. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.js +44 -0
  103. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.js.map +1 -0
  104. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.d.ts +27 -0
  105. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.d.ts.map +1 -0
  106. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.js +39 -0
  107. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.js.map +1 -0
  108. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.d.ts +27 -0
  109. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.d.ts.map +1 -0
  110. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.js +39 -0
  111. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.js.map +1 -0
  112. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation.d.ts +1 -0
  113. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation.d.ts.map +1 -1
  114. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation.js +4 -1
  115. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation.js.map +1 -1
  116. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Contain.js +1 -1
  117. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Contain.js.map +1 -1
  118. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.js +1 -1
  119. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.js.map +1 -1
  120. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWith.js +1 -1
  121. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWith.js.map +1 -1
  122. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.js +1 -1
  123. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.js.map +1 -1
  124. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Equal.js +1 -1
  125. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Equal.js.map +1 -1
  126. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.js +1 -1
  127. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.js.map +1 -1
  128. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.js +1 -1
  129. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.js.map +1 -1
  130. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualColumn.js +1 -1
  131. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualColumn.js.map +1 -1
  132. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThan.js +1 -1
  133. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThan.js.map +1 -1
  134. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.js +1 -1
  135. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.js.map +1 -1
  136. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.js +1 -1
  137. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.js.map +1 -1
  138. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.js +1 -1
  139. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.js.map +1 -1
  140. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNotNull.js +1 -1
  141. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNotNull.js.map +1 -1
  142. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNull.js +1 -1
  143. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNull.js.map +1 -1
  144. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThan.js +1 -1
  145. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThan.js.map +1 -1
  146. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanColumn.js +1 -1
  147. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanColumn.js.map +1 -1
  148. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.js +1 -1
  149. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.js.map +1 -1
  150. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.js +1 -1
  151. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.js.map +1 -1
  152. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotContain.js +1 -1
  153. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotContain.js.map +1 -1
  154. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEndWith.js +1 -1
  155. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEndWith.js.map +1 -1
  156. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqual.js +1 -1
  157. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqual.js.map +1 -1
  158. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.js +1 -1
  159. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.js.map +1 -1
  160. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.js +1 -1
  161. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.js.map +1 -1
  162. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.js +1 -1
  163. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.js.map +1 -1
  164. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotStartWith.js +1 -1
  165. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotStartWith.js.map +1 -1
  166. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWith.js +1 -1
  167. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWith.js.map +1 -1
  168. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.js +1 -1
  169. package/lib/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.js.map +1 -1
  170. package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.d.ts +6 -6
  171. package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.d.ts.map +1 -1
  172. package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.js +2 -2
  173. package/lib/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.js.map +1 -1
  174. package/lib/stores/dataCube/editor/DataCubeEditorColumnsPanelState.d.ts.map +1 -1
  175. package/lib/stores/dataCube/editor/DataCubeEditorColumnsPanelState.js +3 -3
  176. package/lib/stores/dataCube/editor/DataCubeEditorColumnsPanelState.js.map +1 -1
  177. package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.d.ts +3 -3
  178. package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.d.ts.map +1 -1
  179. package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.js +3 -3
  180. package/lib/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.js.map +1 -1
  181. package/lib/stores/dataCube/editor/DataCubeEditorHorizontalPivotsPanelState.d.ts +34 -0
  182. package/lib/stores/dataCube/editor/DataCubeEditorHorizontalPivotsPanelState.d.ts.map +1 -0
  183. package/lib/stores/dataCube/editor/DataCubeEditorHorizontalPivotsPanelState.js +57 -0
  184. package/lib/stores/dataCube/editor/DataCubeEditorHorizontalPivotsPanelState.js.map +1 -0
  185. package/lib/stores/dataCube/editor/{DataCubeMutableConfiguration.d.ts → DataCubeEditorMutableConfiguration.d.ts} +11 -14
  186. package/lib/stores/dataCube/editor/DataCubeEditorMutableConfiguration.d.ts.map +1 -0
  187. package/lib/stores/dataCube/editor/{DataCubeMutableConfiguration.js → DataCubeEditorMutableConfiguration.js} +25 -54
  188. package/lib/stores/dataCube/editor/DataCubeEditorMutableConfiguration.js.map +1 -0
  189. package/lib/stores/dataCube/editor/DataCubeEditorState.d.ts +5 -1
  190. package/lib/stores/dataCube/editor/DataCubeEditorState.d.ts.map +1 -1
  191. package/lib/stores/dataCube/editor/DataCubeEditorState.js +10 -3
  192. package/lib/stores/dataCube/editor/DataCubeEditorState.js.map +1 -1
  193. package/lib/stores/dataCube/editor/DataCubeEditorVerticalPivotsPanelState.d.ts.map +1 -1
  194. package/lib/stores/dataCube/editor/DataCubeEditorVerticalPivotsPanelState.js +0 -14
  195. package/lib/stores/dataCube/editor/DataCubeEditorVerticalPivotsPanelState.js.map +1 -1
  196. package/lib/stores/dataCube/extend/DataCubeColumnEditorState.d.ts.map +1 -1
  197. package/lib/stores/dataCube/extend/DataCubeColumnEditorState.js +1 -1
  198. package/lib/stores/dataCube/extend/DataCubeColumnEditorState.js.map +1 -1
  199. package/lib/stores/dataCube/extend/DataCubeExtendManagerState.d.ts +1 -1
  200. package/lib/stores/dataCube/extend/DataCubeExtendManagerState.d.ts.map +1 -1
  201. package/lib/stores/dataCube/extend/DataCubeExtendManagerState.js +3 -0
  202. package/lib/stores/dataCube/extend/DataCubeExtendManagerState.js.map +1 -1
  203. package/lib/stores/dataCube/grid/DataCubeGridClientEngine.d.ts.map +1 -1
  204. package/lib/stores/dataCube/grid/DataCubeGridClientEngine.js +1 -1
  205. package/lib/stores/dataCube/grid/DataCubeGridClientEngine.js.map +1 -1
  206. package/lib/stores/dataCube/grid/DataCubeGridConfigurationBuilder.d.ts.map +1 -1
  207. package/lib/stores/dataCube/grid/DataCubeGridConfigurationBuilder.js +3 -4
  208. package/lib/stores/dataCube/grid/DataCubeGridConfigurationBuilder.js.map +1 -1
  209. package/lib/stores/dataCube/grid/DataCubeGridControllerState.d.ts.map +1 -1
  210. package/lib/stores/dataCube/grid/DataCubeGridControllerState.js +1 -3
  211. package/lib/stores/dataCube/grid/DataCubeGridControllerState.js.map +1 -1
  212. package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.d.ts +2 -1
  213. package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.d.ts.map +1 -1
  214. package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.js +5 -14
  215. package/lib/stores/dataCube/grid/DataCubeGridQueryBuilder.js.map +1 -1
  216. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.d.ts +1 -3
  217. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.d.ts.map +1 -1
  218. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.js +6 -19
  219. package/lib/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.js.map +1 -1
  220. package/package.json +3 -3
  221. package/src/components/dataCube/editor/DataCubeEditor.tsx +1 -2
  222. package/src/components/dataCube/editor/DataCubeEditorCodePanel.tsx +2 -176
  223. package/src/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.tsx +72 -65
  224. package/src/components/dataCube/editor/DataCubeEditorHorizontalPivotsPanel.tsx +5 -7
  225. package/src/server/DataCubeQuery.ts +5 -1
  226. package/src/server/REPLEngine.ts +1 -1
  227. package/src/server/REPLServerClient.ts +0 -1
  228. package/src/stores/dataCube/DataCubeEngine.ts +38 -7
  229. package/src/stores/dataCube/core/DataCubeConfiguration.ts +11 -1
  230. package/src/stores/dataCube/core/DataCubeConfigurationBuilder.ts +6 -0
  231. package/src/stores/dataCube/core/DataCubeQueryBuilder.ts +21 -13
  232. package/src/stores/dataCube/core/DataCubeQueryBuilderUtils.ts +87 -77
  233. package/src/stores/dataCube/core/DataCubeQueryEngine.ts +12 -13
  234. package/src/stores/dataCube/core/DataCubeQuerySnapshot.ts +16 -12
  235. package/src/stores/dataCube/core/DataCubeQuerySnapshotBuilder.ts +35 -24
  236. package/src/stores/dataCube/core/DataCubeQuerySnapshotBuilderUtils.ts +20 -34
  237. package/src/stores/dataCube/core/aggregation/{DataCubeQueryAggregationOperation.ts → DataCubeQueryAggregateOperation.ts} +19 -12
  238. package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Average.tsx +52 -0
  239. package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Count.tsx +61 -0
  240. package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__First.tsx +57 -0
  241. package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.tsx +81 -0
  242. package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Last.tsx +57 -0
  243. package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Max.tsx +52 -0
  244. package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Min.tsx +52 -0
  245. package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.tsx +55 -0
  246. package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.tsx +52 -0
  247. package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__Sum.tsx +52 -0
  248. package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.tsx +57 -0
  249. package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.tsx +52 -0
  250. package/src/stores/dataCube/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.tsx +52 -0
  251. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation.ts +15 -1
  252. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Contain.tsx +1 -1
  253. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.tsx +1 -1
  254. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWith.tsx +1 -1
  255. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.tsx +1 -1
  256. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__Equal.tsx +1 -1
  257. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.tsx +1 -1
  258. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.tsx +1 -1
  259. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__EqualColumn.tsx +1 -1
  260. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThan.tsx +1 -1
  261. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.tsx +1 -1
  262. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.tsx +1 -1
  263. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.tsx +1 -1
  264. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNotNull.tsx +1 -1
  265. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__IsNull.tsx +1 -1
  266. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThan.tsx +1 -1
  267. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanColumn.tsx +1 -1
  268. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.tsx +1 -1
  269. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.tsx +1 -1
  270. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotContain.tsx +1 -1
  271. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEndWith.tsx +1 -1
  272. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqual.tsx +1 -1
  273. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.tsx +1 -1
  274. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.tsx +1 -1
  275. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.tsx +1 -1
  276. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__NotStartWith.tsx +1 -1
  277. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWith.tsx +1 -1
  278. package/src/stores/dataCube/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.tsx +1 -1
  279. package/src/stores/dataCube/editor/DataCubeEditorColumnPropertiesPanelState.ts +7 -5
  280. package/src/stores/dataCube/editor/DataCubeEditorColumnsPanelState.ts +8 -5
  281. package/src/stores/dataCube/editor/DataCubeEditorGeneralPropertiesPanelState.ts +4 -4
  282. package/src/stores/dataCube/editor/DataCubeEditorHorizontalPivotsPanelState.ts +99 -0
  283. package/src/stores/dataCube/editor/{DataCubeMutableConfiguration.ts → DataCubeEditorMutableConfiguration.ts} +41 -60
  284. package/src/stores/dataCube/editor/DataCubeEditorState.tsx +11 -2
  285. package/src/stores/dataCube/editor/DataCubeEditorVerticalPivotsPanelState.ts +0 -21
  286. package/src/stores/dataCube/extend/DataCubeColumnEditorState.tsx +1 -0
  287. package/src/stores/dataCube/extend/DataCubeExtendManagerState.tsx +3 -1
  288. package/src/stores/dataCube/grid/DataCubeGridClientEngine.ts +1 -0
  289. package/src/stores/dataCube/grid/DataCubeGridConfigurationBuilder.tsx +3 -4
  290. package/src/stores/dataCube/grid/DataCubeGridControllerState.ts +1 -12
  291. package/src/stores/dataCube/grid/DataCubeGridQueryBuilder.ts +10 -17
  292. package/src/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.ts +6 -41
  293. package/tsconfig.json +16 -2
  294. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregationOperation.d.ts.map +0 -1
  295. package/lib/stores/dataCube/core/aggregation/DataCubeQueryAggregationOperation.js.map +0 -1
  296. package/lib/stores/dataCube/editor/DataCubeMutableConfiguration.d.ts.map +0 -1
  297. 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(_groupByAggCols(groupBy.aggColumns)),
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
- // TODO: @akphi - implement this and CAST
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(_name(DataCubeFunction.FROM), [_elementPtr(data.runtime)]),
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 as _functionName,
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 DataCubeQuerySnapshotAggregateColumn,
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
- export { _functionName };
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
- columns: DataCubeQuerySnapshotAggregateColumn[],
294
+ groupByColumns: DataCubeQuerySnapshotColumn[],
295
+ snapshot: DataCubeQuerySnapshot,
296
+ configuration: DataCubeConfiguration,
297
+ aggregateOperations: DataCubeQueryAggregateOperation[],
279
298
  ) {
280
299
  const variable = _var();
281
- return columns.length
282
- ? columns.map((agg) =>
283
- _colSpec(
284
- agg.name,
285
- _lambda([variable], [_property(agg.name, variable)]),
286
- _lambda([variable], [_agg(agg)]),
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
- STDDEV_POP = 'meta::pure::functions::math::stdDevPopulation',
68
- STDDEV_SAMP = 'meta::pure::functions::math::stdDevSample',
69
- VAR_POP = 'meta::pure::functions::math::variancePopulation',
70
- VAR_SAMP = 'meta::pure::functions::math::varianceSample',
71
- // UNIQUE_VALUE_ONLY = 'meta::pure::functions::collection::uniqueValueOnly',
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
- groupByExtend?: V1_AppliedFunction | undefined; // used to populate empty columns erased by groupBy()
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
- // UNIQUE = 'uniq',
174
+ UNIQUE = 'uniq',
176
175
  FIRST = 'first',
177
176
  LAST = 'last',
178
177
  // MEDIAN = 'median',
179
- VAR_POP = 'var_samp',
180
- VAR_SAMP = 'var_pop',
181
- STDDEV_POP = 'stddev_pop',
182
- STDDEV_SAMP = 'stddev_samp',
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
- // strjoin
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(name, runtime, sourceQuery, configuration);
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
- // TODO: @akphi - add pivot columns
168
- return [...this.data.selectColumns];
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
- // TODO: @akphi - implement this
298
+ /** TODO: @datacube roundtrip */
299
299
 
300
300
  // --------------------------------- FILTER ---------------------------------
301
301
 
302
302
  if (funcMap.filter) {
303
- data.filter = undefined; // TODO: @akphi - implement this
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
- aggColumns: _colSpecArrayParam(funcMap.groupBy, 1).colSpecs.map(
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
- // TODO: @akphi - implement this
332
+ /** TODO: @datacube roundtrip */
333
+ // TODO: verify group-by agg columns, pivot agg columns and configuration agree
335
334
 
336
335
  // --------------------------------- CAST ---------------------------------
337
- // TODO: @akphi - implement this
336
+ /** TODO: @datacube roundtrip */
338
337
 
339
338
  // --------------------------------- GROUP-LEVEL EXTEND ---------------------------------
340
- // TODO: @akphi - implement this
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
- // The data query takes precedence over the configuration, we do this for 2 reasons
372
- // 1. The purpose of the configuration is to provide the layout and styling
373
- // customization on top of the data query result grid. If conflicts happen between
374
- // the configuration and the query, we will reconciliate by modifying the configuration
375
- // 2. The configuration when missing, can be generated from default presets. This helps
376
- // helps with use cases where the query might comes from a different source, such as
377
- // Studio or Query, or another part of Engine.
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
- // TODO: @akphi - implement the logic to reconcile the configuration with the query
385
- // - columns (missing/extra columns - remove or generate default column configuration)
386
- // - column kind
387
- // - column type
388
- // - base off the type, check the settings
389
- // - aggregation
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 (matchFunctionName(func.function, DataCubeFunction.VAR_POP)) {
157
+ } else if (
158
+ matchFunctionName(func.function, DataCubeFunction.VARIANCE_POPULATION)
159
+ ) {
183
160
  return {
184
161
  ...column,
185
- operation: DataCubeAggregateOperator.VAR_POP,
162
+ operation: DataCubeAggregateOperator.VARIANCE_POPULATION,
186
163
  parameters: [],
187
164
  };
188
- } else if (matchFunctionName(func.function, DataCubeFunction.VAR_SAMP)) {
165
+ } else if (
166
+ matchFunctionName(func.function, DataCubeFunction.VARIANCE_SAMPLE)
167
+ ) {
189
168
  return {
190
169
  ...column,
191
- operation: DataCubeAggregateOperator.VAR_SAMP,
170
+ operation: DataCubeAggregateOperator.VARIANCE_SAMPLE,
192
171
  parameters: [],
193
172
  };
194
- } else if (matchFunctionName(func.function, DataCubeFunction.STDDEV_POP)) {
173
+ } else if (
174
+ matchFunctionName(
175
+ func.function,
176
+ DataCubeFunction.STANDARD_DEVIATION_POPULATION,
177
+ )
178
+ ) {
195
179
  return {
196
180
  ...column,
197
- operation: DataCubeAggregateOperator.STDDEV_POP,
181
+ operation: DataCubeAggregateOperator.STANDARD_DEVIATION_POPULATION,
198
182
  parameters: [],
199
183
  };
200
- } else if (matchFunctionName(func.function, DataCubeFunction.STDDEV_SAMP)) {
184
+ } else if (
185
+ matchFunctionName(func.function, DataCubeFunction.STANDARD_DEVIATION_SAMPLE)
186
+ ) {
201
187
  return {
202
188
  ...column,
203
- operation: DataCubeAggregateOperator.STDDEV_SAMP,
189
+ operation: DataCubeAggregateOperator.STANDARD_DEVIATION_SAMPLE,
204
190
  parameters: [],
205
191
  };
206
192
  } else {