@finos/legend-cube-builder 0.0.3 → 0.0.5
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/README.md +59 -20
- package/docs/adding-an-operation.md +112 -13
- package/docs/demo/DEMO-FAST-NOTES.md +67 -0
- package/docs/demo/README.md +102 -0
- package/docs/demo/specs/duckdb-sales-pivot.cube.json +110 -0
- package/docs/demo/specs/trades-desks-1-joined.cube.json +123 -0
- package/docs/demo/specs/trades-desks-2-grouped.cube.json +140 -0
- package/docs/demo/specs/trades-desks-3-ranked.cube.json +158 -0
- package/docs/demo/specs/trades-desks-4-extended.cube.json +208 -0
- package/docs/demo/specs/trades-desks-5-final.cube.json +248 -0
- package/docs/hosting.md +132 -7
- package/docs/testing.md +146 -9
- package/lib/__lib__/LegendCubeCommand.d.ts +4 -1
- package/lib/__lib__/LegendCubeCommand.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeCommand.js +12 -0
- package/lib/__lib__/LegendCubeCommand.js.map +1 -1
- package/lib/__lib__/LegendCubeDataProductLabels.d.ts +45 -0
- package/lib/__lib__/LegendCubeDataProductLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeDataProductLabels.js +60 -0
- package/lib/__lib__/LegendCubeDataProductLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeDirectConnectionLabels.d.ts +56 -0
- package/lib/__lib__/LegendCubeDirectConnectionLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeDirectConnectionLabels.js +76 -0
- package/lib/__lib__/LegendCubeDirectConnectionLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeFunctionLabels.d.ts +29 -0
- package/lib/__lib__/LegendCubeFunctionLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeFunctionLabels.js +31 -0
- package/lib/__lib__/LegendCubeFunctionLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeHelpText.d.ts +5 -1
- package/lib/__lib__/LegendCubeHelpText.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeHelpText.js +25 -3
- package/lib/__lib__/LegendCubeHelpText.js.map +1 -1
- package/lib/__lib__/LegendCubeIngestLabels.d.ts +25 -0
- package/lib/__lib__/LegendCubeIngestLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeIngestLabels.js +29 -0
- package/lib/__lib__/LegendCubeIngestLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeLabels.d.ts +171 -6
- package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeLabels.js +226 -13
- package/lib/__lib__/LegendCubeLabels.js.map +1 -1
- package/lib/__lib__/LegendCubeProjectLabels.d.ts +22 -0
- package/lib/__lib__/LegendCubeProjectLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeProjectLabels.js +23 -0
- package/lib/__lib__/LegendCubeProjectLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts +26 -0
- package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeProjectSourceLabels.js +26 -0
- package/lib/__lib__/LegendCubeProjectSourceLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeServiceLabels.d.ts +27 -0
- package/lib/__lib__/LegendCubeServiceLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeServiceLabels.js +32 -0
- package/lib/__lib__/LegendCubeServiceLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeTesting.d.ts +8 -0
- package/lib/__lib__/LegendCubeTesting.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeTesting.js +8 -0
- package/lib/__lib__/LegendCubeTesting.js.map +1 -1
- package/lib/__test-utils__/CubeCanvasTestUtils.d.ts.map +1 -1
- package/lib/__test-utils__/CubeCanvasTestUtils.js +1 -1
- package/lib/__test-utils__/CubeCanvasTestUtils.js.map +1 -1
- package/lib/__test-utils__/CubeConnectionTestSupport.d.ts +22 -0
- package/lib/__test-utils__/CubeConnectionTestSupport.d.ts.map +1 -0
- package/lib/__test-utils__/CubeConnectionTestSupport.js +30 -0
- package/lib/__test-utils__/CubeConnectionTestSupport.js.map +1 -0
- package/lib/__test-utils__/CubeDirectConnectionFixtures.d.ts +31 -0
- package/lib/__test-utils__/CubeDirectConnectionFixtures.d.ts.map +1 -0
- package/lib/__test-utils__/CubeDirectConnectionFixtures.js +63 -0
- package/lib/__test-utils__/CubeDirectConnectionFixtures.js.map +1 -0
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts +13 -1
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -1
- package/lib/__test-utils__/CubeEngineTestSupport.js +23 -2
- package/lib/__test-utils__/CubeEngineTestSupport.js.map +1 -1
- package/lib/__test-utils__/CubeExpressionTestUtils.d.ts +44 -0
- package/lib/__test-utils__/CubeExpressionTestUtils.d.ts.map +1 -0
- package/lib/__test-utils__/CubeExpressionTestUtils.js +100 -0
- package/lib/__test-utils__/CubeExpressionTestUtils.js.map +1 -0
- package/lib/__test-utils__/CubeFunctionTestOutline.d.ts +26 -0
- package/lib/__test-utils__/CubeFunctionTestOutline.d.ts.map +1 -0
- package/lib/__test-utils__/CubeFunctionTestOutline.js +56 -0
- package/lib/__test-utils__/CubeFunctionTestOutline.js.map +1 -0
- package/lib/__test-utils__/CubeLambdaCorpus.d.ts +36 -0
- package/lib/__test-utils__/CubeLambdaCorpus.d.ts.map +1 -0
- package/lib/__test-utils__/CubeLambdaCorpus.js +83 -0
- package/lib/__test-utils__/CubeLambdaCorpus.js.map +1 -0
- package/lib/__test-utils__/CubeOperationsTestUtils.d.ts +25 -0
- package/lib/__test-utils__/CubeOperationsTestUtils.d.ts.map +1 -1
- package/lib/__test-utils__/CubeOperationsTestUtils.js +56 -10
- package/lib/__test-utils__/CubeOperationsTestUtils.js.map +1 -1
- package/lib/__test-utils__/CubePageTestUtils.d.ts +18 -0
- package/lib/__test-utils__/CubePageTestUtils.d.ts.map +1 -1
- package/lib/__test-utils__/CubePageTestUtils.js +46 -1
- package/lib/__test-utils__/CubePageTestUtils.js.map +1 -1
- package/lib/__test-utils__/CubeTestApplication.d.ts +14 -1
- package/lib/__test-utils__/CubeTestApplication.d.ts.map +1 -1
- package/lib/__test-utils__/CubeTestApplication.js +25 -1
- package/lib/__test-utils__/CubeTestApplication.js.map +1 -1
- package/lib/__test-utils__/FakeCubeConnectionExplorer.d.ts +33 -0
- package/lib/__test-utils__/FakeCubeConnectionExplorer.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeConnectionExplorer.js +67 -0
- package/lib/__test-utils__/FakeCubeConnectionExplorer.js.map +1 -0
- package/lib/__test-utils__/FakeCubeDataProductCatalog.d.ts +45 -0
- package/lib/__test-utils__/FakeCubeDataProductCatalog.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeDataProductCatalog.js +137 -0
- package/lib/__test-utils__/FakeCubeDataProductCatalog.js.map +1 -0
- package/lib/__test-utils__/FakeCubeEngine.d.ts +7 -0
- package/lib/__test-utils__/FakeCubeEngine.d.ts.map +1 -1
- package/lib/__test-utils__/FakeCubeEngine.js +31 -1
- package/lib/__test-utils__/FakeCubeEngine.js.map +1 -1
- package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts +41 -0
- package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeIngestCatalog.js +123 -0
- package/lib/__test-utils__/FakeCubeIngestCatalog.js.map +1 -0
- package/lib/__test-utils__/FakeCubeProjectCatalog.d.ts +30 -0
- package/lib/__test-utils__/FakeCubeProjectCatalog.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeProjectCatalog.js +64 -0
- package/lib/__test-utils__/FakeCubeProjectCatalog.js.map +1 -0
- package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts +26 -0
- package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeServiceCatalog.js +40 -0
- package/lib/__test-utils__/FakeCubeServiceCatalog.js.map +1 -0
- package/lib/components/CubeAddItems.d.ts +35 -0
- package/lib/components/CubeAddItems.d.ts.map +1 -0
- package/lib/components/CubeAddItems.js +85 -0
- package/lib/components/CubeAddItems.js.map +1 -0
- package/lib/components/CubeDialogTheme.d.ts +25 -0
- package/lib/components/CubeDialogTheme.d.ts.map +1 -0
- package/lib/components/CubeDialogTheme.js +25 -0
- package/lib/components/CubeDialogTheme.js.map +1 -0
- package/lib/components/CubeEditor.d.ts +17 -2
- package/lib/components/CubeEditor.d.ts.map +1 -1
- package/lib/components/CubeEditor.js +39 -17
- package/lib/components/CubeEditor.js.map +1 -1
- package/lib/components/CubeEntrySourceBanner.d.ts +23 -0
- package/lib/components/CubeEntrySourceBanner.d.ts.map +1 -0
- package/lib/components/CubeEntrySourceBanner.js +32 -0
- package/lib/components/CubeEntrySourceBanner.js.map +1 -0
- package/lib/components/CubeFileMenu.d.ts +28 -0
- package/lib/components/CubeFileMenu.d.ts.map +1 -0
- package/lib/components/CubeFileMenu.js +77 -0
- package/lib/components/CubeFileMenu.js.map +1 -0
- package/lib/components/CubeLambdaImportBanner.d.ts +26 -0
- package/lib/components/CubeLambdaImportBanner.d.ts.map +1 -0
- package/lib/components/CubeLambdaImportBanner.js +47 -0
- package/lib/components/CubeLambdaImportBanner.js.map +1 -0
- package/lib/components/CubeNodeIcon.d.ts.map +1 -1
- package/lib/components/CubeNodeIcon.js +12 -1
- package/lib/components/CubeNodeIcon.js.map +1 -1
- package/lib/components/CubeSchemaColumnsTable.d.ts +21 -0
- package/lib/components/CubeSchemaColumnsTable.d.ts.map +1 -0
- package/lib/components/CubeSchemaColumnsTable.js +6 -0
- package/lib/components/CubeSchemaColumnsTable.js.map +1 -0
- package/lib/components/canvas/CubeCanvas.d.ts +4 -3
- package/lib/components/canvas/CubeCanvas.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvas.js +68 -16
- package/lib/components/canvas/CubeCanvas.js.map +1 -1
- package/lib/components/canvas/CubeCanvasContextMenu.d.ts +8 -4
- package/lib/components/canvas/CubeCanvasContextMenu.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasContextMenu.js +20 -9
- package/lib/components/canvas/CubeCanvasContextMenu.js.map +1 -1
- package/lib/components/canvas/CubeCanvasDnd.d.ts +7 -5
- package/lib/components/canvas/CubeCanvasDnd.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasDnd.js +14 -9
- package/lib/components/canvas/CubeCanvasDnd.js.map +1 -1
- package/lib/components/canvas/CubeCanvasElements.d.ts +18 -1
- package/lib/components/canvas/CubeCanvasElements.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasElements.js +63 -5
- package/lib/components/canvas/CubeCanvasElements.js.map +1 -1
- package/lib/components/canvas/CubeCanvasLayout.js +1 -1
- package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasNode.js +35 -21
- package/lib/components/canvas/CubeCanvasNode.js.map +1 -1
- package/lib/components/canvas/CubeCanvasNodeFocus.d.ts +22 -0
- package/lib/components/canvas/CubeCanvasNodeFocus.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasNodeFocus.js +31 -0
- package/lib/components/canvas/CubeCanvasNodeFocus.js.map +1 -0
- package/lib/components/canvas/CubeNodeEditorAnchor.d.ts +44 -0
- package/lib/components/canvas/CubeNodeEditorAnchor.d.ts.map +1 -0
- package/lib/components/canvas/CubeNodeEditorAnchor.js +51 -0
- package/lib/components/canvas/CubeNodeEditorAnchor.js.map +1 -0
- package/lib/components/dev-settings/CubeDevSettings.d.ts +35 -0
- package/lib/components/dev-settings/CubeDevSettings.d.ts.map +1 -0
- package/lib/components/dev-settings/CubeDevSettings.js +50 -0
- package/lib/components/dev-settings/CubeDevSettings.js.map +1 -0
- package/lib/components/editors/CubeAggregationRowEditor.d.ts +48 -0
- package/lib/components/editors/CubeAggregationRowEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeAggregationRowEditor.js +72 -0
- package/lib/components/editors/CubeAggregationRowEditor.js.map +1 -0
- package/lib/components/editors/CubeColumnChecklist.d.ts +42 -0
- package/lib/components/editors/CubeColumnChecklist.d.ts.map +1 -0
- package/lib/components/editors/CubeColumnChecklist.js +41 -0
- package/lib/components/editors/CubeColumnChecklist.js.map +1 -0
- package/lib/components/editors/CubeColumnPicker.d.ts.map +1 -1
- package/lib/components/editors/CubeColumnPicker.js +3 -3
- package/lib/components/editors/CubeColumnPicker.js.map +1 -1
- package/lib/components/editors/CubeConcatEditor.d.ts +33 -0
- package/lib/components/editors/CubeConcatEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeConcatEditor.js +147 -0
- package/lib/components/editors/CubeConcatEditor.js.map +1 -0
- package/lib/components/editors/CubeDataProductSourceEditor.d.ts +25 -0
- package/lib/components/editors/CubeDataProductSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeDataProductSourceEditor.js +53 -0
- package/lib/components/editors/CubeDataProductSourceEditor.js.map +1 -0
- package/lib/components/editors/CubeDifferenceEditor.d.ts +25 -0
- package/lib/components/editors/CubeDifferenceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeDifferenceEditor.js +29 -0
- package/lib/components/editors/CubeDifferenceEditor.js.map +1 -0
- package/lib/components/editors/CubeExpressionFilterEditor.d.ts +25 -0
- package/lib/components/editors/CubeExpressionFilterEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeExpressionFilterEditor.js +83 -0
- package/lib/components/editors/CubeExpressionFilterEditor.js.map +1 -0
- package/lib/components/editors/CubeExtendEditor.d.ts +27 -0
- package/lib/components/editors/CubeExtendEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeExtendEditor.js +86 -0
- package/lib/components/editors/CubeExtendEditor.js.map +1 -0
- package/lib/components/editors/CubeFilterEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeFilterEditor.js +15 -4
- package/lib/components/editors/CubeFilterEditor.js.map +1 -1
- package/lib/components/editors/CubeFunctionSourceEditor.d.ts +25 -0
- package/lib/components/editors/CubeFunctionSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeFunctionSourceEditor.js +55 -0
- package/lib/components/editors/CubeFunctionSourceEditor.js.map +1 -0
- package/lib/components/editors/CubeGroupEditor.d.ts +28 -0
- package/lib/components/editors/CubeGroupEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeGroupEditor.js +70 -0
- package/lib/components/editors/CubeGroupEditor.js.map +1 -0
- package/lib/components/editors/CubeIngestSourceEditor.d.ts +26 -0
- package/lib/components/editors/CubeIngestSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeIngestSourceEditor.js +47 -0
- package/lib/components/editors/CubeIngestSourceEditor.js.map +1 -0
- package/lib/components/editors/CubeJoinEditor.d.ts +2 -4
- package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeJoinEditor.js +21 -39
- package/lib/components/editors/CubeJoinEditor.js.map +1 -1
- package/lib/components/editors/CubeJoinKeyRows.d.ts +34 -0
- package/lib/components/editors/CubeJoinKeyRows.d.ts.map +1 -0
- package/lib/components/editors/CubeJoinKeyRows.js +65 -0
- package/lib/components/editors/CubeJoinKeyRows.js.map +1 -0
- package/lib/components/editors/CubeNodeEditorPanel.d.ts +7 -5
- package/lib/components/editors/CubeNodeEditorPanel.d.ts.map +1 -1
- package/lib/components/editors/CubeNodeEditorPanel.js +64 -16
- package/lib/components/editors/CubeNodeEditorPanel.js.map +1 -1
- package/lib/components/editors/CubeNodeEditorPopper.d.ts +44 -0
- package/lib/components/editors/CubeNodeEditorPopper.d.ts.map +1 -0
- package/lib/components/editors/CubeNodeEditorPopper.js +133 -0
- package/lib/components/editors/CubeNodeEditorPopper.js.map +1 -0
- package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -1
- package/lib/components/editors/CubeNodeEditorRegistry.js +23 -1
- package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -1
- package/lib/components/editors/CubePartitionEditor.d.ts +30 -0
- package/lib/components/editors/CubePartitionEditor.d.ts.map +1 -0
- package/lib/components/editors/CubePartitionEditor.js +93 -0
- package/lib/components/editors/CubePartitionEditor.js.map +1 -0
- package/lib/components/editors/CubePivotEditor.d.ts +26 -0
- package/lib/components/editors/CubePivotEditor.d.ts.map +1 -0
- package/lib/components/editors/CubePivotEditor.js +93 -0
- package/lib/components/editors/CubePivotEditor.js.map +1 -0
- package/lib/components/editors/CubeRenameEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeRenameEditor.js +6 -4
- package/lib/components/editors/CubeRenameEditor.js.map +1 -1
- package/lib/components/editors/CubeRestrictEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeRestrictEditor.js +2 -2
- package/lib/components/editors/CubeRestrictEditor.js.map +1 -1
- package/lib/components/editors/CubeServiceSourceEditor.d.ts +25 -0
- package/lib/components/editors/CubeServiceSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeServiceSourceEditor.js +41 -0
- package/lib/components/editors/CubeServiceSourceEditor.js.map +1 -0
- package/lib/components/editors/CubeSortEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeSortEditor.js +10 -37
- package/lib/components/editors/CubeSortEditor.js.map +1 -1
- package/lib/components/editors/CubeSortRowEditor.d.ts +47 -0
- package/lib/components/editors/CubeSortRowEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeSortRowEditor.js +62 -0
- package/lib/components/editors/CubeSortRowEditor.js.map +1 -0
- package/lib/components/editors/CubeSourceEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeSourceEditor.js +18 -5
- package/lib/components/editors/CubeSourceEditor.js.map +1 -1
- package/lib/components/editors/CubeWarehouseControl.d.ts +30 -0
- package/lib/components/editors/CubeWarehouseControl.d.ts.map +1 -0
- package/lib/components/editors/CubeWarehouseControl.js +44 -0
- package/lib/components/editors/CubeWarehouseControl.js.map +1 -0
- package/lib/components/editors/useCubeNodeEditorDismiss.d.ts +31 -0
- package/lib/components/editors/useCubeNodeEditorDismiss.d.ts.map +1 -0
- package/lib/components/editors/useCubeNodeEditorDismiss.js +83 -0
- package/lib/components/editors/useCubeNodeEditorDismiss.js.map +1 -0
- package/lib/components/examples/CubeExamplesDialog.d.ts +26 -0
- package/lib/components/examples/CubeExamplesDialog.d.ts.map +1 -0
- package/lib/components/examples/CubeExamplesDialog.js +68 -0
- package/lib/components/examples/CubeExamplesDialog.js.map +1 -0
- package/lib/components/grid/CubeColumnFormatDialog.d.ts +28 -0
- package/lib/components/grid/CubeColumnFormatDialog.d.ts.map +1 -0
- package/lib/components/grid/CubeColumnFormatDialog.js +94 -0
- package/lib/components/grid/CubeColumnFormatDialog.js.map +1 -0
- package/lib/components/grid/CubeDrilldownBar.d.ts +37 -0
- package/lib/components/grid/CubeDrilldownBar.d.ts.map +1 -0
- package/lib/components/grid/CubeDrilldownBar.js +77 -0
- package/lib/components/grid/CubeDrilldownBar.js.map +1 -0
- package/lib/components/grid/CubeGridRegion.d.ts.map +1 -1
- package/lib/components/grid/CubeGridRegion.js +56 -31
- package/lib/components/grid/CubeGridRegion.js.map +1 -1
- package/lib/components/grid/CubeGridValues.d.ts +47 -1
- package/lib/components/grid/CubeGridValues.d.ts.map +1 -1
- package/lib/components/grid/CubeGridValues.js +152 -1
- package/lib/components/grid/CubeGridValues.js.map +1 -1
- package/lib/components/grid/CubeResultGrid.d.ts +68 -5
- package/lib/components/grid/CubeResultGrid.d.ts.map +1 -1
- package/lib/components/grid/CubeResultGrid.js +316 -31
- package/lib/components/grid/CubeResultGrid.js.map +1 -1
- package/lib/components/grid/CubeRunStatsPanel.d.ts +28 -0
- package/lib/components/grid/CubeRunStatsPanel.d.ts.map +1 -0
- package/lib/components/grid/CubeRunStatsPanel.js +61 -0
- package/lib/components/grid/CubeRunStatsPanel.js.map +1 -0
- package/lib/components/grid/CubeServerSideGrid.d.ts +36 -0
- package/lib/components/grid/CubeServerSideGrid.d.ts.map +1 -0
- package/lib/components/grid/CubeServerSideGrid.js +114 -0
- package/lib/components/grid/CubeServerSideGrid.js.map +1 -0
- package/lib/components/grid/CubeSqlDialog.d.ts +24 -0
- package/lib/components/grid/CubeSqlDialog.d.ts.map +1 -0
- package/lib/components/grid/CubeSqlDialog.js +39 -0
- package/lib/components/grid/CubeSqlDialog.js.map +1 -0
- package/lib/components/grid/CubeSqlFormat.d.ts +20 -0
- package/lib/components/grid/CubeSqlFormat.d.ts.map +1 -0
- package/lib/components/grid/CubeSqlFormat.js +32 -0
- package/lib/components/grid/CubeSqlFormat.js.map +1 -0
- package/lib/components/palette/CubePalette.d.ts.map +1 -1
- package/lib/components/palette/CubePalette.js +44 -14
- package/lib/components/palette/CubePalette.js.map +1 -1
- package/lib/components/show-pure/CubeShowPureDialog.d.ts +4 -1
- package/lib/components/show-pure/CubeShowPureDialog.d.ts.map +1 -1
- package/lib/components/show-pure/CubeShowPureDialog.js +8 -4
- package/lib/components/show-pure/CubeShowPureDialog.js.map +1 -1
- package/lib/components/source-picker/CubeDataProductTab.d.ts +27 -0
- package/lib/components/source-picker/CubeDataProductTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeDataProductTab.js +123 -0
- package/lib/components/source-picker/CubeDataProductTab.js.map +1 -0
- package/lib/components/source-picker/CubeDirectConnectionTab.d.ts +27 -0
- package/lib/components/source-picker/CubeDirectConnectionTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeDirectConnectionTab.js +89 -0
- package/lib/components/source-picker/CubeDirectConnectionTab.js.map +1 -0
- package/lib/components/source-picker/CubeFunctionSteps.d.ts +36 -0
- package/lib/components/source-picker/CubeFunctionSteps.d.ts.map +1 -0
- package/lib/components/source-picker/CubeFunctionSteps.js +76 -0
- package/lib/components/source-picker/CubeFunctionSteps.js.map +1 -0
- package/lib/components/source-picker/CubeIngestTab.d.ts +28 -0
- package/lib/components/source-picker/CubeIngestTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeIngestTab.js +89 -0
- package/lib/components/source-picker/CubeIngestTab.js.map +1 -0
- package/lib/components/source-picker/CubeInlineModelTab.d.ts +38 -0
- package/lib/components/source-picker/CubeInlineModelTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeInlineModelTab.js +81 -0
- package/lib/components/source-picker/CubeInlineModelTab.js.map +1 -0
- package/lib/components/source-picker/CubePickerListItem.d.ts +47 -0
- package/lib/components/source-picker/CubePickerListItem.d.ts.map +1 -0
- package/lib/components/source-picker/CubePickerListItem.js +62 -0
- package/lib/components/source-picker/CubePickerListItem.js.map +1 -0
- package/lib/components/source-picker/CubePickerStep.d.ts +27 -0
- package/lib/components/source-picker/CubePickerStep.d.ts.map +1 -0
- package/lib/components/source-picker/CubePickerStep.js +23 -0
- package/lib/components/source-picker/CubePickerStep.js.map +1 -0
- package/lib/components/source-picker/CubeProjectTab.d.ts +28 -0
- package/lib/components/source-picker/CubeProjectTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeProjectTab.js +53 -0
- package/lib/components/source-picker/CubeProjectTab.js.map +1 -0
- package/lib/components/source-picker/CubeServiceTab.d.ts +27 -0
- package/lib/components/source-picker/CubeServiceTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeServiceTab.js +36 -0
- package/lib/components/source-picker/CubeServiceTab.js.map +1 -0
- package/lib/components/source-picker/CubeSourcePicker.d.ts +6 -0
- package/lib/components/source-picker/CubeSourcePicker.d.ts.map +1 -1
- package/lib/components/source-picker/CubeSourcePicker.js +33 -58
- package/lib/components/source-picker/CubeSourcePicker.js.map +1 -1
- package/lib/components/source-picker/CubeTablePreview.d.ts +29 -0
- package/lib/components/source-picker/CubeTablePreview.d.ts.map +1 -0
- package/lib/components/source-picker/CubeTablePreview.js +10 -0
- package/lib/components/source-picker/CubeTablePreview.js.map +1 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.d.ts +27 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.d.ts.map +1 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.js +38 -0
- package/lib/components/spec-transfer/CubeImportPureDialog.js.map +1 -0
- package/lib/components/spec-transfer/CubeSpecTransferDialog.d.ts.map +1 -1
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js +9 -3
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js.map +1 -1
- package/lib/graph-manager/CubeConnectionExplorer.d.ts +90 -0
- package/lib/graph-manager/CubeConnectionExplorer.d.ts.map +1 -0
- package/lib/graph-manager/CubeConnectionExplorer.js +34 -0
- package/lib/graph-manager/CubeConnectionExplorer.js.map +1 -0
- package/lib/graph-manager/CubeDataProduct.d.ts +66 -0
- package/lib/graph-manager/CubeDataProduct.d.ts.map +1 -0
- package/lib/graph-manager/CubeDataProduct.js +102 -0
- package/lib/graph-manager/CubeDataProduct.js.map +1 -0
- package/lib/graph-manager/CubeDataProductCatalog.d.ts +177 -0
- package/lib/graph-manager/CubeDataProductCatalog.d.ts.map +1 -0
- package/lib/graph-manager/CubeDataProductCatalog.js +116 -0
- package/lib/graph-manager/CubeDataProductCatalog.js.map +1 -0
- package/lib/graph-manager/CubeDirectConnection.d.ts +38 -0
- package/lib/graph-manager/CubeDirectConnection.d.ts.map +1 -0
- package/lib/graph-manager/CubeDirectConnection.js +48 -0
- package/lib/graph-manager/CubeDirectConnection.js.map +1 -0
- package/lib/graph-manager/CubeEngine.d.ts +83 -3
- package/lib/graph-manager/CubeEngine.d.ts.map +1 -1
- package/lib/graph-manager/CubeEngine.js +4 -1
- package/lib/graph-manager/CubeEngine.js.map +1 -1
- package/lib/graph-manager/CubeEngineClientSettings.d.ts +43 -0
- package/lib/graph-manager/CubeEngineClientSettings.d.ts.map +1 -0
- package/lib/graph-manager/CubeEngineClientSettings.js +51 -0
- package/lib/graph-manager/CubeEngineClientSettings.js.map +1 -0
- package/lib/graph-manager/CubeIngest.d.ts +55 -0
- package/lib/graph-manager/CubeIngest.d.ts.map +1 -0
- package/lib/graph-manager/CubeIngest.js +98 -0
- package/lib/graph-manager/CubeIngest.js.map +1 -0
- package/lib/graph-manager/CubeIngestCatalog.d.ts +142 -0
- package/lib/graph-manager/CubeIngestCatalog.d.ts.map +1 -0
- package/lib/graph-manager/CubeIngestCatalog.js +86 -0
- package/lib/graph-manager/CubeIngestCatalog.js.map +1 -0
- package/lib/graph-manager/CubeLakehouseEnvironment.d.ts +26 -0
- package/lib/graph-manager/CubeLakehouseEnvironment.d.ts.map +1 -0
- package/lib/graph-manager/CubeLakehouseEnvironment.js +17 -0
- package/lib/graph-manager/CubeLakehouseEnvironment.js.map +1 -0
- package/lib/graph-manager/CubeLakehouseRuntime.d.ts +29 -0
- package/lib/graph-manager/CubeLakehouseRuntime.d.ts.map +1 -0
- package/lib/graph-manager/CubeLakehouseRuntime.js +40 -0
- package/lib/graph-manager/CubeLakehouseRuntime.js.map +1 -0
- package/lib/graph-manager/CubeProject.d.ts +41 -0
- package/lib/graph-manager/CubeProject.d.ts.map +1 -0
- package/lib/graph-manager/CubeProject.js +84 -0
- package/lib/graph-manager/CubeProject.js.map +1 -0
- package/lib/graph-manager/CubeProjectCatalog.d.ts +35 -0
- package/lib/graph-manager/CubeProjectCatalog.d.ts.map +1 -0
- package/lib/graph-manager/CubeProjectCatalog.js +17 -0
- package/lib/graph-manager/CubeProjectCatalog.js.map +1 -0
- package/lib/graph-manager/CubeService.d.ts +20 -0
- package/lib/graph-manager/CubeService.d.ts.map +1 -0
- package/lib/graph-manager/CubeService.js +22 -0
- package/lib/graph-manager/CubeService.js.map +1 -0
- package/lib/graph-manager/CubeServiceCatalog.d.ts +31 -0
- package/lib/graph-manager/CubeServiceCatalog.d.ts.map +1 -0
- package/lib/graph-manager/CubeServiceCatalog.js +17 -0
- package/lib/graph-manager/CubeServiceCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts +111 -2
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js +108 -1
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.d.ts +44 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.js +192 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts +32 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js +88 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.d.ts +41 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.js +246 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.d.ts +43 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.js +112 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js +30 -4
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.d.ts +23 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.js +68 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts +30 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js +229 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts +30 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js +149 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts +57 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js +120 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.d.ts +33 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.js +94 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts +34 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js +332 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js +111 -13
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js +3 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.d.ts +67 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.js +238 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts +35 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js +65 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.d.ts +104 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.js +484 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts +115 -3
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js +654 -21
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.d.ts +69 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.js +270 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts +35 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js +94 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts +31 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js +69 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.d.ts +25 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.js +47 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.d.ts +28 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.js +310 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.d.ts +33 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.js +188 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts +1 -1
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js +33 -3
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +22 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +19 -1
- package/lib/index.js.map +1 -1
- package/lib/stores/CubeAddPlacement.d.ts +39 -0
- package/lib/stores/CubeAddPlacement.d.ts.map +1 -0
- package/lib/stores/CubeAddPlacement.js +51 -0
- package/lib/stores/CubeAddPlacement.js.map +1 -0
- package/lib/stores/CubeDataProductRecheck.d.ts +27 -0
- package/lib/stores/CubeDataProductRecheck.d.ts.map +1 -0
- package/lib/stores/CubeDataProductRecheck.js +54 -0
- package/lib/stores/CubeDataProductRecheck.js.map +1 -0
- package/lib/stores/CubeDataProductRuntimeState.d.ts +88 -0
- package/lib/stores/CubeDataProductRuntimeState.d.ts.map +1 -0
- package/lib/stores/CubeDataProductRuntimeState.js +190 -0
- package/lib/stores/CubeDataProductRuntimeState.js.map +1 -0
- package/lib/stores/CubeDataProductWarehouse.d.ts +19 -0
- package/lib/stores/CubeDataProductWarehouse.d.ts.map +1 -0
- package/lib/stores/CubeDataProductWarehouse.js +25 -0
- package/lib/stores/CubeDataProductWarehouse.js.map +1 -0
- package/lib/stores/CubeDevSettingsState.d.ts +47 -0
- package/lib/stores/CubeDevSettingsState.d.ts.map +1 -0
- package/lib/stores/CubeDevSettingsState.js +99 -0
- package/lib/stores/CubeDevSettingsState.js.map +1 -0
- package/lib/stores/CubeEditorState.d.ts +242 -28
- package/lib/stores/CubeEditorState.d.ts.map +1 -1
- package/lib/stores/CubeEditorState.js +751 -66
- package/lib/stores/CubeEditorState.js.map +1 -1
- package/lib/stores/CubeEngineChecks.d.ts +59 -0
- package/lib/stores/CubeEngineChecks.d.ts.map +1 -0
- package/lib/stores/CubeEngineChecks.js +100 -0
- package/lib/stores/CubeEngineChecks.js.map +1 -0
- package/lib/stores/CubeEntrySource.d.ts +78 -0
- package/lib/stores/CubeEntrySource.d.ts.map +1 -0
- package/lib/stores/CubeEntrySource.js +200 -0
- package/lib/stores/CubeEntrySource.js.map +1 -0
- package/lib/stores/CubeExamples.d.ts +43 -0
- package/lib/stores/CubeExamples.d.ts.map +1 -0
- package/lib/stores/CubeExamples.js +333 -0
- package/lib/stores/CubeExamples.js.map +1 -0
- package/lib/stores/CubeExamplesState.d.ts +45 -0
- package/lib/stores/CubeExamplesState.d.ts.map +1 -0
- package/lib/stores/CubeExamplesState.js +81 -0
- package/lib/stores/CubeExamplesState.js.map +1 -0
- package/lib/stores/CubeExecutionState.d.ts +6 -2
- package/lib/stores/CubeExecutionState.d.ts.map +1 -1
- package/lib/stores/CubeExecutionState.js +39 -38
- package/lib/stores/CubeExecutionState.js.map +1 -1
- package/lib/stores/CubeExportState.d.ts +41 -0
- package/lib/stores/CubeExportState.d.ts.map +1 -0
- package/lib/stores/CubeExportState.js +134 -0
- package/lib/stores/CubeExportState.js.map +1 -0
- package/lib/stores/CubeExpressionFilterCheck.d.ts +51 -0
- package/lib/stores/CubeExpressionFilterCheck.d.ts.map +1 -0
- package/lib/stores/CubeExpressionFilterCheck.js +134 -0
- package/lib/stores/CubeExpressionFilterCheck.js.map +1 -0
- package/lib/stores/CubeExtendTyping.d.ts +64 -0
- package/lib/stores/CubeExtendTyping.d.ts.map +1 -0
- package/lib/stores/CubeExtendTyping.js +149 -0
- package/lib/stores/CubeExtendTyping.js.map +1 -0
- package/lib/stores/CubeFunctionRecheck.d.ts +30 -0
- package/lib/stores/CubeFunctionRecheck.d.ts.map +1 -0
- package/lib/stores/CubeFunctionRecheck.js +67 -0
- package/lib/stores/CubeFunctionRecheck.js.map +1 -0
- package/lib/stores/CubeGridFetcher.d.ts +75 -0
- package/lib/stores/CubeGridFetcher.d.ts.map +1 -0
- package/lib/stores/CubeGridFetcher.js +197 -0
- package/lib/stores/CubeGridFetcher.js.map +1 -0
- package/lib/stores/CubeGridQuickActions.d.ts +27 -7
- package/lib/stores/CubeGridQuickActions.d.ts.map +1 -1
- package/lib/stores/CubeGridQuickActions.js +79 -21
- package/lib/stores/CubeGridQuickActions.js.map +1 -1
- package/lib/stores/CubeGridState.d.ts +136 -0
- package/lib/stores/CubeGridState.d.ts.map +1 -0
- package/lib/stores/CubeGridState.js +317 -0
- package/lib/stores/CubeGridState.js.map +1 -0
- package/lib/stores/CubeHost.d.ts +74 -1
- package/lib/stores/CubeHost.d.ts.map +1 -1
- package/lib/stores/CubeHost.js +25 -1
- package/lib/stores/CubeHost.js.map +1 -1
- package/lib/stores/CubeIngestRecheck.d.ts +26 -0
- package/lib/stores/CubeIngestRecheck.d.ts.map +1 -0
- package/lib/stores/CubeIngestRecheck.js +53 -0
- package/lib/stores/CubeIngestRecheck.js.map +1 -0
- package/lib/stores/CubeLambdaImportState.d.ts +118 -0
- package/lib/stores/CubeLambdaImportState.d.ts.map +1 -0
- package/lib/stores/CubeLambdaImportState.js +302 -0
- package/lib/stores/CubeLambdaImportState.js.map +1 -0
- package/lib/stores/CubeLambdaSources.d.ts +45 -0
- package/lib/stores/CubeLambdaSources.d.ts.map +1 -0
- package/lib/stores/CubeLambdaSources.js +261 -0
- package/lib/stores/CubeLambdaSources.js.map +1 -0
- package/lib/stores/CubeNodeEditorState.d.ts +101 -5
- package/lib/stores/CubeNodeEditorState.d.ts.map +1 -1
- package/lib/stores/CubeNodeEditorState.js +221 -10
- package/lib/stores/CubeNodeEditorState.js.map +1 -1
- package/lib/stores/CubeQueryRun.d.ts +59 -0
- package/lib/stores/CubeQueryRun.d.ts.map +1 -0
- package/lib/stores/CubeQueryRun.js +101 -0
- package/lib/stores/CubeQueryRun.js.map +1 -0
- package/lib/stores/CubeRunStatsState.d.ts +61 -0
- package/lib/stores/CubeRunStatsState.d.ts.map +1 -0
- package/lib/stores/CubeRunStatsState.js +54 -0
- package/lib/stores/CubeRunStatsState.js.map +1 -0
- package/lib/stores/CubeRunningStepLambda.d.ts +25 -0
- package/lib/stores/CubeRunningStepLambda.d.ts.map +1 -0
- package/lib/stores/CubeRunningStepLambda.js +45 -0
- package/lib/stores/CubeRunningStepLambda.js.map +1 -0
- package/lib/stores/CubeServiceRecheck.d.ts +29 -0
- package/lib/stores/CubeServiceRecheck.d.ts.map +1 -0
- package/lib/stores/CubeServiceRecheck.js +33 -0
- package/lib/stores/CubeServiceRecheck.js.map +1 -0
- package/lib/stores/CubeShowPureState.d.ts +18 -2
- package/lib/stores/CubeShowPureState.d.ts.map +1 -1
- package/lib/stores/CubeShowPureState.js +46 -13
- package/lib/stores/CubeShowPureState.js.map +1 -1
- package/lib/stores/CubeSourcePickerState.d.ts +70 -65
- package/lib/stores/CubeSourcePickerState.d.ts.map +1 -1
- package/lib/stores/CubeSourcePickerState.js +207 -267
- package/lib/stores/CubeSourcePickerState.js.map +1 -1
- package/lib/stores/CubeSpecTransferState.d.ts +2 -2
- package/lib/stores/CubeSpecTransferState.js +2 -2
- package/lib/stores/LocalModelCatalog.d.ts +2 -0
- package/lib/stores/LocalModelCatalog.d.ts.map +1 -1
- package/lib/stores/LocalModelCatalog.js +19 -3
- package/lib/stores/LocalModelCatalog.js.map +1 -1
- package/lib/stores/editors/CubeAggregationRows.d.ts +80 -0
- package/lib/stores/editors/CubeAggregationRows.d.ts.map +1 -0
- package/lib/stores/editors/CubeAggregationRows.js +164 -0
- package/lib/stores/editors/CubeAggregationRows.js.map +1 -0
- package/lib/stores/editors/CubeConcatDraft.d.ts +30 -0
- package/lib/stores/editors/CubeConcatDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeConcatDraft.js +44 -0
- package/lib/stores/editors/CubeConcatDraft.js.map +1 -0
- package/lib/stores/editors/CubeDifferenceDraft.d.ts +49 -0
- package/lib/stores/editors/CubeDifferenceDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeDifferenceDraft.js +111 -0
- package/lib/stores/editors/CubeDifferenceDraft.js.map +1 -0
- package/lib/stores/editors/CubeExpressionFilterDraft.d.ts +91 -0
- package/lib/stores/editors/CubeExpressionFilterDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeExpressionFilterDraft.js +254 -0
- package/lib/stores/editors/CubeExpressionFilterDraft.js.map +1 -0
- package/lib/stores/editors/CubeExtendDraft.d.ts +110 -0
- package/lib/stores/editors/CubeExtendDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeExtendDraft.js +359 -0
- package/lib/stores/editors/CubeExtendDraft.js.map +1 -0
- package/lib/stores/editors/CubeFunctionDraft.d.ts +34 -0
- package/lib/stores/editors/CubeFunctionDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeFunctionDraft.js +69 -0
- package/lib/stores/editors/CubeFunctionDraft.js.map +1 -0
- package/lib/stores/editors/CubeGroupDraft.d.ts +61 -0
- package/lib/stores/editors/CubeGroupDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeGroupDraft.js +106 -0
- package/lib/stores/editors/CubeGroupDraft.js.map +1 -0
- package/lib/stores/editors/CubeJoinDraft.d.ts +9 -10
- package/lib/stores/editors/CubeJoinDraft.d.ts.map +1 -1
- package/lib/stores/editors/CubeJoinDraft.js +92 -21
- package/lib/stores/editors/CubeJoinDraft.js.map +1 -1
- package/lib/stores/editors/CubeJoinKeyPairs.d.ts +38 -0
- package/lib/stores/editors/CubeJoinKeyPairs.d.ts.map +1 -0
- package/lib/stores/editors/CubeJoinKeyPairs.js +33 -0
- package/lib/stores/editors/CubeJoinKeyPairs.js.map +1 -0
- package/lib/stores/editors/CubeNodeDraft.d.ts +20 -6
- package/lib/stores/editors/CubeNodeDraft.d.ts.map +1 -1
- package/lib/stores/editors/CubeNodeDraft.js +23 -5
- package/lib/stores/editors/CubeNodeDraft.js.map +1 -1
- package/lib/stores/editors/CubeNodeDraftRegistry.d.ts +4 -2
- package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -1
- package/lib/stores/editors/CubeNodeDraftRegistry.js +39 -3
- package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -1
- package/lib/stores/editors/CubePartitionDraft.d.ts +70 -0
- package/lib/stores/editors/CubePartitionDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubePartitionDraft.js +154 -0
- package/lib/stores/editors/CubePartitionDraft.js.map +1 -0
- package/lib/stores/editors/CubePivotDraft.d.ts +93 -0
- package/lib/stores/editors/CubePivotDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubePivotDraft.js +267 -0
- package/lib/stores/editors/CubePivotDraft.js.map +1 -0
- package/lib/stores/editors/CubeSortDraft.d.ts +2 -10
- package/lib/stores/editors/CubeSortDraft.d.ts.map +1 -1
- package/lib/stores/editors/CubeSortDraft.js +9 -35
- package/lib/stores/editors/CubeSortDraft.js.map +1 -1
- package/lib/stores/editors/CubeSortRows.d.ts +34 -0
- package/lib/stores/editors/CubeSortRows.d.ts.map +1 -0
- package/lib/stores/editors/CubeSortRows.js +50 -0
- package/lib/stores/editors/CubeSortRows.js.map +1 -0
- package/lib/stores/fixtures/CubeNorthwindModel.d.ts +7 -0
- package/lib/stores/fixtures/CubeNorthwindModel.d.ts.map +1 -1
- package/lib/stores/fixtures/CubeNorthwindModel.js +99 -87
- package/lib/stores/fixtures/CubeNorthwindModel.js.map +1 -1
- package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts +26 -0
- package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts.map +1 -0
- package/lib/stores/fixtures/CubeSalesDuckDbModel.js +46 -0
- package/lib/stores/fixtures/CubeSalesDuckDbModel.js.map +1 -0
- package/lib/stores/fixtures/CubeSampleSql.d.ts +34 -0
- package/lib/stores/fixtures/CubeSampleSql.d.ts.map +1 -0
- package/lib/stores/fixtures/CubeSampleSql.js +64 -0
- package/lib/stores/fixtures/CubeSampleSql.js.map +1 -0
- package/lib/stores/fixtures/CubeSportsModel.d.ts +27 -0
- package/lib/stores/fixtures/CubeSportsModel.d.ts.map +1 -0
- package/lib/stores/fixtures/CubeSportsModel.js +158 -0
- package/lib/stores/fixtures/CubeSportsModel.js.map +1 -0
- package/lib/stores/fixtures/CubeTradesModel.d.ts +33 -0
- package/lib/stores/fixtures/CubeTradesModel.d.ts.map +1 -0
- package/lib/stores/fixtures/CubeTradesModel.js +227 -0
- package/lib/stores/fixtures/CubeTradesModel.js.map +1 -0
- package/lib/stores/source-picker/CubeCsvSetupSql.d.ts +71 -0
- package/lib/stores/source-picker/CubeCsvSetupSql.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeCsvSetupSql.js +392 -0
- package/lib/stores/source-picker/CubeCsvSetupSql.js.map +1 -0
- package/lib/stores/source-picker/CubeDataProductTabState.d.ts +215 -0
- package/lib/stores/source-picker/CubeDataProductTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeDataProductTabState.js +766 -0
- package/lib/stores/source-picker/CubeDataProductTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts +163 -0
- package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeDirectConnectionTabState.js +668 -0
- package/lib/stores/source-picker/CubeDirectConnectionTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeIngestTabState.d.ts +127 -0
- package/lib/stores/source-picker/CubeIngestTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeIngestTabState.js +510 -0
- package/lib/stores/source-picker/CubeIngestTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeInlineModelTabState.d.ts +203 -0
- package/lib/stores/source-picker/CubeInlineModelTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeInlineModelTabState.js +734 -0
- package/lib/stores/source-picker/CubeInlineModelTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeProjectTabState.d.ts +77 -0
- package/lib/stores/source-picker/CubeProjectTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeProjectTabState.js +206 -0
- package/lib/stores/source-picker/CubeProjectTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeServiceTabState.d.ts +74 -0
- package/lib/stores/source-picker/CubeServiceTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeServiceTabState.js +216 -0
- package/lib/stores/source-picker/CubeServiceTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.d.ts +60 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.js +45 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.js.map +1 -0
- package/package.json +12 -7
- package/src/__lib__/LegendCubeCommand.ts +12 -0
- package/src/__lib__/LegendCubeDataProductLabels.ts +91 -0
- package/src/__lib__/LegendCubeDirectConnectionLabels.ts +111 -0
- package/src/__lib__/LegendCubeFunctionLabels.ts +41 -0
- package/src/__lib__/LegendCubeHelpText.ts +48 -2
- package/src/__lib__/LegendCubeIngestLabels.ts +40 -0
- package/src/__lib__/LegendCubeLabels.ts +327 -12
- package/src/__lib__/LegendCubeProjectLabels.ts +25 -0
- package/src/__lib__/LegendCubeProjectSourceLabels.ts +26 -0
- package/src/__lib__/LegendCubeServiceLabels.ts +41 -0
- package/src/__lib__/LegendCubeTesting.ts +8 -0
- package/src/__test-utils__/CubeCanvasTestUtils.ts +1 -1
- package/src/__test-utils__/CubeConnectionTestSupport.ts +45 -0
- package/src/__test-utils__/CubeDirectConnectionFixtures.ts +70 -0
- package/src/__test-utils__/CubeEngineTestSupport.ts +40 -1
- package/src/__test-utils__/CubeExpressionTestUtils.ts +146 -0
- package/src/__test-utils__/CubeFunctionTestOutline.ts +78 -0
- package/src/__test-utils__/CubeLambdaCorpus.ts +137 -0
- package/src/__test-utils__/CubeOperationsTestUtils.ts +93 -18
- package/src/__test-utils__/CubePageTestUtils.tsx +69 -0
- package/src/__test-utils__/CubeTestApplication.ts +46 -2
- package/src/__test-utils__/FakeCubeConnectionExplorer.ts +111 -0
- package/src/__test-utils__/FakeCubeDataProductCatalog.ts +227 -0
- package/src/__test-utils__/FakeCubeEngine.ts +52 -1
- package/src/__test-utils__/FakeCubeIngestCatalog.ts +198 -0
- package/src/__test-utils__/FakeCubeProjectCatalog.ts +89 -0
- package/src/__test-utils__/FakeCubeServiceCatalog.ts +57 -0
- package/src/components/CubeAddItems.tsx +186 -0
- package/src/components/CubeDialogTheme.ts +25 -0
- package/src/components/CubeEditor.tsx +195 -140
- package/src/components/CubeEntrySourceBanner.tsx +64 -0
- package/src/components/CubeFileMenu.tsx +127 -0
- package/src/components/CubeLambdaImportBanner.tsx +97 -0
- package/src/components/CubeNodeIcon.tsx +20 -0
- package/src/components/CubeSchemaColumnsTable.tsx +54 -0
- package/src/components/canvas/CubeCanvas.tsx +94 -20
- package/src/components/canvas/CubeCanvasContextMenu.tsx +64 -32
- package/src/components/canvas/CubeCanvasDnd.ts +16 -9
- package/src/components/canvas/CubeCanvasElements.ts +84 -5
- package/src/components/canvas/CubeCanvasLayout.ts +1 -1
- package/src/components/canvas/CubeCanvasNode.tsx +88 -43
- package/src/components/canvas/CubeCanvasNodeFocus.ts +37 -0
- package/src/components/canvas/CubeNodeEditorAnchor.ts +82 -0
- package/src/components/dev-settings/CubeDevSettings.tsx +154 -0
- package/src/components/editors/CubeAggregationRowEditor.tsx +224 -0
- package/src/components/editors/CubeColumnChecklist.tsx +136 -0
- package/src/components/editors/CubeColumnPicker.tsx +6 -3
- package/src/components/editors/CubeConcatEditor.tsx +374 -0
- package/src/components/editors/CubeDataProductSourceEditor.tsx +134 -0
- package/src/components/editors/CubeDifferenceEditor.tsx +87 -0
- package/src/components/editors/CubeExpressionFilterEditor.tsx +193 -0
- package/src/components/editors/CubeExtendEditor.tsx +271 -0
- package/src/components/editors/CubeFilterEditor.tsx +20 -1
- package/src/components/editors/CubeFunctionSourceEditor.tsx +140 -0
- package/src/components/editors/CubeGroupEditor.tsx +135 -0
- package/src/components/editors/CubeIngestSourceEditor.tsx +104 -0
- package/src/components/editors/CubeJoinEditor.tsx +34 -135
- package/src/components/editors/CubeJoinKeyRows.tsx +183 -0
- package/src/components/editors/CubeNodeEditorPanel.tsx +111 -36
- package/src/components/editors/CubeNodeEditorPopper.tsx +191 -0
- package/src/components/editors/CubeNodeEditorRegistry.ts +33 -0
- package/src/components/editors/CubePartitionEditor.tsx +208 -0
- package/src/components/editors/CubePivotEditor.tsx +277 -0
- package/src/components/editors/CubeRenameEditor.tsx +10 -5
- package/src/components/editors/CubeRestrictEditor.tsx +9 -3
- package/src/components/editors/CubeServiceSourceEditor.tsx +77 -0
- package/src/components/editors/CubeSortEditor.tsx +20 -142
- package/src/components/editors/CubeSortRowEditor.tsx +176 -0
- package/src/components/editors/CubeSourceEditor.tsx +42 -30
- package/src/components/editors/CubeWarehouseControl.tsx +113 -0
- package/src/components/editors/useCubeNodeEditorDismiss.ts +103 -0
- package/src/components/examples/CubeExamplesDialog.tsx +199 -0
- package/src/components/grid/CubeColumnFormatDialog.tsx +289 -0
- package/src/components/grid/CubeDrilldownBar.tsx +219 -0
- package/src/components/grid/CubeGridRegion.tsx +214 -60
- package/src/components/grid/CubeGridValues.ts +201 -1
- package/src/components/grid/CubeResultGrid.tsx +461 -43
- package/src/components/grid/CubeRunStatsPanel.tsx +156 -0
- package/src/components/grid/CubeServerSideGrid.tsx +200 -0
- package/src/components/grid/CubeSqlDialog.tsx +90 -0
- package/src/components/grid/CubeSqlFormat.ts +37 -0
- package/src/components/palette/CubePalette.tsx +70 -19
- package/src/components/show-pure/CubeShowPureDialog.tsx +19 -5
- package/src/components/source-picker/CubeDataProductTab.tsx +486 -0
- package/src/components/source-picker/CubeDirectConnectionTab.tsx +352 -0
- package/src/components/source-picker/CubeFunctionSteps.tsx +244 -0
- package/src/components/source-picker/CubeIngestTab.tsx +312 -0
- package/src/components/source-picker/CubeInlineModelTab.tsx +220 -0
- package/src/components/source-picker/CubePickerListItem.tsx +118 -0
- package/src/components/source-picker/CubePickerStep.tsx +49 -0
- package/src/components/source-picker/CubeProjectTab.tsx +117 -0
- package/src/components/source-picker/CubeServiceTab.tsx +151 -0
- package/src/components/source-picker/CubeSourcePicker.tsx +99 -228
- package/src/components/source-picker/CubeTablePreview.tsx +49 -0
- package/src/components/spec-transfer/CubeImportPureDialog.tsx +122 -0
- package/src/components/spec-transfer/CubeSpecTransferDialog.tsx +22 -9
- package/src/graph-manager/CubeConnectionExplorer.ts +106 -0
- package/src/graph-manager/CubeDataProduct.ts +150 -0
- package/src/graph-manager/CubeDataProductCatalog.ts +256 -0
- package/src/graph-manager/CubeDirectConnection.ts +67 -0
- package/src/graph-manager/CubeEngine.ts +94 -2
- package/src/graph-manager/CubeEngineClientSettings.ts +64 -0
- package/src/graph-manager/CubeIngest.ts +159 -0
- package/src/graph-manager/CubeIngestCatalog.ts +202 -0
- package/src/graph-manager/CubeLakehouseEnvironment.ts +27 -0
- package/src/graph-manager/CubeLakehouseRuntime.ts +43 -0
- package/src/graph-manager/CubeProject.ts +117 -0
- package/src/graph-manager/CubeProjectCatalog.ts +40 -0
- package/src/graph-manager/CubeService.ts +29 -0
- package/src/graph-manager/CubeServiceCatalog.ts +35 -0
- package/src/graph-manager/protocol/pure/CubeEngineBuilder.ts +256 -2
- package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.ts +251 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.ts +107 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.ts +339 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeDirectModel.ts +151 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.ts +45 -4
- package/src/graph-manager/protocol/pure/v1/V1_CubeExpression.ts +89 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.ts +312 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.ts +227 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeIngestModel.ts +174 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.ts +141 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.ts +471 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.ts +153 -18
- package/src/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.ts +3 -1
- package/src/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.ts +361 -0
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.ts +122 -0
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.ts +744 -0
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts +1083 -25
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.ts +459 -0
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.ts +152 -0
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.ts +92 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.ts +61 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.ts +337 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.ts +206 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.ts +48 -2
- package/src/index.ts +52 -2
- package/src/stores/CubeAddPlacement.ts +87 -0
- package/src/stores/CubeDataProductRecheck.ts +93 -0
- package/src/stores/CubeDataProductRuntimeState.ts +256 -0
- package/src/stores/CubeDataProductWarehouse.ts +40 -0
- package/src/stores/CubeDevSettingsState.ts +117 -0
- package/src/stores/CubeEditorState.ts +1030 -92
- package/src/stores/CubeEngineChecks.ts +240 -0
- package/src/stores/CubeEntrySource.ts +278 -0
- package/src/stores/CubeExamples.ts +526 -0
- package/src/stores/CubeExamplesState.ts +110 -0
- package/src/stores/CubeExecutionState.ts +50 -62
- package/src/stores/CubeExportState.ts +196 -0
- package/src/stores/CubeExpressionFilterCheck.ts +218 -0
- package/src/stores/CubeExtendTyping.ts +251 -0
- package/src/stores/CubeFunctionRecheck.ts +97 -0
- package/src/stores/CubeGridFetcher.ts +302 -0
- package/src/stores/CubeGridQuickActions.ts +97 -20
- package/src/stores/CubeGridState.ts +450 -0
- package/src/stores/CubeHost.ts +119 -1
- package/src/stores/CubeIngestRecheck.ts +92 -0
- package/src/stores/CubeLambdaImportState.ts +434 -0
- package/src/stores/CubeLambdaSources.ts +390 -0
- package/src/stores/CubeNodeEditorState.ts +278 -9
- package/src/stores/CubeQueryRun.ts +169 -0
- package/src/stores/CubeRunStatsState.ts +91 -0
- package/src/stores/CubeRunningStepLambda.ts +62 -0
- package/src/stores/CubeServiceRecheck.ts +53 -0
- package/src/stores/CubeShowPureState.ts +57 -15
- package/src/stores/CubeSourcePickerState.ts +231 -325
- package/src/stores/CubeSpecTransferState.ts +2 -2
- package/src/stores/LocalModelCatalog.ts +27 -3
- package/src/stores/editors/CubeAggregationRows.ts +299 -0
- package/src/stores/editors/CubeConcatDraft.ts +49 -0
- package/src/stores/editors/CubeDifferenceDraft.ts +147 -0
- package/src/stores/editors/CubeExpressionFilterDraft.ts +385 -0
- package/src/stores/editors/CubeExtendDraft.ts +532 -0
- package/src/stores/editors/CubeFunctionDraft.ts +92 -0
- package/src/stores/editors/CubeGroupDraft.ts +145 -0
- package/src/stores/editors/CubeJoinDraft.ts +130 -41
- package/src/stores/editors/CubeJoinKeyPairs.ts +68 -0
- package/src/stores/editors/CubeNodeDraft.ts +26 -6
- package/src/stores/editors/CubeNodeDraftRegistry.ts +52 -2
- package/src/stores/editors/CubePartitionDraft.ts +214 -0
- package/src/stores/editors/CubePivotDraft.ts +355 -0
- package/src/stores/editors/CubeSortDraft.ts +17 -54
- package/src/stores/editors/CubeSortRows.ts +84 -0
- package/src/stores/fixtures/CubeNorthwindModel.ts +103 -88
- package/src/stores/fixtures/CubeSalesDuckDbModel.ts +54 -0
- package/src/stores/fixtures/CubeSampleSql.ts +85 -0
- package/src/stores/fixtures/CubeSportsModel.ts +182 -0
- package/src/stores/fixtures/CubeTradesModel.ts +276 -0
- package/src/stores/source-picker/CubeCsvSetupSql.ts +444 -0
- package/src/stores/source-picker/CubeDataProductTabState.ts +966 -0
- package/src/stores/source-picker/CubeDirectConnectionTabState.ts +846 -0
- package/src/stores/source-picker/CubeIngestTabState.ts +625 -0
- package/src/stores/source-picker/CubeInlineModelTabState.ts +928 -0
- package/src/stores/source-picker/CubeProjectTabState.ts +250 -0
- package/src/stores/source-picker/CubeServiceTabState.ts +288 -0
- package/src/stores/source-picker/CubeSourcePickerTab.ts +79 -0
- package/tsconfig.json +139 -0
package/README.md
CHANGED
|
@@ -7,23 +7,30 @@ It holds the page (the canvas, the palette, the side-panel editors, the source p
|
|
|
7
7
|
stores, the engine port with its `v1/` adapter, and the bundled model catalog. Legend Query hosts the page at
|
|
8
8
|
`/query/cube`.
|
|
9
9
|
|
|
10
|
-
**Status:** work in progress, version 0.0.x. This version has relational tables
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
**Status:** work in progress, version 0.0.x. This version has relational tables (from a model or a direct connection to H2
|
|
11
|
+
or DuckDB), the access points of deployed data products and the data sets of deployed ingest definitions (both beta),
|
|
12
|
+
Join, Sort, Group, Pivot (on the databases that run it), Filter, Restrict, Rename, Distinct, Drop, Limit, Slice, Concat, Compare Column Values (Difference),
|
|
13
|
+
window functions (Apply Window Functions), computed columns (Extend Columns, whose expressions the engine checks) and
|
|
14
|
+
rows kept by a Pure condition (Filter by Expression, which the engine checks too), with one model, one runtime and one database, data product project or producer deployment per query. A cube is kept only through Export and Import of its spec, marked "(dev)", until
|
|
15
|
+
the Cube store exists. A pasted model is kept in the cube. The results grid works server-side by default: a header's
|
|
16
|
+
sort and each drill-down level run on the engine, from the run on screen; local mode groups, pivots and filters the
|
|
17
|
+
run's rows in the browser. The grid exports the whole query as CSV through the engine and the rows shown as Excel, lists
|
|
18
|
+
the latest runs with their SQL, and formats number columns (a number, an ISO currency or a percent). Nothing links to the page yet, there is no redo, and Cube sends no telemetry.
|
|
13
19
|
|
|
14
20
|
## Layout
|
|
15
21
|
|
|
16
|
-
| Folder | Holds
|
|
17
|
-
| ------------------------------------- |
|
|
18
|
-
| `src/components/` | the page, `CubeEditor`, and its parts: `canvas/`, `palette/`, `editors/`, `source-picker/`, `grid/`, `show-pure/`, `spec-transfer/`
|
|
19
|
-
| `src/stores/` | the MobX state of the page, its parts and the
|
|
20
|
-
| `src/graph-manager/` | the engine port (`CubeEngine.ts`) and
|
|
21
|
-
| `src/graph-manager/protocol/pure/v1/` | the engine adapter, `V1_LegendCubeEngine`: the lambda serializer, the result and relation-type readers, the error mapping
|
|
22
|
-
| `src/__lib__/` | labels, help text, the command config and test ids
|
|
23
|
-
| `src/__test-utils__/` | the fake engine and the helpers of the tests
|
|
24
|
-
| `style/` | the stylesheet, built to `lib/index.css`
|
|
25
|
-
|
|
26
|
-
It depends on `@finos/legend-cube`, legend-graph, legend-application, legend-art, legend-lego
|
|
22
|
+
| Folder | Holds |
|
|
23
|
+
| ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
24
|
+
| `src/components/` | the page, `CubeEditor`, and its parts: `canvas/`, `palette/`, `editors/`, `source-picker/`, `grid/`, `show-pure/`, `spec-transfer/` |
|
|
25
|
+
| `src/stores/` | the MobX state of the page, its parts and the node editor; `editors/` (node drafts); `LocalModelCatalog` and `fixtures/` (the bundled model); `CubeHost` |
|
|
26
|
+
| `src/graph-manager/` | the engine port (`CubeEngine.ts`), the connection explorer, data product catalog and ingest catalog ports, and their builders |
|
|
27
|
+
| `src/graph-manager/protocol/pure/v1/` | the engine adapter, `V1_LegendCubeEngine`: the lambda serializer, the result and relation-type readers, the error mapping |
|
|
28
|
+
| `src/__lib__/` | labels, help text, the command config and test ids |
|
|
29
|
+
| `src/__test-utils__/` | the fake engine and the helpers of the tests |
|
|
30
|
+
| `style/` | the stylesheet, built to `lib/index.css` |
|
|
31
|
+
|
|
32
|
+
It depends on `@finos/legend-cube`, legend-graph, legend-application, legend-art, legend-lego, legend-shared, and the
|
|
33
|
+
depot, lakehouse and storage clients, never
|
|
27
34
|
on an application package (`legend-application-*`) or on legend-query-builder.
|
|
28
35
|
|
|
29
36
|
**The V1 rule:** `V1_*` protocol code lives under `src/graph-manager/protocol/pure/v1/`. The one product file outside
|
|
@@ -36,9 +43,20 @@ The engine-backed tests in `src/__tests__/` are an exception: they need both the
|
|
|
36
43
|
|
|
37
44
|
`src/index.ts` exports:
|
|
38
45
|
|
|
39
|
-
- `CubeEditor`, the page, and `CubeHost`, what a host gives it;
|
|
46
|
+
- `CubeEditor`, the page, and `CubeHost`, what a host gives it; `CubeEntrySource`, a source a link asks the page to
|
|
47
|
+
start with (`initialSource`), and `formatCubeAccessPointEntryId` with its `CubeAccessPointEntry`, which write a
|
|
48
|
+
data product access point's link id ([hosting.md](./docs/hosting.md));
|
|
40
49
|
- the engine port, everything in `CubeEngine.ts` (`CubeEngine`, `CubeEngineError`, `CubeEngineErrorKind`,
|
|
41
50
|
`CubeResult`, `CubeModelOutline`, …), with `buildCubeEngine` and `CubeEngineConfig`;
|
|
51
|
+
- the connection explorer port, everything in `CubeConnectionExplorer.ts`, with `buildCubeConnectionExplorer`;
|
|
52
|
+
- data products: everything in `CubeDataProduct.ts` (the model kind, its runtime path, the environment types, the
|
|
53
|
+
warehouse rule) and `CubeDataProductCatalog.ts` (the catalog port and its classes), with
|
|
54
|
+
`buildCubeDataProductCatalog`, `buildCubeLakehouseEnvironment`, `CubeLakehouseServices`, `CubeLakehouseEnvironment`
|
|
55
|
+
and `getCubeRememberedWarehouse`;
|
|
56
|
+
- ingest data sets: everything in `CubeIngest.ts` (the model kind, its runtime path, the saved settings) and
|
|
57
|
+
`CubeIngestCatalog.ts` (the catalog port and its classes), with `buildCubeIngestCatalog`;
|
|
58
|
+
- published projects: everything in `CubeProject.ts` (the pointer model and its checks) and `CubeProjectCatalog.ts`
|
|
59
|
+
(the catalog port), with `buildCubeProjectCatalog`;
|
|
42
60
|
- `LocalModelCatalog` and `BUNDLED_MODELS`;
|
|
43
61
|
- `LEGEND_CUBE_COMMAND_CONFIG` and `LEGEND_CUBE_COMMAND_KEY`, the page's shortcuts;
|
|
44
62
|
- `LEGEND_CUBE_TEST_ID`;
|
|
@@ -49,17 +67,38 @@ The engine-backed tests in `src/__tests__/` are an exception: they need both the
|
|
|
49
67
|
The node-type registries (drafts, editors, help text and icons) are internal: there is no plugin API for node types
|
|
50
68
|
yet.
|
|
51
69
|
|
|
52
|
-
##
|
|
70
|
+
## Sources
|
|
71
|
+
|
|
72
|
+
A cube reads one kind of source: relational tables (from a model, or from a database through a direct connection), the
|
|
73
|
+
access points of deployed data products, or the data sets of deployed ingest definitions (both beta; PLAN §6.7, §6.8).
|
|
74
|
+
The "Add a source" dialog has a tab per way to find a source, each implementing `CubeSourcePickerTab`
|
|
75
|
+
(`src/stores/source-picker/`): Model, Database connection, Data product and Ingest. A host offers the last three by
|
|
76
|
+
giving the page a `connectionExplorer`, a `dataProductCatalog` and an `ingestCatalog` (see [hosting](./docs/hosting.md)).
|
|
77
|
+
|
|
78
|
+
A new kind of source needs, in the core, a `SourceDefinition` (node, codec, emitter and its query rules) and, in the
|
|
79
|
+
builder, a tab, a Source panel editor, help text and an icon, and its branch in the engine's implementation, which
|
|
80
|
+
builds the model each call runs on from the cube's saved model kind (`src/graph-manager/CubeDirectConnection.ts`,
|
|
81
|
+
`CubeDataProduct.ts` and `CubeIngest.ts` are the examples).
|
|
82
|
+
|
|
83
|
+
Tables of a published project's Databases come through the Project Database tab (PLAN §6.3), which extends the Sample Data tab: the
|
|
84
|
+
cube saves the engine's pointer to the project at a released version, and the host's `projectCatalog` lists projects,
|
|
85
|
+
versions and outlines from its depot.
|
|
86
|
+
|
|
87
|
+
## Samples and examples
|
|
53
88
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
89
|
+
The Sample Data tab bundles three datasets: Northwind (without Cube's test tables) and two made-up, seeded samples, Sports and Trades
|
|
90
|
+
(`src/stores/fixtures/`), each an in-memory H2 database filled by its setup SQL. The Examples dialog (the header's
|
|
91
|
+
Examples button) opens one of seven example cubes over them (`src/stores/CubeExamples.ts`) in place of the cube, then
|
|
92
|
+
runs it, or starts a new cube on a dataset (PLAN §6.9). An
|
|
93
|
+
example is built in code, so a new one needs no saved spec; add it to `CUBE_EXAMPLES`, and the engine test
|
|
94
|
+
`CubeExamples.engine-roundtrip-test.ts` opens, types and runs it.
|
|
58
95
|
|
|
59
96
|
## Documentation
|
|
60
97
|
|
|
61
98
|
- [Hosting the page](./docs/hosting.md): what a host gives the page, the shortcuts, the stylesheet, and the dev loop.
|
|
62
99
|
- [Testing](./docs/testing.md): the test groups, the fake engine, and the tests against a real engine.
|
|
100
|
+
- [Demo](./docs/demo/README.md): a walkthrough on the sample data, its [fast notes](./docs/demo/DEMO-FAST-NOTES.md), and
|
|
101
|
+
specs to import at each step.
|
|
63
102
|
- [Adding an operation](./docs/adding-an-operation.md): the builder half of a new transform. The core half is in
|
|
64
103
|
[`@finos/legend-cube`](../legend-cube/docs/adding-an-operation.md).
|
|
65
104
|
- [The plan](../../docs/wip/legend-cube/PLAN.md) and [the known issues](../../docs/wip/legend-cube/ISSUES.md).
|
|
@@ -5,21 +5,43 @@ node, its messages, emitter and codec, and its entry in the node registry. The p
|
|
|
5
5
|
canvas read that registry, so the new type shows there with no change here.
|
|
6
6
|
|
|
7
7
|
The builder adds four pieces: a draft, an editor and help text, in registries keyed by node type, and an icon, keyed by
|
|
8
|
-
the icon name the node's definition gives. Join and Filter are the examples to follow
|
|
8
|
+
the icon name the node's definition gives. Join and Filter are the examples to follow; Group for an editor of rows
|
|
9
|
+
(`CubeGroupEditor`, `CubeGroupDraft`), Concat for a two-input editor with fixes and one setting
|
|
10
|
+
(`CubeConcatEditor`, `CubeConcatDraft`), Partition for an editor made of the shared rows
|
|
11
|
+
(`CubePartitionEditor`, `CubePartitionDraft`), Difference for a two-input editor sharing Join's key rows
|
|
12
|
+
(`CubeDifferenceEditor`, `CubeDifferenceDraft`), Extend for an editor that asks the engine before Apply
|
|
13
|
+
(`CubeExtendEditor`, `CubeExtendDraft`), Filter by Expression for one condition the engine checks
|
|
14
|
+
(`CubeExpressionFilterEditor`, `CubeExpressionFilterDraft`), and Pivot for an editor that loads values from the engine
|
|
15
|
+
through `runCubeQuery` (`CubePivotEditor`, `CubePivotDraft`). A node type a database can't run is greyed, with the
|
|
16
|
+
reason, in the palette and the Add menus (`getCubeAddDatabaseProblem` in `CubeAddPlacement.ts`): nothing to add for a
|
|
17
|
+
new type but the core's rule.
|
|
9
18
|
|
|
10
19
|
## 1. A draft
|
|
11
20
|
|
|
12
|
-
The
|
|
13
|
-
as one undo step (**Cancel** drops
|
|
21
|
+
The node editor floats below its node (PLAN §11.8) and never edits the document: an editor edits a draft, and the
|
|
22
|
+
editor's **Apply**, or closing it any way but **Cancel**, stores the draft's node as one undo step (**Cancel** drops
|
|
23
|
+
it).
|
|
14
24
|
|
|
15
25
|
- In `src/stores/editors/Cube<Type>Draft.ts`, extend `CubeNodeDraft<Type>`: observable fields for the settings being
|
|
16
26
|
edited, actions that change them, and `build()`. `build()` returns `original` itself while nothing was edited, and
|
|
17
27
|
otherwise a new node with the same id and `rest`. The panel also treats a node that saves the same as `original`
|
|
18
28
|
as no change.
|
|
19
|
-
- Register a factory in `CUBE_NODE_DRAFT_FACTORIES` (`src/stores/editors/CubeNodeDraftRegistry.ts`)
|
|
29
|
+
- Register a factory in `CUBE_NODE_DRAFT_FACTORIES` (`src/stores/editors/CubeNodeDraftRegistry.ts`); it gets the
|
|
30
|
+
editor state too, for a draft that needs the engine.
|
|
31
|
+
- A draft that must ask the engine before its node can be stored, as Extend's Validate does, says why in
|
|
32
|
+
`applyDisabledReason`: the panel then disables Apply with that reason as its title, and shows it in place of the
|
|
33
|
+
Problems list until it is `undefined`. Its engine work is a MobX `flow` on the draft; the node it builds then holds
|
|
34
|
+
the engine's answer (Extend's lambdas and typing), so it needs no more engine work once applied. While the reason
|
|
35
|
+
is set, Apply refuses the draft, and closing the panel or opening another node keeps it open with a notice
|
|
36
|
+
(`getEditorKeptOpenNotice`) rather than storing or dropping the edits.
|
|
37
|
+
- A draft whose node the cube may replace underneath it with one that differs in nothing it edits, such as an Extend
|
|
38
|
+
typed in the background, overrides `follow(node)` to go on from the new node, keeping its rows; by default the panel
|
|
39
|
+
drops the edits with a notice (`CubeNodeEditorState.sync`).
|
|
20
40
|
- A transform with nothing to set, such as Distinct, has no draft: it registers an editor that only describes it
|
|
21
41
|
(`CubeDistinctEditor`) and is listed in `CUBE_NODE_TYPES_WITHOUT_SETTINGS`, which the registry test skips when it
|
|
22
|
-
asks for a factory. The panel then shows no Apply or Cancel (PLAN §7.4 item 2)
|
|
42
|
+
asks for a factory. The panel then shows no Apply or Cancel, and no Problems list (PLAN §7.4 item 2): every
|
|
43
|
+
transform that can be invalid has a draft. When such a transform gains a setting, as Concat did with Convert types,
|
|
44
|
+
give it a draft and take it off the list.
|
|
23
45
|
|
|
24
46
|
## 2. An editor
|
|
25
47
|
|
|
@@ -27,8 +49,28 @@ as one undo step (**Cancel** drops it).
|
|
|
27
49
|
`editorState`, `draft`, `inputSchemas` (the inputs' schemas in port order; the panel shows the editor only once all
|
|
28
50
|
are there) and `readOnly` (a cube saved by a newer version: show, don't edit).
|
|
29
51
|
- It changes only the draft. An action on the document, such as Join's Swap Inputs, goes through
|
|
30
|
-
`editorState.nodeEditor`, which applies the draft first.
|
|
52
|
+
`editorState.nodeEditor`, which applies the draft first. A fix that adds nodes, as Join's "Rename them" and Concat's
|
|
53
|
+
"Rename them" and "Drop them" do, is a `can…` getter and an action there, made from the core's fix on the query with
|
|
54
|
+
the draft applied (`queryWithEdits`), as one undo step, the panel staying on the node. The editor shows the fix's
|
|
55
|
+
changes from the core's plan, given the draft's settings, so the editor and the store agree on what it offers.
|
|
31
56
|
- `CubeColumnPicker` picks a column from a schema, and `CubeValueEditor` takes a value as a column's type wants it.
|
|
57
|
+
- Join's key-pair rows are shared with Difference (`CubeJoinKeyRows`, over a `CubeJoinKeysDraft` from
|
|
58
|
+
`CubeJoinKeyPairs.ts`); `CubeColumnChecklist` takes a reason per column (`unpickableReason`), as Difference's
|
|
59
|
+
difference columns do.
|
|
60
|
+
- A code editor is legend-lego's `CodeEditor` (language `pure`), with the error it should underline built from the
|
|
61
|
+
engine's location (`CubeEngineError.location`, as a legend-graph `CompilationError` with its `SourceInformation`),
|
|
62
|
+
as `CubeExtendEditor` does. Parse a text under a source id that names the row, so a parse error, and a typing error
|
|
63
|
+
on the text just parsed, point back to it. A stored lambda has no locations, and a plan has none either: the
|
|
64
|
+
Extend draft finds the row of a plan error by planning the columns' prefixes.
|
|
65
|
+
- Rows that Group, Sort and Partition share: `CubeAggregationRowEditor` (column, function and output name, given its
|
|
66
|
+
function list, the `AggregationUse` and what a function that takes no column shows in the column's place, and a
|
|
67
|
+
field for a function's setting, Lag's and Lead's offset or NTile's bucket count, when the editor gives
|
|
68
|
+
`onSetting`; the row keeps a setting as typed text, parsed as Limit's size is),
|
|
69
|
+
`CubeSortRowEditor` (column, direction, move and remove; `getSortRowProblems`, `getTakenSortColumns`) and
|
|
70
|
+
`CubeColumnChecklist` (the input's columns, ticked, those that can't be compared shown but not tickable), with their
|
|
71
|
+
drafts' helpers in `CubeAggregationRows.ts` and `CubeSortRows.ts`. They are driven by callbacks, so a new editor
|
|
72
|
+
wires them to its own draft. Judge a row with the node Apply would store (`draft.build()`), as the Partition editor
|
|
73
|
+
does, so the row and the panel's Problems list agree.
|
|
32
74
|
`isColumnDisabled` gives the reason a column can't be picked, shown after its type, as Sort does for a type that can't
|
|
33
75
|
be sorted (`isSortableType`) and a column another row has; the column stays shown.
|
|
34
76
|
- A whole-number setting (a size, a row index) is a `CubeIntegerField` over text the draft keeps as typed, read with
|
|
@@ -38,10 +80,14 @@ as one undo step (**Cancel** drops it).
|
|
|
38
80
|
example.
|
|
39
81
|
- Give each control a stable `aria-label` (numbered per row in a list, e.g. `Sort column 2`): the tests and the
|
|
40
82
|
browser rehearsal find controls by it.
|
|
41
|
-
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
`CubeColumnPicker` is, and no editor measures the
|
|
83
|
+
- The editor shows in the floating node editor (PLAN §11.8): 432px wide, its body between 80px and a third of the
|
|
84
|
+
window, which scrolls. Fit that width (wrap long names with `break-words` or `break-all`), and give no list a
|
|
85
|
+
height cap or a scroller of its own: the body is the one scroller. Column and direction pickers stay native
|
|
86
|
+
`<select>` elements, as `CubeColumnPicker` is, and no editor measures the editor or reads its size.
|
|
87
|
+
- Text a field stores on blur is kept when the editor closes: the editor's blur runs first. Text an editor keeps in
|
|
88
|
+
React state can register with `nodeEditor.addFlusher` to be applied on close, as the data product warehouse does.
|
|
89
|
+
- A dropdown, picker or dialog opened from an editor and shown elsewhere (a portal) must be one of MUI's layers, or
|
|
90
|
+
hold the editor open with `nodeEditor.holdOpen()` while it is open: otherwise a press in it closes the editor.
|
|
45
91
|
- A Tailwind class no other file uses yet, such as an arbitrary `grid-cols-[…]`, does nothing in the dev server until
|
|
46
92
|
the deployment's Tailwind build runs again ([hosting.md](./hosting.md)); jsdom tests don't see it either way, so
|
|
47
93
|
check a new layout in the browser.
|
|
@@ -56,6 +102,35 @@ text (§17.9) where it has one.
|
|
|
56
102
|
|
|
57
103
|
Map the icon name of the node's definition to a legend-art icon in `NODE_ICONS` (`src/components/CubeNodeIcon.tsx`).
|
|
58
104
|
|
|
105
|
+
## A node the engine types or checks
|
|
106
|
+
|
|
107
|
+
Extend's types come from the engine (the core guide), and so does the word that a Filter by Expression's condition is
|
|
108
|
+
one Boolean of a row (PLAN §11.11). `CubeEditorState` checks every such node that waits on `ERR_TYPING` or
|
|
109
|
+
`ERR_CHECKING` through a reaction (`nodesToCheck`, `checkExpressions`), in one `typeLambdas` call, outside the undo
|
|
110
|
+
history, through one path for both kinds (`src/stores/CubeEngineChecks.ts`): each kind gives a request, its lambdas
|
|
111
|
+
and how to read the engine's answers into the node to store. The
|
|
112
|
+
answer replaces the very nodes sent, in the cube shown and in the undo snapshots that give the engine the same input
|
|
113
|
+
(`replaceOutsideHistory` takes a predicate per snapshot), and an answer for a node changed meanwhile is dropped. Each
|
|
114
|
+
node is typed as a chain after its input's relation, one chain per first k columns (`src/stores/CubeExtendTyping.ts`),
|
|
115
|
+
so a failure names its column. A condition is checked as its input's relation filtered with it, and typed alone as an
|
|
116
|
+
extend column under a name no input column has, which names its type when it isn't one Boolean
|
|
117
|
+
(`src/stores/CubeExpressionFilterCheck.ts`).
|
|
118
|
+
|
|
119
|
+
A chain's types depend on what the engine sees of the input, which Cube's schema doesn't fully show (an Extend's
|
|
120
|
+
columns are nullable to Cube, `[1]` to the engine after `toOne()`). So each typing records `upstream`, a digest of the
|
|
121
|
+
input's emitted relation and the model (`getCubeExtendUpstream`), and the editor adds its own query rule to
|
|
122
|
+
`analysis` (`createStaleCubeEngineCheckRule`): a node whose digest differs waits on `ERR_TYPING` or `ERR_CHECKING`
|
|
123
|
+
and is checked again. Execute reads that validity as well as the emitter's `canEmit`, since the emitter doesn't know the rule. The
|
|
124
|
+
digest covers the whole relation, filter values included, so any edit above an Extend has it typed again. A typing
|
|
125
|
+
without a digest, as one loaded, is used as it is; on import every Extend is typed once more, as sources are checked
|
|
126
|
+
again, which records one. When the engine can't be reached, a typing still current for its input is kept, with a
|
|
127
|
+
warning. Every way out of `checkExpressions` leaves the node not stale, or the reaction would loop.
|
|
128
|
+
|
|
129
|
+
The canvas shows a waiting node as resolving (`isTypingNode`), the header says so ("checking expressions"), and the
|
|
130
|
+
panel leaves the waiting marker out of its problems. A new node type the engine types or checks joins
|
|
131
|
+
`CubeEngineCheckedNode` and gives `buildCubeEngineCheckRequest` its request, so the reaction, the stale rule, the undo
|
|
132
|
+
snapshots, the kept check offline and the import serve it too; its draft joins F10 in `CubeEditorState`.
|
|
133
|
+
|
|
59
134
|
## Warnings
|
|
60
135
|
|
|
61
136
|
A warning is never an error: it doesn't make the node invalid or keep Execute from running. A warning worked out from
|
|
@@ -65,14 +140,25 @@ changed, is stored in `CubeEditorState.warnings`, by node key. `getNodeWarnings(
|
|
|
65
140
|
node (`legend-cube__node--warning`) and lists them in its tooltip after its errors, and the panel shows each one as a
|
|
66
141
|
`role="status"` line above the editor. A derived warning waits until the nodes it names have no errors of their own.
|
|
67
142
|
|
|
143
|
+
Some warnings belong to one control, not to the node, and the editor shows them under it in the warning colour: Join's
|
|
144
|
+
'type unknown' on a key whose column the model can't type, Concat's on any such column, and the Join and Filter
|
|
145
|
+
editors' warning on a Date that Convert types made from dates and timestamps (`isDateOrTimestampType`), whose dates
|
|
146
|
+
match timestamps only at midnight. An editor must not offer a change it warns about, as Concat's never offers Convert
|
|
147
|
+
types for a column whose real type Cube doesn't know.
|
|
148
|
+
|
|
68
149
|
## Columns that change name
|
|
69
150
|
|
|
70
151
|
The Join editor warns when a join key's column has no type in the model, tracing the column back to its table and the
|
|
71
152
|
table's own name for it with `findColumnOrigins` (`src/stores/editors/CubeJoinDraft.ts`). It requires each node's
|
|
72
153
|
output to have the column, maps a Rename's new name back to its old one, and follows a Join's same-named keys to the
|
|
73
|
-
side the join keeps.
|
|
74
|
-
|
|
75
|
-
|
|
154
|
+
side the join keeps. A Group's keys and its Distinct Value, Min and Max outputs map back to their columns, and its
|
|
155
|
+
counts, sums and averages to none, as a Partition's window functions do, its input columns passing through; a
|
|
156
|
+
Concat's columns come from both inputs under the same name. Every other node is
|
|
157
|
+
taken to pass its input's columns through under the same name: an Extend's input columns do, and its new columns,
|
|
158
|
+
which the input lacks, come from none. A Difference's `x_1` and `x_2` come from `x` on their side, its difference
|
|
159
|
+
from none. If a new transform's output columns aren't its inputs'
|
|
160
|
+
under the same name (a computed column, say), teach `findColumnOrigins` how they map back, or the warning goes missing
|
|
161
|
+
or shows on the wrong column.
|
|
76
162
|
|
|
77
163
|
## Tests
|
|
78
164
|
|
|
@@ -86,6 +172,19 @@ how they map back, or the warning goes missing or shows on the wrong column.
|
|
|
86
172
|
- An engine test of the operation in `src/__tests__/LegendCubeOperations.engine-roundtrip-test.ts` (see
|
|
87
173
|
[Testing](./testing.md)): its lambda as the engine parses the printed Pure, its typing against Cube's inferred
|
|
88
174
|
schema, and what it returns, not its text.
|
|
175
|
+
- A case of the new node type in `src/__tests__/CubeInferenceConformance.engine-roundtrip-test.ts`, whose coverage
|
|
176
|
+
test fails until there is one: the engine must type every node of the case as Cube infers it.
|
|
177
|
+
- If its SQL can differ by database, its shapes at the end of `SHAPES` in
|
|
178
|
+
`src/__tests__/LegendCubeDialects.engine-roundtrip-test.ts` (earlier tests index the first ones by position), so the
|
|
179
|
+
checks every shape gets cover it, and a test of the facts its plans must keep on every database type. A shape some
|
|
180
|
+
database types can't plan at all goes in a list of its own over the types that can: windows are in
|
|
181
|
+
`WINDOW_SHAPES`, over `WINDOW_DATABASE_TYPES` (Spanner, Presto and Composite refuse any window), with the refusal
|
|
182
|
+
pinned.
|
|
183
|
+
|
|
184
|
+
- A draft that waits for the engine is tested against the fake engine's mocks (`parseExpression`, `typeLambdas`,
|
|
185
|
+
`planLambda` in `FakeCubeEngine`), and an editor that changes a draft from the test wraps the change in `act`. An
|
|
186
|
+
editor with a code editor needs `MockedMonacoEditorInstance.getValue.mockReturnValue('')` before it renders: the
|
|
187
|
+
mocked editor holds no text of its own.
|
|
89
188
|
|
|
90
189
|
The `v1/` adapter (`V1_CubeLambdaSerializer`) needs no change while the operation's emitter uses only IR and literal
|
|
91
190
|
kinds it already writes. A new kind of IR node or literal needs its own case there, with a test in
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Demo fast notes
|
|
2
|
+
|
|
3
|
+
## Live build (Trades)
|
|
4
|
+
|
|
5
|
+
1. **Examples → Trades → Start a new cube**: tick **TRADES**, **DESKS** → **Add 2**
|
|
6
|
+
2. **Drop Join Another Input** (lands after TRADES = Left); drag **DESKS → Right**
|
|
7
|
+
- Join columns: **DESK_ID** = **ID** → Apply
|
|
8
|
+
3. **Drop Group by Column**
|
|
9
|
+
- Group by: **DESK**, **REGION**
|
|
10
|
+
- Agg 1: **NOTIONAL_USD** · Sum · `TOTAL_NOTIONAL_USD`
|
|
11
|
+
- Agg 2: Count Rows · `TRADE_COUNT`
|
|
12
|
+
- Apply · **F9** → 6 rows
|
|
13
|
+
4. **Drop Apply Window Functions**
|
|
14
|
+
- Partition: **REGION**
|
|
15
|
+
- Sort: **TOTAL_NOTIONAL_USD** · Descending
|
|
16
|
+
- Function: Rank · `RANK_IN_REGION`
|
|
17
|
+
- Apply · **F9** → Commodities 1, Rates 2, Equities Cash 3 (Americas)
|
|
18
|
+
5. **Drop Extend Columns**
|
|
19
|
+
- Name: `NOTIONAL_MM`
|
|
20
|
+
- Expression: `x | $x.TOTAL_NOTIONAL_USD / 1000000` → Validate
|
|
21
|
+
- Apply · **F9** → Commodities 31.10
|
|
22
|
+
6. **Drop Filter by Expression**
|
|
23
|
+
- `x | $x.NOTIONAL_MM > 25` → Validate
|
|
24
|
+
- Apply · **F9** → 4 rows
|
|
25
|
+
7. **Show SQL** → Close · **Export** (fold the JSON)
|
|
26
|
+
|
|
27
|
+
Duplicate-column error on a Join → open it → **Rename them**.
|
|
28
|
+
|
|
29
|
+
**End spec:** [specs/trades-desks-5-final.cube.json](specs/trades-desks-5-final.cube.json) (Import → F9 → 4 rows).
|
|
30
|
+
Steps in between: `specs/trades-desks-1-joined` … `-4-extended`.
|
|
31
|
+
|
|
32
|
+
## Grid
|
|
33
|
+
|
|
34
|
+
1. **Examples → Notional by desk and asset class**; right-click `join102` → **Select** → Execute (400 rows)
|
|
35
|
+
2. Click **NOTIONAL_USD** header ×2
|
|
36
|
+
3. Right-click REGION cell → **Drilldown by "REGION"**; DESK cell → **Drilldown by "DESK"**
|
|
37
|
+
4. **Group rows…**: ids → Nothing, PRICE → Average
|
|
38
|
+
5. Expand Americas → Commodities
|
|
39
|
+
6. NOTIONAL_USD cell → **Format Column…**: Currency, 0 places
|
|
40
|
+
7. **Runs** · Export ▸ **CSV (whole query)** · **Local**
|
|
41
|
+
|
|
42
|
+
## Pivot (DuckDB)
|
|
43
|
+
|
|
44
|
+
1. **Connect to a source → Direct Connection**: DuckDB, paste the setup SQL below
|
|
45
|
+
- Test connection → schema `demo` → **sales** → Add → **F9** (10 rows)
|
|
46
|
+
2. **Drop Pivot by Column**
|
|
47
|
+
- Pivot column: **year** → Load values → All
|
|
48
|
+
- Rows: **country**
|
|
49
|
+
- Aggregation: Sum · **amount**
|
|
50
|
+
- Apply · **F9** → 4 rows (France 120 · 80 · 180)
|
|
51
|
+
|
|
52
|
+
Setup SQL:
|
|
53
|
+
|
|
54
|
+
```sql
|
|
55
|
+
drop schema if exists demo cascade;
|
|
56
|
+
create schema demo;
|
|
57
|
+
create table demo.sales (id INTEGER PRIMARY KEY, country VARCHAR(10), product VARCHAR(10), year INTEGER, amount INTEGER, price DOUBLE);
|
|
58
|
+
insert into demo.sales values (1, 'France', 'Tea', 2022, 120, 2.5), (2, 'France', 'Coffee', 2023, 80, 3.1), (3, 'France', 'Tea', 2024, 150, 2.7), (4, 'Germany', 'Tea', 2022, 90, 2.4), (5, 'Germany', 'Coffee', 2022, 60, 3.0), (6, 'Germany', 'Coffee', 2024, 110, 3.3), (7, 'Japan', 'Tea', 2023, 200, 2.9), (8, 'Japan', 'Tea', 2024, 40, 2.9), (9, 'France', 'Coffee', 2024, 30, 3.2), (10, 'Spain', 'Coffee', 2022, 70, 3.0);
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Fallback: [specs/duckdb-sales-pivot.cube.json](specs/duckdb-sales-pivot.cube.json).
|
|
62
|
+
|
|
63
|
+
## Function
|
|
64
|
+
|
|
65
|
+
1. **Function** (palette) → Dataset Trades → **tradesAbove** · `1000000` → Add → **F9** → 44 rows
|
|
66
|
+
|
|
67
|
+
**New** (header) clears the cube; Undo brings it back.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Legend Cube demo kit
|
|
2
|
+
|
|
3
|
+
A walkthrough of Legend Cube on its sample data, and the specs to fall back on. Every number below is what the
|
|
4
|
+
engine returned when these files were made (2026-10-13); the sample data is fixed, so they match on the day. The
|
|
5
|
+
short version is [DEMO-FAST-NOTES.md](./DEMO-FAST-NOTES.md).
|
|
6
|
+
|
|
7
|
+
| File | What it is |
|
|
8
|
+
| ----------------------------------------- | ---------------------------------------------------------------------------- |
|
|
9
|
+
| `specs/trades-desks-1-joined.cube.json` | Act 2 after the Join: TRADES and DESKS joined on `DESK_ID` = `ID` (400 rows) |
|
|
10
|
+
| `specs/trades-desks-2-grouped.cube.json` | … then the Group by DESK and REGION (6 rows) |
|
|
11
|
+
| `specs/trades-desks-3-ranked.cube.json` | … then the Rank within region (6 rows) |
|
|
12
|
+
| `specs/trades-desks-4-extended.cube.json` | … then the calculated column `NOTIONAL_MM` (6 rows) |
|
|
13
|
+
| `specs/trades-desks-5-final.cube.json` | … then Filter by Expression `NOTIONAL_MM > 25`: the finished cube (4 rows) |
|
|
14
|
+
| `specs/duckdb-sales-pivot.cube.json` | Act 4's DuckDB cube with the Pivot, its setup SQL inside (4 rows) |
|
|
15
|
+
|
|
16
|
+
**Fallback:** if a live step goes wrong, **Import** the spec of the step before or after it and press **F9**. An
|
|
17
|
+
imported cube opens without running.
|
|
18
|
+
|
|
19
|
+
## Before the demo
|
|
20
|
+
|
|
21
|
+
- A local engine, and the Query dev server (`yarn dev:query`) with Cube enabled (see [hosting](../hosting.md)).
|
|
22
|
+
- Open each example once to warm the engine up.
|
|
23
|
+
- Browser at about 1440×900, 100% zoom, a fresh `/query/cube` page.
|
|
24
|
+
|
|
25
|
+
## 1. An example (about 1 min)
|
|
26
|
+
|
|
27
|
+
1. **Examples → Top customers by orders**: it opens and runs, 10 rows, **Save-a-lot Markets** first with 31 orders.
|
|
28
|
+
2. Click the **Group** step: its editor opens under it. **Escape** closes it.
|
|
29
|
+
|
|
30
|
+
## 2. A live build on Trades (about 3 min)
|
|
31
|
+
|
|
32
|
+
The question: which desk trades most, and how does each rank in its region?
|
|
33
|
+
|
|
34
|
+
1. **Examples → Trades → Start a new cube**. Tick **TRADES** and **DESKS** (new: several tables at once), then
|
|
35
|
+
**Add 2**. TRADES, ticked first, is the step that runs.
|
|
36
|
+
- The source dialog's **← Examples** goes back to the examples.
|
|
37
|
+
2. Drag **Join Another Input** onto the canvas: it lands after TRADES (Left). Drag DESKS' dot to the Join's lower
|
|
38
|
+
input (Right). The Join is red; its tooltip says _"Left join columns cannot be empty."_ Open it, **Add join
|
|
39
|
+
columns**: **DESK_ID** = **ID**, **Apply**. _(Fallback: `trades-desks-1-joined`.)_
|
|
40
|
+
3. **Add Items ▾ → Group by Column**: tick **DESK** and **REGION**; aggregation 1 **NOTIONAL_USD**, **Sum**, named
|
|
41
|
+
**TOTAL_NOTIONAL_USD**; **Add aggregation**: **Count Rows** named **TRADE_COUNT**. **Apply**, **F9**: 6 desks.
|
|
42
|
+
_(`trades-desks-2-grouped`.)_
|
|
43
|
+
4. **Add Items ▾ → Apply Window Functions**: partition by **REGION**; **Add sort column** **TOTAL_NOTIONAL_USD**
|
|
44
|
+
**Descending**; function **Rank** named **RANK_IN_REGION**. **Apply**, **F9**: Americas is Commodities 1, Rates 2,
|
|
45
|
+
Equities Cash 3; Europe is Equity Derivatives 1, Credit 2; Asia is FX 1. _(`trades-desks-3-ranked`.)_
|
|
46
|
+
5. **Add Items ▾ → Extend Columns**: name **NOTIONAL_MM**, expression `x | $x.TOTAL_NOTIONAL_USD / 1000000`,
|
|
47
|
+
**Validate** (_"Float, can be empty"_), **Apply**, **F9**: Commodities 31,102,024.71 → **31.10**.
|
|
48
|
+
_(`trades-desks-4-extended`.)_
|
|
49
|
+
6. **Add Items ▾ → Filter by Expression**: `x | $x.NOTIONAL_MM > 25`, **Validate**, **Apply**, **F9**: **4 desks**
|
|
50
|
+
(Commodities, Equity Derivatives, FX, Rates), their ranks unchanged. _(`trades-desks-5-final`.)_
|
|
51
|
+
7. **Show SQL**: the formatted SQL in a dialog: the `rank() over (partition by …)` inside, the `> 25` filter outside.
|
|
52
|
+
**Copy SQL**, **Close**.
|
|
53
|
+
8. **Export**: the spec as JSON, each object folding from the gutter.
|
|
54
|
+
|
|
55
|
+
If two inputs share a column name that isn't a join key, the Join says _"Duplicate column names between inputs are not
|
|
56
|
+
supported…"_: open it and click **Rename them**.
|
|
57
|
+
|
|
58
|
+
## 3. The results grid (about 2 min)
|
|
59
|
+
|
|
60
|
+
1. **Examples → Notional by desk and asset class**. Right-click the join step (`join102`) → **Select**, then
|
|
61
|
+
**Execute**: 400 trades. **Hide graph** for room.
|
|
62
|
+
2. Click the **NOTIONAL_USD** header twice: sorted descending, on the engine (Runs goes up by 2).
|
|
63
|
+
3. Right-click a REGION cell → **Drilldown by "REGION"**: Americas (189), Asia (68), Europe (143). Right-click a DESK
|
|
64
|
+
cell → **Drilldown by "DESK"**.
|
|
65
|
+
4. **Group rows…**: set the id columns to **Nothing** and **PRICE** to **Average**; **Close**.
|
|
66
|
+
5. Expand **Americas**, then **Commodities** (65): each level is its own query.
|
|
67
|
+
6. Right-click a NOTIONAL_USD cell → **Format Column…**: **Currency**, decimal places **0**, **Apply**:
|
|
68
|
+
$81,410,352 for Americas.
|
|
69
|
+
7. **Runs**: each run, sort and level fetched, with its SQL.
|
|
70
|
+
8. Right-click → **Export ▸ CSV (whole query)**: `Notional_by_desk_and_asset_class.csv`, a header and 400 trades.
|
|
71
|
+
9. **Local**: ag-grid's row groups, filters and the Columns panel with **Pivot Mode**. Back to **Server-side**.
|
|
72
|
+
|
|
73
|
+
## 4. Pivot (about 1.5 min)
|
|
74
|
+
|
|
75
|
+
1. On any sample cube (H2), point at **Pivot by Column** in the palette: greyed, _"Pivot is not supported on H2."_
|
|
76
|
+
2. New page → **Connect to a source → Direct Connection**: Database **DuckDB**, paste the setup SQL below into
|
|
77
|
+
**Setup SQL**, **Test connection**, schema **demo**, pick **sales**, **Add**, **F9**: 10 sales.
|
|
78
|
+
3. Palette **Pivot by Column**: pivot column **year**, **Load values** (2022, 2023, 2024), **All**, row column
|
|
79
|
+
**country**, aggregation **Sum** of **amount**. **Apply**, **F9**: a row per country, a column per year: France
|
|
80
|
+
120, 80, 180; Germany 150, –, 110; Japan –, 200, 40; Spain 70, –, –.
|
|
81
|
+
4. _(Fallback: Import `duckdb-sales-pivot.cube.json`, F9.)_
|
|
82
|
+
|
|
83
|
+
The DuckDB setup SQL:
|
|
84
|
+
|
|
85
|
+
```sql
|
|
86
|
+
drop schema if exists demo cascade;
|
|
87
|
+
create schema demo;
|
|
88
|
+
create table demo.sales (id INTEGER PRIMARY KEY, country VARCHAR(10), product VARCHAR(10), year INTEGER, amount INTEGER, price DOUBLE);
|
|
89
|
+
insert into demo.sales values (1, 'France', 'Tea', 2022, 120, 2.5), (2, 'France', 'Coffee', 2023, 80, 3.1), (3, 'France', 'Tea', 2024, 150, 2.7), (4, 'Germany', 'Tea', 2022, 90, 2.4), (5, 'Germany', 'Coffee', 2022, 60, 3.0), (6, 'Germany', 'Coffee', 2024, 110, 3.3), (7, 'Japan', 'Tea', 2023, 200, 2.9), (8, 'Japan', 'Tea', 2024, 40, 2.9), (9, 'France', 'Coffee', 2024, 30, 3.2), (10, 'Spain', 'Coffee', 2022, 70, 3.0);
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## 5. A function as a source (about 1 min)
|
|
93
|
+
|
|
94
|
+
1. Palette **Function**: Dataset **Trades**, Read **Functions**: `tradesAbove(minNotionalUsd: Float)` and
|
|
95
|
+
`deskBook(desk, side?)`, which runs on its own runtime.
|
|
96
|
+
2. Pick **tradesAbove**, value **1000000**, **Add**, **F9**: **44 trades** above a million dollars.
|
|
97
|
+
|
|
98
|
+
## Not shown, and why
|
|
99
|
+
|
|
100
|
+
- **Data products:** the data product servers don't run locally. The Data Product tab now takes several access points
|
|
101
|
+
at once, like tables.
|
|
102
|
+
- **Services:** work in progress.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
{
|
|
2
|
+
"formatVersion": 1,
|
|
3
|
+
"context": {
|
|
4
|
+
"model": {
|
|
5
|
+
"_type": "cubeDirectConnection",
|
|
6
|
+
"connection": {
|
|
7
|
+
"_type": "RelationalDatabaseConnection",
|
|
8
|
+
"type": "DuckDB",
|
|
9
|
+
"databaseType": "DuckDB",
|
|
10
|
+
"datasourceSpecification": {
|
|
11
|
+
"_type": "duckDB",
|
|
12
|
+
"path": "",
|
|
13
|
+
"testDataSetupSqls": [
|
|
14
|
+
"drop schema if exists demo cascade",
|
|
15
|
+
"create schema demo",
|
|
16
|
+
"create table demo.sales (id INTEGER PRIMARY KEY, country VARCHAR(10), product VARCHAR(10), year INTEGER, amount INTEGER, price DOUBLE)",
|
|
17
|
+
"insert into demo.sales values (1, 'France', 'Tea', 2022, 120, 2.5), (2, 'France', 'Coffee', 2023, 80, 3.1), (3, 'France', 'Tea', 2024, 150, 2.7), (4, 'Germany', 'Tea', 2022, 90, 2.4), (5, 'Germany', 'Coffee', 2022, 60, 3.0), (6, 'Germany', 'Coffee', 2024, 110, 3.3), (7, 'Japan', 'Tea', 2023, 200, 2.9), (8, 'Japan', 'Tea', 2024, 40, 2.9), (9, 'France', 'Coffee', 2024, 30, 3.2), (10, 'Spain', 'Coffee', 2022, 70, 3.0)"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
"authenticationStrategy": {
|
|
21
|
+
"_type": "test"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"runtime": "cube::direct::Runtime"
|
|
26
|
+
},
|
|
27
|
+
"query": {
|
|
28
|
+
"selected": "pivot101",
|
|
29
|
+
"nodes": [
|
|
30
|
+
{
|
|
31
|
+
"kind": "relational",
|
|
32
|
+
"id": "relational101",
|
|
33
|
+
"database": "cube::direct::Database",
|
|
34
|
+
"schema": "\"demo\"",
|
|
35
|
+
"table": "\"sales\"",
|
|
36
|
+
"schemaSnapshot": [
|
|
37
|
+
{
|
|
38
|
+
"name": "id",
|
|
39
|
+
"type": {
|
|
40
|
+
"path": "meta::pure::precisePrimitives::Int"
|
|
41
|
+
},
|
|
42
|
+
"nullable": false
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "country",
|
|
46
|
+
"type": {
|
|
47
|
+
"path": "meta::pure::precisePrimitives::Varchar",
|
|
48
|
+
"params": [0]
|
|
49
|
+
},
|
|
50
|
+
"nullable": true
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "product",
|
|
54
|
+
"type": {
|
|
55
|
+
"path": "meta::pure::precisePrimitives::Varchar",
|
|
56
|
+
"params": [0]
|
|
57
|
+
},
|
|
58
|
+
"nullable": true
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "year",
|
|
62
|
+
"type": {
|
|
63
|
+
"path": "meta::pure::precisePrimitives::Int"
|
|
64
|
+
},
|
|
65
|
+
"nullable": true
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "amount",
|
|
69
|
+
"type": {
|
|
70
|
+
"path": "meta::pure::precisePrimitives::Int"
|
|
71
|
+
},
|
|
72
|
+
"nullable": true
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"name": "price",
|
|
76
|
+
"type": {
|
|
77
|
+
"path": "meta::pure::precisePrimitives::Double"
|
|
78
|
+
},
|
|
79
|
+
"nullable": true
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"kind": "pivot",
|
|
85
|
+
"id": "pivot101",
|
|
86
|
+
"inputs": ["relational101"],
|
|
87
|
+
"rows": ["country"],
|
|
88
|
+
"column": "year",
|
|
89
|
+
"values": [
|
|
90
|
+
{
|
|
91
|
+
"kind": "integer",
|
|
92
|
+
"value": "2022"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"kind": "integer",
|
|
96
|
+
"value": "2023"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"kind": "integer",
|
|
100
|
+
"value": "2024"
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
"aggregation": {
|
|
104
|
+
"column": "amount",
|
|
105
|
+
"function": "Sum"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
}
|