@quillsql/react 2.13.7 → 2.13.9
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/dist/cjs/Chart.d.ts +5 -5
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +19 -8
- package/dist/cjs/ChartBuilder.d.ts +1 -1
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +58 -93
- package/dist/cjs/ChartEditor.js +1 -1
- package/dist/cjs/Context.d.ts +9 -8
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +119 -34
- package/dist/cjs/Dashboard.d.ts +20 -8
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +68 -58
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts +2 -2
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +1 -2
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts +20 -20
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +64 -52
- package/dist/cjs/ReportBuilder.d.ts +2 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +339 -339
- package/dist/cjs/SQLEditor.d.ts +1 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +30 -18
- package/dist/cjs/components/Banner/index.d.ts +0 -1
- package/dist/cjs/components/Banner/index.d.ts.map +1 -1
- package/dist/cjs/components/Banner/index.js +1 -1
- package/dist/cjs/components/Chart/BarChart.d.ts +0 -1
- package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.js +1 -1
- package/dist/cjs/components/Chart/BarList.js +1 -2
- package/dist/cjs/components/Chart/ChartError.js +2 -3
- package/dist/cjs/components/Chart/ChartSkeleton.js +1 -1
- package/dist/cjs/components/Chart/ChartTooltip.js +1 -1
- package/dist/cjs/components/Chart/ChartTooltipFrame.d.ts +0 -1
- package/dist/cjs/components/Chart/ChartTooltipFrame.d.ts.map +1 -1
- package/dist/cjs/components/Chart/ChartTooltipFrame.js +1 -1
- package/dist/cjs/components/Chart/ChartTooltipGroup.js +1 -1
- package/dist/cjs/components/Chart/ChartTooltipRow.js +1 -1
- package/dist/cjs/components/Chart/LineChart.d.ts +0 -1
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +1 -1
- package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/PieChart.js +18 -9
- package/dist/cjs/components/Dashboard/ChartComponent.d.ts +0 -1
- package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/ChartComponent.js +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +10 -2
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +9 -23
- package/dist/cjs/components/Dashboard/DashboardSection.d.ts +0 -1
- package/dist/cjs/components/Dashboard/DashboardSection.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardSection.js +1 -1
- package/dist/cjs/components/Dashboard/DashboardSectionContainer.d.ts +0 -1
- package/dist/cjs/components/Dashboard/DashboardSectionContainer.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardSectionContainer.js +1 -1
- package/dist/cjs/components/Dashboard/DashboardTemplate.js +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +9 -7
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +104 -61
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts +0 -1
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +3 -3
- package/dist/cjs/components/Dashboard/TableComponent.d.ts +0 -1
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +1 -1
- package/dist/cjs/components/Dashboard/TemplateChartComponent.d.ts +0 -1
- package/dist/cjs/components/Dashboard/TemplateChartComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TemplateChartComponent.js +1 -1
- package/dist/cjs/components/Dashboard/TemplateMetricComponent.d.ts +0 -1
- package/dist/cjs/components/Dashboard/TemplateMetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TemplateMetricComponent.js +1 -1
- package/dist/cjs/components/Dashboard/TemplateTableComponent.d.ts +0 -1
- package/dist/cjs/components/Dashboard/TemplateTableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TemplateTableComponent.js +1 -1
- package/dist/cjs/components/Dashboard/util.js +2 -3
- package/dist/cjs/components/QuillCard.js +1 -2
- package/dist/cjs/components/QuillMultiSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelect.js +21 -20
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +172 -70
- package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelect.js +9 -8
- package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelectWithCombo.js +26 -12
- package/dist/cjs/components/QuillTable.d.ts +5 -1
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +5 -3
- package/dist/cjs/components/ReportBuilder/AddColumnModal.js +1 -1
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +2 -3
- package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +5 -6
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +3 -4
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.js +45 -39
- package/dist/cjs/components/ReportBuilder/FilterStack.js +1 -1
- package/dist/cjs/components/ReportBuilder/ast.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ast.js +2 -2
- package/dist/cjs/components/ReportBuilder/convert.js +11 -12
- package/dist/cjs/components/ReportBuilder/postgres.js +4 -4
- package/dist/cjs/components/ReportBuilder/ui.d.ts +3 -3
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/util.js +21 -23
- package/dist/cjs/components/UiComponents.d.ts +14 -12
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +41 -17
- package/dist/cjs/components/selectUtils.js +3 -3
- package/dist/cjs/contexts/BaseColorContext.d.ts +0 -1
- package/dist/cjs/contexts/BaseColorContext.d.ts.map +1 -1
- package/dist/cjs/contexts/RootStylesContext.d.ts +0 -1
- package/dist/cjs/contexts/RootStylesContext.d.ts.map +1 -1
- package/dist/cjs/contexts/SelectedValueContext.d.ts +0 -1
- package/dist/cjs/contexts/SelectedValueContext.d.ts.map +1 -1
- package/dist/cjs/hooks/useAskQuill.d.ts +2 -2
- package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useAskQuill.js +11 -11
- package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.d.ts +8 -7
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +47 -31
- package/dist/cjs/hooks/useExport.d.ts +3 -4
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +6 -2
- package/dist/cjs/hooks/useInternalState.d.ts +1 -2
- package/dist/cjs/hooks/useInternalState.d.ts.map +1 -1
- package/dist/cjs/hooks/useOnClickOutside.d.ts +3 -1
- package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.d.ts +0 -14
- package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useQuill.js +17 -55
- package/dist/cjs/hooks/useSelectOnKeyDown.d.ts.map +1 -1
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +7 -2
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +4 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.js +32 -7
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +17 -13
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +368 -162
- package/dist/cjs/lib/utils.d.ts +0 -1
- package/dist/cjs/lib/utils.d.ts.map +1 -1
- package/dist/cjs/lib/utils.js +2 -2
- package/dist/cjs/models/Filter.d.ts +49 -30
- package/dist/cjs/models/Filter.d.ts.map +1 -1
- package/dist/cjs/models/Filter.js +125 -52
- package/dist/cjs/models/Pivot.d.ts +3 -1
- package/dist/cjs/models/Pivot.d.ts.map +1 -1
- package/dist/cjs/models/Report.d.ts +2 -2
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.d.ts +4 -4
- package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.js +3839 -3427
- package/dist/cjs/utils/astProcessing.d.ts +12 -3
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +76 -11
- package/dist/cjs/utils/client.js +2 -2
- package/dist/cjs/utils/color.js +5 -6
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +7 -7
- package/dist/cjs/utils/crypto.js +1 -2
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +34 -30
- package/dist/cjs/utils/dataFetcher.js +3 -4
- package/dist/cjs/utils/dataProcessing.js +2 -2
- package/dist/cjs/utils/dates.d.ts +4 -1
- package/dist/cjs/utils/dates.d.ts.map +1 -1
- package/dist/cjs/utils/dates.js +12 -10
- package/dist/cjs/utils/errorProcessing.js +1 -2
- package/dist/cjs/utils/filterProcessing.d.ts +3 -3
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +30 -27
- package/dist/cjs/utils/getDomain.js +1 -1
- package/dist/cjs/utils/logging.js +1 -2
- package/dist/cjs/utils/merge.d.ts +1 -1
- package/dist/cjs/utils/merge.d.ts.map +1 -1
- package/dist/cjs/utils/merge.js +15 -11
- package/dist/cjs/utils/monacoConfig.js +3 -3
- package/dist/cjs/utils/paginationProcessing.js +3 -3
- package/dist/cjs/utils/pivotConstructor.d.ts +4 -4
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +104 -127
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +14 -16
- package/dist/cjs/utils/queryConstructor.d.ts +2 -2
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +344 -78
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +22 -12
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/styles.js +1 -2
- package/dist/cjs/utils/tableProcessing.d.ts +12 -12
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +69 -26
- package/dist/cjs/utils/textProcessing.js +5 -6
- package/dist/cjs/utils/validation.d.ts.map +1 -1
- package/dist/cjs/utils/validation.js +3 -1
- package/dist/cjs/utils/valueFormatter.d.ts +1 -0
- package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/valueFormatter.js +2 -0
- package/dist/cjs/utils/width.d.ts.map +1 -1
- package/dist/esm/Chart.d.ts +5 -5
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +15 -4
- package/dist/esm/ChartBuilder.d.ts +1 -1
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +52 -87
- package/dist/esm/Context.d.ts +9 -8
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +119 -34
- package/dist/esm/Dashboard.d.ts +20 -8
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +68 -58
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts +2 -2
- package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +20 -20
- package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
- package/dist/esm/DateRangePicker/dateRangePickerUtils.js +64 -52
- package/dist/esm/ReportBuilder.d.ts +2 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +343 -343
- package/dist/esm/SQLEditor.d.ts +1 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +29 -17
- package/dist/esm/components/Banner/index.d.ts +0 -1
- package/dist/esm/components/Banner/index.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.d.ts +0 -1
- package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/ChartTooltipFrame.d.ts +0 -1
- package/dist/esm/components/Chart/ChartTooltipFrame.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.d.ts +0 -1
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/PieChart.js +18 -9
- package/dist/esm/components/Dashboard/ChartComponent.d.ts +0 -1
- package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts +10 -2
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +8 -21
- package/dist/esm/components/Dashboard/DashboardSection.d.ts +0 -1
- package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts +0 -1
- package/dist/esm/components/Dashboard/DashboardSectionContainer.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts +9 -7
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +102 -62
- package/dist/esm/components/Dashboard/MetricComponent.d.ts +0 -1
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +2 -2
- package/dist/esm/components/Dashboard/TableComponent.d.ts +0 -1
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TemplateChartComponent.d.ts +0 -1
- package/dist/esm/components/Dashboard/TemplateChartComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TemplateMetricComponent.d.ts +0 -1
- package/dist/esm/components/Dashboard/TemplateMetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TemplateTableComponent.d.ts +0 -1
- package/dist/esm/components/Dashboard/TemplateTableComponent.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelect.js +19 -18
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +171 -69
- package/dist/esm/components/QuillSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillSelect.js +8 -6
- package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillSelectWithCombo.js +25 -10
- package/dist/esm/components/QuillTable.d.ts +5 -1
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +4 -2
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +2 -3
- package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +5 -6
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts +3 -4
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterModal.js +46 -40
- package/dist/esm/components/ReportBuilder/ast.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.d.ts +3 -3
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/util.js +0 -2
- package/dist/esm/components/UiComponents.d.ts +14 -12
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +37 -14
- package/dist/esm/contexts/BaseColorContext.d.ts +0 -1
- package/dist/esm/contexts/BaseColorContext.d.ts.map +1 -1
- package/dist/esm/contexts/RootStylesContext.d.ts +0 -1
- package/dist/esm/contexts/RootStylesContext.d.ts.map +1 -1
- package/dist/esm/contexts/SelectedValueContext.d.ts +0 -1
- package/dist/esm/contexts/SelectedValueContext.d.ts.map +1 -1
- package/dist/esm/hooks/useAskQuill.d.ts +2 -2
- package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useAskQuill.js +12 -12
- package/dist/esm/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.d.ts +8 -7
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +48 -32
- package/dist/esm/hooks/useExport.d.ts +3 -4
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +6 -2
- package/dist/esm/hooks/useInternalState.d.ts +1 -2
- package/dist/esm/hooks/useInternalState.d.ts.map +1 -1
- package/dist/esm/hooks/useOnClickOutside.d.ts +3 -1
- package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.d.ts +0 -14
- package/dist/esm/hooks/useQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useQuill.js +16 -53
- package/dist/esm/hooks/useSelectOnKeyDown.d.ts.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +4 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.js +32 -7
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +17 -13
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +364 -158
- package/dist/esm/lib/utils.d.ts +0 -1
- package/dist/esm/lib/utils.d.ts.map +1 -1
- package/dist/esm/models/Filter.d.ts +49 -30
- package/dist/esm/models/Filter.d.ts.map +1 -1
- package/dist/esm/models/Filter.js +123 -50
- package/dist/esm/models/Pivot.d.ts +3 -1
- package/dist/esm/models/Pivot.d.ts.map +1 -1
- package/dist/esm/models/Report.d.ts +2 -2
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.d.ts +4 -4
- package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.js +3835 -3423
- package/dist/esm/utils/astProcessing.d.ts +12 -3
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +64 -0
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.js +1 -1
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +31 -26
- package/dist/esm/utils/dates.d.ts +4 -1
- package/dist/esm/utils/dates.d.ts.map +1 -1
- package/dist/esm/utils/dates.js +6 -3
- package/dist/esm/utils/filterProcessing.d.ts +3 -3
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +22 -19
- package/dist/esm/utils/merge.d.ts +1 -1
- package/dist/esm/utils/merge.d.ts.map +1 -1
- package/dist/esm/utils/merge.js +14 -9
- package/dist/esm/utils/pivotConstructor.d.ts +4 -4
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +103 -125
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +9 -11
- package/dist/esm/utils/queryConstructor.d.ts +2 -2
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +338 -71
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +18 -8
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.d.ts +12 -12
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +69 -26
- package/dist/esm/utils/validation.d.ts.map +1 -1
- package/dist/esm/utils/validation.js +3 -1
- package/dist/esm/utils/valueFormatter.d.ts +1 -0
- package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
- package/dist/esm/utils/valueFormatter.js +2 -1
- package/dist/esm/utils/width.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.processColumnReference = processColumnReference;
|
|
4
|
+
exports.replaceSpacesWithUnderscores = replaceSpacesWithUnderscores;
|
|
5
|
+
exports.generateCountQuery = generateCountQuery;
|
|
6
|
+
exports.generateDistinctQuery = generateDistinctQuery;
|
|
7
|
+
exports.generateMinMaxRangeQueries = generateMinMaxRangeQueries;
|
|
8
|
+
exports.generatePivotQuery = generatePivotQuery;
|
|
4
9
|
const constants_1 = require("./constants");
|
|
5
10
|
const pivotProcessing_1 = require("./pivotProcessing");
|
|
6
11
|
function processSingleQuotes(value, databaseType) {
|
|
@@ -19,42 +24,69 @@ function replaceBigQuerySpecialCharacters(column) {
|
|
|
19
24
|
}
|
|
20
25
|
function processColumnReference(column, databaseType, fallbackOnNull,
|
|
21
26
|
// for mysql, we only want to use double quotes for pivot column field aliases
|
|
22
|
-
|
|
23
|
-
if (['postgresql'
|
|
27
|
+
isPivotColumnFieldAlias, isPivotValueFieldAlias) {
|
|
28
|
+
if (['postgresql'].includes(databaseType.toLowerCase())) {
|
|
29
|
+
if (isPivotColumnFieldAlias) {
|
|
30
|
+
return `"${column.replaceAll('"', '')}"`;
|
|
31
|
+
}
|
|
24
32
|
const columnParts = column.split('.');
|
|
25
33
|
if (columnParts.length > 1) {
|
|
26
|
-
return `"
|
|
34
|
+
return (`"` +
|
|
35
|
+
columnParts.map((part) => part.replaceAll('"', '')).join('"."') +
|
|
36
|
+
`"`);
|
|
27
37
|
}
|
|
28
38
|
if (column === '' && fallbackOnNull) {
|
|
29
39
|
return `"${fallbackOnNull}"`;
|
|
30
40
|
}
|
|
31
|
-
return `"${column}"`;
|
|
41
|
+
return `"${column.replaceAll('"', '')}"`;
|
|
32
42
|
}
|
|
33
43
|
if (['mysql'].includes(databaseType.toLowerCase())) {
|
|
34
|
-
if (
|
|
35
|
-
return `"
|
|
44
|
+
if (isPivotColumnFieldAlias) {
|
|
45
|
+
return `\`${column.replaceAll(`\``, '').replaceAll(`"`, '')}\``;
|
|
36
46
|
}
|
|
37
47
|
const columnParts = column.split('.');
|
|
38
48
|
if (columnParts.length > 1) {
|
|
39
|
-
return
|
|
49
|
+
return (`\`` +
|
|
50
|
+
columnParts.map((part) => part.replaceAll(`\``, '')).join('`.`') +
|
|
51
|
+
`\``);
|
|
40
52
|
}
|
|
41
53
|
if (column === '' && fallbackOnNull) {
|
|
42
54
|
return `${fallbackOnNull}`;
|
|
43
55
|
}
|
|
44
56
|
// Wrap MySQL columns in backticks to handle whitespace
|
|
45
|
-
return `\`${column}\``;
|
|
57
|
+
return `\`${column.replaceAll(`\``, '')}\``;
|
|
58
|
+
}
|
|
59
|
+
if (['snowflake'].includes(databaseType.toLowerCase())) {
|
|
60
|
+
if (isPivotColumnFieldAlias) {
|
|
61
|
+
return `"${column.replaceAll('"', '')}"`;
|
|
62
|
+
}
|
|
63
|
+
if (isPivotValueFieldAlias) {
|
|
64
|
+
const cleanedColumn = column.replaceAll(')', '').replaceAll('(', '_');
|
|
65
|
+
return `${cleanedColumn}`;
|
|
66
|
+
}
|
|
67
|
+
// const columnParts = column.split('.');
|
|
68
|
+
// if (columnParts.length > 1) {
|
|
69
|
+
// return '"' + columnParts.join('"."') + '"';
|
|
70
|
+
// }
|
|
71
|
+
if (column === '' && fallbackOnNull) {
|
|
72
|
+
return `${fallbackOnNull}`;
|
|
73
|
+
}
|
|
74
|
+
return column;
|
|
75
|
+
}
|
|
76
|
+
if (isPivotColumnFieldAlias) {
|
|
77
|
+
return `\`${column.replaceAll('`', '')}\``;
|
|
46
78
|
}
|
|
47
79
|
const columnParts = column.split('.');
|
|
48
80
|
if (columnParts.length > 1) {
|
|
49
|
-
return
|
|
81
|
+
return (`\`` +
|
|
82
|
+
columnParts.map((part) => part.replaceAll(`\``, '')).join('`.`') +
|
|
83
|
+
`\``);
|
|
50
84
|
}
|
|
51
|
-
return `\`${replaceBigQuerySpecialCharacters(column)}\``;
|
|
85
|
+
return `\`${replaceBigQuerySpecialCharacters(column.replaceAll('`', ''))}\``;
|
|
52
86
|
}
|
|
53
|
-
exports.processColumnReference = processColumnReference;
|
|
54
87
|
function replaceSpacesWithUnderscores(column) {
|
|
55
88
|
return column.replaceAll(' ', '_');
|
|
56
89
|
}
|
|
57
|
-
exports.replaceSpacesWithUnderscores = replaceSpacesWithUnderscores;
|
|
58
90
|
function processInterval(interval, rowField, databaseType) {
|
|
59
91
|
if (['postgresql', 'snowflake'].includes(databaseType.toLowerCase())) {
|
|
60
92
|
return `(${processColumnReference(rowField, databaseType)} + INTERVAL '${interval}')`;
|
|
@@ -114,18 +146,18 @@ function generateCountQuery(fields, query, databaseType) {
|
|
|
114
146
|
}
|
|
115
147
|
return cteQuery + countQuery.join(' UNION ALL ');
|
|
116
148
|
}
|
|
117
|
-
exports.generateCountQuery = generateCountQuery;
|
|
118
149
|
function generateDistinctQuery(stringFields, query, databaseType) {
|
|
119
150
|
switch (databaseType.toLowerCase()) {
|
|
120
151
|
case 'mysql':
|
|
121
152
|
return generateDistinctQueryMySQL(stringFields, query);
|
|
122
153
|
case 'postgresql':
|
|
123
154
|
return generateDistinctQueryPostgres(stringFields, query);
|
|
155
|
+
case 'snowflake':
|
|
156
|
+
return generateDistinctQuerySnowflake(stringFields, query);
|
|
124
157
|
default:
|
|
125
158
|
return generateDistinctQueryDefault(stringFields, query, databaseType);
|
|
126
159
|
}
|
|
127
160
|
}
|
|
128
|
-
exports.generateDistinctQuery = generateDistinctQuery;
|
|
129
161
|
function generateDistinctQueryDefault(stringFields, query, databaseType) {
|
|
130
162
|
const distinctQueries = stringFields.map((field) => {
|
|
131
163
|
return `SELECT '${field}' AS ${processColumnReference('field', databaseType)}, ARRAY_AGG(DISTINCT ${field}) AS ${processColumnReference('string_values', databaseType)} FROM querytable`;
|
|
@@ -134,21 +166,6 @@ function generateDistinctQueryDefault(stringFields, query, databaseType) {
|
|
|
134
166
|
return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
|
|
135
167
|
}
|
|
136
168
|
function generateDistinctQueryMySQL(stringFields, query) {
|
|
137
|
-
// WITH querytable AS (
|
|
138
|
-
// SELECT DISTINCT merchant, user_name, category
|
|
139
|
-
// FROM transactions
|
|
140
|
-
// )
|
|
141
|
-
// SELECT 'merchant' AS field, JSON_ARRAYAGG(merchant) AS string_values
|
|
142
|
-
// FROM (SELECT DISTINCT merchant FROM querytable) AS distinct_merchants
|
|
143
|
-
// UNION ALL
|
|
144
|
-
// SELECT 'user_name' AS field, JSON_ARRAYAGG(user_name) AS string_values
|
|
145
|
-
// FROM (SELECT DISTINCT user_name FROM querytable) AS distinct_user_names
|
|
146
|
-
// UNION ALL
|
|
147
|
-
// SELECT 'category' AS field, JSON_ARRAYAGG(category) AS string_values
|
|
148
|
-
// FROM (SELECT DISTINCT category FROM querytable) AS distinct_categories;
|
|
149
|
-
// const distinctQueries = stringFields.map((field) => {
|
|
150
|
-
// return `SELECT '${field}' AS ${processColumnReference('field', 'mysql')}, JSON_ARRAYAGG(${field}) AS ${processColumnReference('string_values', 'mysql')} FROM querytable`;
|
|
151
|
-
// });
|
|
152
169
|
const distinctQueries = stringFields.map((field) => {
|
|
153
170
|
return `
|
|
154
171
|
SELECT '${field}' AS ${processColumnReference('field', 'mysql')},
|
|
@@ -165,31 +182,40 @@ function generateDistinctQueryPostgres(stringFields, query) {
|
|
|
165
182
|
const distinctQuery = distinctQueries.join(' UNION ALL ');
|
|
166
183
|
return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
|
|
167
184
|
}
|
|
185
|
+
function generateDistinctQuerySnowflake(stringFields, query) {
|
|
186
|
+
const distinctQueries = stringFields.map((field) => {
|
|
187
|
+
return `SELECT '${field}' AS "field", ARRAY_AGG(DISTINCT "${field}") AS "string_values" FROM querytable`;
|
|
188
|
+
});
|
|
189
|
+
const distinctQuery = distinctQueries.join(' UNION ALL ');
|
|
190
|
+
return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
|
|
191
|
+
}
|
|
168
192
|
function generateMinMaxRangeQueries(columnFields, query, databaseType) {
|
|
193
|
+
const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
|
|
169
194
|
const distinctQueries = columnFields.map((field) => {
|
|
170
|
-
const wrappedField = ['postgresql'
|
|
195
|
+
const wrappedField = ['postgresql'].includes(databaseType.toLowerCase())
|
|
171
196
|
? `"${field}"`
|
|
172
197
|
: field;
|
|
173
|
-
return `SELECT '${field}' AS field, MIN(${wrappedField}) AS min_range,
|
|
198
|
+
return `SELECT '${field}' AS field, MIN(${wrappedField}) AS min_range, ${max}(${wrappedField}) AS max_range FROM querytable`;
|
|
174
199
|
});
|
|
175
200
|
const distinctQuery = distinctQueries.join(' UNION ALL ');
|
|
176
201
|
return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
|
|
177
202
|
}
|
|
178
|
-
|
|
179
|
-
function generatePivotQuery(pivot, itemQueries, databaseType, comparisonInterval, distinctStrings, dateBucket) {
|
|
203
|
+
function generatePivotQuery(pivot, itemQueries, databaseType, comparisonInterval, distinctStrings, dateBucket, rowLimit) {
|
|
180
204
|
if (!(0, pivotProcessing_1.isValidPivot)(pivot)) {
|
|
181
205
|
return undefined;
|
|
182
206
|
}
|
|
183
207
|
if (pivot.columnField) {
|
|
184
|
-
|
|
208
|
+
console.log('1');
|
|
209
|
+
return create2DPivotQuery(pivot, itemQueries, databaseType, dateBucket, comparisonInterval, distinctStrings, rowLimit);
|
|
185
210
|
}
|
|
186
211
|
if (pivot.rowField) {
|
|
187
|
-
|
|
212
|
+
console.log('2');
|
|
213
|
+
return create1DPivotQuery(pivot, itemQueries, dateBucket, databaseType, comparisonInterval, rowLimit);
|
|
188
214
|
}
|
|
189
|
-
|
|
215
|
+
console.log('3');
|
|
216
|
+
return createAggregationValuePivot(pivot, itemQueries, databaseType, rowLimit);
|
|
190
217
|
}
|
|
191
|
-
|
|
192
|
-
function create2DPivotQuery(pivot, itemQueries, databaseType, dateBucket, comparisonInterval, columnFieldValues) {
|
|
218
|
+
function create2DPivotQuery(pivot, itemQueries, databaseType, dateBucket, comparisonInterval, columnFieldValues, rowLimit) {
|
|
193
219
|
if (!pivot || !pivot.columnField) {
|
|
194
220
|
return undefined;
|
|
195
221
|
}
|
|
@@ -198,123 +224,363 @@ function create2DPivotQuery(pivot, itemQueries, databaseType, dateBucket, compar
|
|
|
198
224
|
}
|
|
199
225
|
if (['string', 'varchar'].includes(pivot.rowFieldType || '') ||
|
|
200
226
|
!pivot.rowFieldType) {
|
|
201
|
-
return create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databaseType);
|
|
227
|
+
return create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databaseType, rowLimit);
|
|
202
228
|
}
|
|
203
|
-
return create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseType, dateBucket, comparisonInterval);
|
|
229
|
+
return create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseType, dateBucket, comparisonInterval, rowLimit);
|
|
204
230
|
}
|
|
205
|
-
function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databaseType) {
|
|
231
|
+
function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databaseType, rowLimit) {
|
|
206
232
|
if (!pivot.columnField || !pivot.rowField) {
|
|
207
233
|
return undefined;
|
|
208
234
|
}
|
|
209
235
|
const rowField = pivot.rowField;
|
|
210
236
|
const valueField = pivot.valueField;
|
|
211
237
|
const columnField = pivot.columnField;
|
|
238
|
+
const rowFieldAlias = processColumnReference(rowField, databaseType, undefined, false, true);
|
|
239
|
+
const valueFieldAlias = processColumnReference(valueField, databaseType, undefined, false, true);
|
|
240
|
+
const columnFieldAlias = processColumnReference(columnField, databaseType, undefined, false, true);
|
|
241
|
+
const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
|
|
242
|
+
const valueAliasSubstring = valueField
|
|
243
|
+
? `${processColumnReference(valueField, databaseType, undefined, true)} AS ${valueFieldAlias},`
|
|
244
|
+
: '';
|
|
245
|
+
if (pivot.aggregationType === 'percentage' && pivot.valueField2) {
|
|
246
|
+
const valueField2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
|
|
247
|
+
const value2AliasSubstring = `${processColumnReference(pivot.valueField2, databaseType, undefined, true)} AS ${valueField2Alias},`;
|
|
248
|
+
if (pivot.valueField === pivot.valueField2) {
|
|
249
|
+
const caseWhens = columnFieldValues.map((column) => {
|
|
250
|
+
return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)} END) / ${max}(sum(${processColumnReference(pivot.valueField2, databaseType)}), 1) AS ${processColumnReference(column, databaseType, '_', true)}`;
|
|
251
|
+
});
|
|
252
|
+
const caseWhensCompare = columnFieldValues.map((column) => {
|
|
253
|
+
return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)}) / ${max}(sum(${processColumnReference(pivot.valueField2, databaseType)}), 1) AS ${processColumnReference(`comparison_${column}`, databaseType, '_', true)}`;
|
|
254
|
+
});
|
|
255
|
+
const compareCTE = itemQueries[1]
|
|
256
|
+
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
257
|
+
: '';
|
|
258
|
+
const aliasCTE = itemQueries[1]
|
|
259
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
260
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
261
|
+
: '';
|
|
262
|
+
const compareCaseWhenCTE = itemQueries[1]
|
|
263
|
+
? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}, ${caseWhensCompare.join(', ')} FROM quill_c_alias GROUP BY ${rowFieldAlias})`
|
|
264
|
+
: '';
|
|
265
|
+
const joinQuery = itemQueries[1]
|
|
266
|
+
? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)} = qt.${rowFieldAlias}`
|
|
267
|
+
: '';
|
|
268
|
+
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
269
|
+
quill_alias AS (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
270
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_qt),
|
|
271
|
+
quill_qt_cw AS (SELECT ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${rowFieldAlias})
|
|
272
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
273
|
+
SELECT * FROM quill_qt_cw qt
|
|
274
|
+
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
275
|
+
}
|
|
276
|
+
const caseWhens = columnFieldValues.map((column) => {
|
|
277
|
+
return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)} END) / ${max}(sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueField2Alias)} END), 1) AS ${processColumnReference(column, databaseType, '_', true)}`;
|
|
278
|
+
});
|
|
279
|
+
const caseWhensCompare = columnFieldValues.map((column) => {
|
|
280
|
+
return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)} END) / ${max}(sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueField2Alias)} END), 1) AS ${processColumnReference(`comparison_${column}`, databaseType, '_', true)}`;
|
|
281
|
+
});
|
|
282
|
+
const compareCTE = itemQueries[1]
|
|
283
|
+
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
284
|
+
: '';
|
|
285
|
+
const aliasCTE = itemQueries[1]
|
|
286
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring} ${value2AliasSubstring}
|
|
287
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
288
|
+
: '';
|
|
289
|
+
const compareCaseWhenCTE = itemQueries[1]
|
|
290
|
+
? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}, ${caseWhensCompare.join(', ')} FROM quill_c_alias GROUP BY ${rowFieldAlias})`
|
|
291
|
+
: '';
|
|
292
|
+
const joinQuery = itemQueries[1]
|
|
293
|
+
? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)} = qt.${rowFieldAlias}`
|
|
294
|
+
: '';
|
|
295
|
+
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
296
|
+
quill_alias AS (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring} ${value2AliasSubstring}
|
|
297
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_qt),
|
|
298
|
+
quill_qt_cw AS (SELECT ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${rowFieldAlias})
|
|
299
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
300
|
+
SELECT * FROM quill_qt_cw qt
|
|
301
|
+
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
302
|
+
}
|
|
212
303
|
const caseWhens = columnFieldValues.map((column) => {
|
|
213
|
-
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN ${
|
|
304
|
+
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)} END) AS ${processColumnReference(column, databaseType, '_', true)}`;
|
|
214
305
|
});
|
|
215
306
|
const caseWhensCompare = columnFieldValues.map((column) => {
|
|
216
|
-
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN ${
|
|
307
|
+
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)} END) AS ${processColumnReference(`comparison_${column}`, databaseType, '_', true)}`;
|
|
217
308
|
});
|
|
218
309
|
const compareCTE = itemQueries[1]
|
|
219
310
|
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
220
311
|
: '';
|
|
312
|
+
const aliasCTE = itemQueries[1]
|
|
313
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
314
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
315
|
+
: '';
|
|
221
316
|
const compareCaseWhenCTE = itemQueries[1]
|
|
222
|
-
? `, quill_ct_cw as (SELECT ${
|
|
317
|
+
? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}, ${caseWhensCompare.join(', ')} FROM quill_c_alias GROUP BY ${rowFieldAlias})`
|
|
223
318
|
: '';
|
|
224
319
|
const joinQuery = itemQueries[1]
|
|
225
|
-
? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${
|
|
320
|
+
? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)} = qt.${rowFieldAlias}`
|
|
226
321
|
: '';
|
|
227
322
|
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
228
|
-
|
|
229
|
-
${
|
|
323
|
+
quill_alias AS (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
324
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_qt),
|
|
325
|
+
quill_qt_cw AS (SELECT ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${rowFieldAlias})
|
|
326
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
230
327
|
SELECT * FROM quill_qt_cw qt
|
|
231
|
-
${joinQuery}`;
|
|
328
|
+
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
232
329
|
}
|
|
233
|
-
function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseType, dateBucket = 'month', comparisonInterval) {
|
|
330
|
+
function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseType, dateBucket = 'month', comparisonInterval, rowLimit) {
|
|
234
331
|
if (!pivot.columnField || !pivot.rowField) {
|
|
235
332
|
return undefined;
|
|
236
333
|
}
|
|
237
334
|
const rowField = pivot.rowField;
|
|
238
335
|
const columnField = pivot.columnField;
|
|
336
|
+
const rowFieldAlias = processColumnReference(rowField, databaseType, undefined, false, true);
|
|
337
|
+
const valueFieldAlias = processColumnReference(pivot.valueField ?? rowField, databaseType, undefined, false, true);
|
|
338
|
+
const columnFieldAlias = processColumnReference(columnField, databaseType, undefined, false, true);
|
|
339
|
+
const valueAliasSubstring = pivot.valueField
|
|
340
|
+
? `${processColumnReference(pivot.valueField, databaseType, undefined, true)} AS ${valueFieldAlias},`
|
|
341
|
+
: '';
|
|
342
|
+
const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
|
|
343
|
+
if (pivot.aggregationType === 'percentage' && pivot.valueField2) {
|
|
344
|
+
const valueField2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
|
|
345
|
+
const value2AliasSubstring = `${processColumnReference(pivot.valueField2, databaseType, undefined, true)} AS ${valueField2Alias},`;
|
|
346
|
+
// edge case. if the user picks amount and amount, we assume they want a pie chart like breakdown of amount. so the summation of valueField2 has to be moved outside of the case when
|
|
347
|
+
if (pivot.valueField === pivot.valueField2) {
|
|
348
|
+
const caseWhens = columnFieldValues.map((column) => {
|
|
349
|
+
return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)} END) / ${max}(sum(${processColumnReference(valueField2Alias, databaseType)}), 1) AS ${processColumnReference(column, databaseType, '_', true)}`;
|
|
350
|
+
});
|
|
351
|
+
const caseWhensCompare = columnFieldValues.map((column) => {
|
|
352
|
+
return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)} END) / ${max}(sum(${processColumnReference(valueField2Alias, databaseType)}), 1) AS ${processColumnReference(`comparison_${column}`, databaseType, '_', true)}`;
|
|
353
|
+
});
|
|
354
|
+
const compareCTE = itemQueries[1] && comparisonInterval
|
|
355
|
+
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
356
|
+
: '';
|
|
357
|
+
const aliasCTE = itemQueries[1]
|
|
358
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
359
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
360
|
+
: '';
|
|
361
|
+
const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
|
|
362
|
+
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}, ${caseWhensCompare.join(', ')} FROM quill_c_alias GROUP BY ${processDateTrunc(dateBucket, rowField, databaseType)})`
|
|
363
|
+
: '';
|
|
364
|
+
const joinQuery = itemQueries[1] && comparisonInterval
|
|
365
|
+
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${rowFieldAlias} = ${processDateTrunc(dateBucket, `ct.comparison_${rowFieldAlias}`, databaseType, comparisonInterval)}`
|
|
366
|
+
: '';
|
|
367
|
+
return `WITH quill_query_table AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
368
|
+
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
369
|
+
${processColumnReference(columnField, databaseType, undefined, true, true)} AS ${columnFieldAlias} FROM quill_query_table),
|
|
370
|
+
quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
|
|
371
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
372
|
+
SELECT * FROM quill_qt_agg qt
|
|
373
|
+
${joinQuery} ORDER BY qt.${rowFieldAlias}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
374
|
+
}
|
|
375
|
+
const caseWhens = columnFieldValues.map((column) => {
|
|
376
|
+
return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)} END) / ${max}(sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueField2Alias)} END), 1) AS ${processColumnReference(column, databaseType, '_', true)}`;
|
|
377
|
+
});
|
|
378
|
+
const caseWhensCompare = columnFieldValues.map((column) => {
|
|
379
|
+
return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)} END) / ${max}(sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueField2Alias)} END), 1) AS ${processColumnReference(`comparison_${column}`, databaseType, '_', true)}`;
|
|
380
|
+
});
|
|
381
|
+
const compareCTE = itemQueries[1] && comparisonInterval
|
|
382
|
+
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
383
|
+
: '';
|
|
384
|
+
const aliasCTE = itemQueries[1]
|
|
385
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring} ${value2AliasSubstring}
|
|
386
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
387
|
+
: '';
|
|
388
|
+
const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
|
|
389
|
+
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}, ${caseWhensCompare.join(', ')} FROM quill_c_alias GROUP BY ${processDateTrunc(dateBucket, rowField, databaseType)})`
|
|
390
|
+
: '';
|
|
391
|
+
const joinQuery = itemQueries[1] && comparisonInterval
|
|
392
|
+
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${rowFieldAlias} = ${processDateTrunc(dateBucket, `ct.comparison_${rowFieldAlias}`, databaseType, comparisonInterval)}`
|
|
393
|
+
: '';
|
|
394
|
+
return `WITH quill_query_table AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
395
|
+
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring} ${value2AliasSubstring}
|
|
396
|
+
${processColumnReference(columnField, databaseType, undefined, true, true)} AS ${columnFieldAlias} FROM quill_query_table),
|
|
397
|
+
quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
|
|
398
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
399
|
+
SELECT * FROM quill_qt_agg qt
|
|
400
|
+
${joinQuery} ORDER BY qt.${rowFieldAlias}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
401
|
+
}
|
|
239
402
|
const caseWhens = columnFieldValues.map((column) => {
|
|
240
|
-
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN
|
|
403
|
+
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)} END) AS ${processColumnReference(column, databaseType, '_', true)}`;
|
|
241
404
|
});
|
|
242
405
|
const caseWhensCompare = columnFieldValues.map((column) => {
|
|
243
|
-
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN ${
|
|
406
|
+
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)} END) AS ${processColumnReference(`comparison_${column}`, databaseType, '_', true)}`;
|
|
244
407
|
});
|
|
245
408
|
const compareCTE = itemQueries[1] && comparisonInterval
|
|
246
409
|
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
247
410
|
: '';
|
|
411
|
+
const aliasCTE = itemQueries[1]
|
|
412
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
413
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
414
|
+
: '';
|
|
248
415
|
const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
|
|
249
|
-
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${
|
|
416
|
+
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}, ${caseWhensCompare.join(', ')} FROM quill_c_alias GROUP BY ${processDateTrunc(dateBucket, rowField, databaseType)})`
|
|
250
417
|
: '';
|
|
251
418
|
const joinQuery = itemQueries[1] && comparisonInterval
|
|
252
|
-
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${
|
|
419
|
+
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${rowFieldAlias} = ${processDateTrunc(dateBucket, `ct.comparison_${rowFieldAlias}`, databaseType, comparisonInterval)}`
|
|
253
420
|
: '';
|
|
254
421
|
return `WITH quill_query_table AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
255
|
-
|
|
256
|
-
${
|
|
422
|
+
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
423
|
+
${processColumnReference(columnField, databaseType, undefined, true, true)} AS ${columnFieldAlias} FROM quill_query_table),
|
|
424
|
+
quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
|
|
425
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
257
426
|
SELECT * FROM quill_qt_agg qt
|
|
258
|
-
${joinQuery} ORDER BY qt.${
|
|
427
|
+
${joinQuery} ORDER BY qt.${rowFieldAlias}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
259
428
|
}
|
|
260
|
-
function create1DPivotQuery(pivot, itemQueries, dateBucket = 'month', databaseType, comparisonInterval) {
|
|
429
|
+
function create1DPivotQuery(pivot, itemQueries, dateBucket = 'month', databaseType, comparisonInterval, rowLimit) {
|
|
430
|
+
console.log('HELLO 0: ', JSON.stringify(pivot), itemQueries);
|
|
261
431
|
if (['string', 'varchar'].includes(pivot.rowFieldType || '') ||
|
|
262
432
|
!pivot.rowFieldType) {
|
|
263
|
-
return create1DStringPivotQuery(pivot, itemQueries, databaseType);
|
|
433
|
+
return create1DStringPivotQuery(pivot, itemQueries, databaseType, rowLimit);
|
|
264
434
|
}
|
|
265
|
-
return create1DDatePivotQuery(pivot, itemQueries, dateBucket, databaseType, comparisonInterval);
|
|
435
|
+
return create1DDatePivotQuery(pivot, itemQueries, dateBucket, databaseType, comparisonInterval, rowLimit);
|
|
266
436
|
}
|
|
267
|
-
function create1DStringPivotQuery(pivot, itemQueries, databaseType) {
|
|
437
|
+
function create1DStringPivotQuery(pivot, itemQueries, databaseType, rowLimit) {
|
|
268
438
|
const rowField = pivot.rowField;
|
|
269
439
|
const valueField = pivot.valueField;
|
|
440
|
+
const rowAlias = processColumnReference(rowField, databaseType, undefined, false, true);
|
|
441
|
+
const valueAlias = processColumnReference(valueField ?? rowField, databaseType, undefined, false, true);
|
|
442
|
+
const countAlias = processColumnReference('count', databaseType);
|
|
443
|
+
const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
|
|
444
|
+
const valueAliasSubstring = valueField
|
|
445
|
+
? `, ${processColumnReference(`${valueField}`, databaseType, undefined, true)} AS ${valueAlias}`
|
|
446
|
+
: ``;
|
|
447
|
+
if (pivot.aggregationType === 'percentage' && pivot.valueField2) {
|
|
448
|
+
const value2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
|
|
449
|
+
const value2AliasSubstring = valueField && valueField !== pivot.valueField2
|
|
450
|
+
? `, ${processColumnReference(`${pivot.valueField2}`, databaseType, undefined, true)} AS ${value2Alias}`
|
|
451
|
+
: ``;
|
|
452
|
+
const compareCTE = itemQueries[1]
|
|
453
|
+
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
454
|
+
: '';
|
|
455
|
+
const aliasCTE = itemQueries[1]
|
|
456
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowAlias}${valueAliasSubstring}${value2AliasSubstring} FROM quill_ct)`
|
|
457
|
+
: '';
|
|
458
|
+
const compareCaseWhenCTE = itemQueries[1]
|
|
459
|
+
? `, quill_ct_cw as (SELECT ${rowAlias} as ${processColumnReference(`comparison_${rowAlias}`, databaseType)}, ${processAggType(pivot.aggregationType)}(${valueField ? valueAlias : '*'}) as ${processColumnReference(`comparison_${valueField ? valueAlias : countAlias}`, databaseType)} FROM quill_c_alias GROUP BY ${rowAlias})`
|
|
460
|
+
: '';
|
|
461
|
+
const joinQuery = itemQueries[1]
|
|
462
|
+
? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowField}`, databaseType)} = qt.${processColumnReference(`${rowField}`, databaseType)}`
|
|
463
|
+
: '';
|
|
464
|
+
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
465
|
+
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowAlias}${valueAliasSubstring}${value2AliasSubstring} FROM quill_qt),
|
|
466
|
+
quill_qt_cw AS (SELECT ${rowAlias}, sum(${valueAlias}) / ${max}(sum(${value2Alias}), 1) as ${valueField ? valueAlias : countAlias}_PERCENTAGE FROM quill_alias GROUP BY ${rowAlias})
|
|
467
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
468
|
+
SELECT * FROM quill_qt_cw qt
|
|
469
|
+
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
470
|
+
}
|
|
270
471
|
const compareCTE = itemQueries[1]
|
|
271
472
|
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
272
473
|
: '';
|
|
474
|
+
const aliasCTE = itemQueries[1]
|
|
475
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowAlias}${valueAliasSubstring} FROM quill_ct)`
|
|
476
|
+
: '';
|
|
273
477
|
const compareCaseWhenCTE = itemQueries[1]
|
|
274
|
-
? `, quill_ct_cw as (SELECT ${
|
|
478
|
+
? `, quill_ct_cw as (SELECT ${rowAlias} as ${processColumnReference(`comparison_${rowAlias}`, databaseType)}, ${processAggType(pivot.aggregationType)}(${valueField ? valueAlias : '*'}) as ${processColumnReference(`comparison_${valueField ? valueAlias : countAlias}`, databaseType)} FROM quill_c_alias GROUP BY ${rowAlias})`
|
|
275
479
|
: '';
|
|
276
480
|
const joinQuery = itemQueries[1]
|
|
277
481
|
? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowField}`, databaseType)} = qt.${processColumnReference(`${rowField}`, databaseType)}`
|
|
278
482
|
: '';
|
|
279
483
|
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
280
|
-
|
|
281
|
-
${
|
|
484
|
+
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowAlias}${valueAliasSubstring} FROM quill_qt),
|
|
485
|
+
quill_qt_cw AS (SELECT ${rowAlias}, ${processAggType(pivot.aggregationType)}(${valueField ? valueAlias : '*'}) as ${valueField ? valueAlias : countAlias} FROM quill_alias GROUP BY ${rowAlias})
|
|
486
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
282
487
|
SELECT * FROM quill_qt_cw qt
|
|
283
|
-
${joinQuery}`;
|
|
488
|
+
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
284
489
|
}
|
|
285
|
-
function create1DDatePivotQuery(pivot, itemQueries, dateBucket = 'month', databaseType, comparisonInterval) {
|
|
490
|
+
function create1DDatePivotQuery(pivot, itemQueries, dateBucket = 'month', databaseType, comparisonInterval, rowLimit) {
|
|
286
491
|
const rowField = pivot.rowField || '';
|
|
287
492
|
const valueField = pivot.valueField;
|
|
493
|
+
const rowFieldAlias = processColumnReference(rowField, databaseType, undefined);
|
|
494
|
+
const valueFieldAlias = processColumnReference(valueField ?? rowField, databaseType, undefined, false, true);
|
|
495
|
+
const countAlias = processColumnReference('count', databaseType);
|
|
496
|
+
const valueAliasSubstring = valueField
|
|
497
|
+
? `, ${processColumnReference(`${valueField}`, databaseType, undefined, true)} AS ${valueFieldAlias}`
|
|
498
|
+
: ``;
|
|
499
|
+
const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
|
|
500
|
+
// this "and" is for typescript. in reality, pivot.valueField2 must exist if pivot.aggregationType === 'percentage'
|
|
501
|
+
if (pivot.aggregationType === 'percentage' && pivot.valueField2) {
|
|
502
|
+
const valueField2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
|
|
503
|
+
const value2AliasSubstring = valueField !== pivot.valueField2
|
|
504
|
+
? `, ${processColumnReference(`${pivot.valueField2}`, databaseType, undefined, true)} AS ${valueField2Alias}`
|
|
505
|
+
: '';
|
|
506
|
+
const compareCTE = itemQueries[1] && comparisonInterval
|
|
507
|
+
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
508
|
+
: '';
|
|
509
|
+
const aliasCTE = itemQueries[1] && comparisonInterval
|
|
510
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}${valueAliasSubstring}${value2AliasSubstring} FROM quill_ct)`
|
|
511
|
+
: '';
|
|
512
|
+
const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
|
|
513
|
+
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)},
|
|
514
|
+
sum(${processColumnReference(`${valueFieldAlias}`, databaseType, undefined, true)}) / ${max}(sum(${processColumnReference(`${valueField2Alias}`, databaseType, undefined, true)}), 1) as ${processColumnReference(`comparison_${valueField ? valueFieldAlias : 'count'}`, databaseType)}_PERCENTAGE FROM quill_c_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
|
|
515
|
+
: '';
|
|
516
|
+
const joinQuery = itemQueries[1] && comparisonInterval
|
|
517
|
+
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${processColumnReference(rowField, databaseType)} = ${processDateTrunc(dateBucket, `ct.comparison_${rowField}`, databaseType, comparisonInterval)}`
|
|
518
|
+
: '';
|
|
519
|
+
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
520
|
+
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}${valueAliasSubstring}${value2AliasSubstring} FROM quill_qt),
|
|
521
|
+
quill_qt_agg AS (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`${rowField}`, databaseType)}, sum(${valueFieldAlias}) / ${max}(sum(${valueField2Alias}), 1) as ${valueField ? valueFieldAlias : countAlias}_PERCENTAGE FROM quill_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
|
|
522
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
523
|
+
SELECT * FROM quill_qt_agg qt
|
|
524
|
+
${joinQuery} ORDER BY qt.${processColumnReference(`${rowField}`, databaseType)}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
525
|
+
}
|
|
288
526
|
const compareCTE = itemQueries[1] && comparisonInterval
|
|
289
527
|
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
290
528
|
: '';
|
|
529
|
+
const aliasCTE = itemQueries[1] && comparisonInterval
|
|
530
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}${valueAliasSubstring} FROM quill_ct)`
|
|
531
|
+
: '';
|
|
291
532
|
const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
|
|
292
|
-
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket,
|
|
533
|
+
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)},
|
|
534
|
+
${processAggType(pivot.aggregationType)}(${valueFieldAlias}) as ${processColumnReference(`comparison_${valueField ? valueFieldAlias : 'count'}`, databaseType)} FROM quill_c_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
|
|
293
535
|
: '';
|
|
294
536
|
const joinQuery = itemQueries[1] && comparisonInterval
|
|
295
|
-
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${processColumnReference(
|
|
537
|
+
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${processColumnReference(rowField, databaseType)} = ${processDateTrunc(dateBucket, `ct.comparison_${rowField}`, databaseType, comparisonInterval)}`
|
|
296
538
|
: '';
|
|
297
539
|
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
298
|
-
|
|
299
|
-
${
|
|
540
|
+
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}${valueAliasSubstring} FROM quill_qt),
|
|
541
|
+
quill_qt_agg AS (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`${rowField}`, databaseType)}, ${processAggType(pivot.aggregationType)}(${valueField ? valueFieldAlias : rowFieldAlias}) as ${valueField ? valueFieldAlias : countAlias} FROM quill_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
|
|
542
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
300
543
|
SELECT * FROM quill_qt_agg qt
|
|
301
|
-
${joinQuery} ORDER BY qt.${processColumnReference(`${rowField}`, databaseType)}`;
|
|
544
|
+
${joinQuery} ORDER BY qt.${processColumnReference(`${rowField}`, databaseType)}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
302
545
|
}
|
|
303
|
-
function createAggregationValuePivot(pivot, itemQueries, databaseType) {
|
|
546
|
+
function createAggregationValuePivot(pivot, itemQueries, databaseType, rowLimit) {
|
|
304
547
|
const valueField = pivot.valueField;
|
|
305
548
|
const aggregationType = processAggType(pivot.aggregationType);
|
|
306
549
|
if (!pivot.valueField)
|
|
307
550
|
return undefined;
|
|
551
|
+
const valueAlias = processColumnReference(valueField, databaseType, undefined, false, true);
|
|
552
|
+
if (aggregationType === 'percentage' && pivot.valueField2) {
|
|
553
|
+
const value2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
|
|
554
|
+
const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
|
|
555
|
+
const compareCTE = itemQueries[1]
|
|
556
|
+
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
557
|
+
: '';
|
|
558
|
+
const aliasCTE = itemQueries[1]
|
|
559
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(valueField, databaseType, undefined, true)} AS ${valueAlias}, ${processColumnReference(pivot.valueField2, databaseType, undefined, true)} AS ${value2Alias} FROM quill_ct)`
|
|
560
|
+
: '';
|
|
561
|
+
const compareAggregation = itemQueries[1]
|
|
562
|
+
? `, quill_ct_cw as (SELECT sum(${processColumnReference(`${valueField}`, databaseType)}) / ${max}(sum(${processColumnReference(`${pivot.valueField2}`, databaseType)}), 1) as ${processColumnReference(`comparison_${valueField}_PERCENTAGE`, databaseType)} FROM quill_c_alias)`
|
|
563
|
+
: '';
|
|
564
|
+
const joinQuery = itemQueries[1] ? `CROSS JOIN quill_ct_cw ct` : '';
|
|
565
|
+
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}), quill_alias AS (SELECT ${processColumnReference(`${valueField}`, databaseType, undefined, true)} AS ${valueAlias}, ${processColumnReference(`${pivot.valueField2}`, databaseType, undefined, true)} AS ${value2Alias} FROM quill_qt),
|
|
566
|
+
quill_qt_agg AS (SELECT sum(${valueAlias}) / ${max}(sum(${value2Alias}), 1) as ${processColumnReference(`${valueField}`, databaseType)}_PERCENTAGE FROM quill_alias)
|
|
567
|
+
${compareCTE} ${aliasCTE} ${compareAggregation}
|
|
568
|
+
SELECT * FROM quill_qt_agg qt
|
|
569
|
+
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
570
|
+
}
|
|
308
571
|
const compareCTE = itemQueries[1]
|
|
309
572
|
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
310
573
|
: '';
|
|
574
|
+
const aliasCTE = itemQueries[1]
|
|
575
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(valueField, databaseType, undefined, true)} AS ${valueAlias} FROM quill_ct)`
|
|
576
|
+
: '';
|
|
311
577
|
const compareAggregation = itemQueries[1]
|
|
312
|
-
? `, quill_ct_cw as (SELECT ${aggregationType}(${processColumnReference(`${valueField}`, databaseType)}) as ${processColumnReference(`comparison_${valueField}`, databaseType)} FROM
|
|
578
|
+
? `, quill_ct_cw as (SELECT ${aggregationType}(${processColumnReference(`${valueField}`, databaseType)}) as ${processColumnReference(`comparison_${valueField}`, databaseType)} FROM quill_c_alias)`
|
|
313
579
|
: '';
|
|
314
580
|
const joinQuery = itemQueries[1] ? `CROSS JOIN quill_ct_cw ct` : '';
|
|
315
|
-
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
316
|
-
quill_qt_agg AS (SELECT ${aggregationType}(${
|
|
317
|
-
${compareCTE} ${compareAggregation}
|
|
318
|
-
SELECT * FROM quill_qt_agg qt
|
|
319
|
-
${joinQuery}`;
|
|
581
|
+
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}), quill_alias AS (SELECT ${processColumnReference(`${valueField}`, databaseType, undefined, true)} AS ${valueAlias} FROM quill_qt),
|
|
582
|
+
quill_qt_agg AS (SELECT ${aggregationType}(${valueAlias}) as ${processColumnReference(`${valueField}`, databaseType)} FROM quill_alias)
|
|
583
|
+
${compareCTE} ${aliasCTE} ${compareAggregation}
|
|
584
|
+
SELECT * FROM quill_qt_agg qt
|
|
585
|
+
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
320
586
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAU,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EACL,kBAAkB,EAClB,KAAK,EACL,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAU,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EACL,kBAAkB,EAClB,KAAK,EACL,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAY1B,OAAO,EACL,oBAAoB,EAIrB,MAAM,mBAAmB,CAAC;AAI3B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,OAAO,EAAE,cAAc,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7D,aAAa,EAAE,GAAG,EAAE,CAAC;IACrB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,mBAAmB,CAAC;IAClC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,WAkB1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,mBAGnC,CAAC;AA2BF,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,EAC3B,aAAa,UAAO,EACpB,OAAO,GAAE,GAAG,EAAO,EACnB,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,GAAG,EAClB,QAAQ,CAAC,EAAE,OAAO,EAClB,YAAY,CAAC,EAAE,OAAO,EACtB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuI1D;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,mBAAmB,EAC3B,aAAa,UAAO,EACpB,OAAO,GAAE,GAAG,EAAO,EACnB,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,YAAY,CAAC,EAAE,GAAG,EAClB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmC7B;AAED,wBAAsB,UAAU,CAAC,EAC/B,MAAM,EACN,eAAe,EACf,MAAM,GACP,EAAE;IACD,MAAM,EAAE,GAAG,CAAC;IACZ,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,mBAAmB,CAAC;CAC7B,GAAG,OAAO,CAAC,GAAG,CAAC,CA4Cf;AAED,eAAO,MAAM,oBAAoB,WAAY,GAAG,QAkB/C,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,mBAAmB,GAC1B,WAAW,CAsDb;AAED,eAAO,MAAM,6BAA6B,YAC/B,GAAG,YACF,GAAG,UACL,KAAK,EAAE,UACP,mBAAmB,UACnB,KAAK,qBACM,GAAG,iBACP,MAAM,qBACF;IACjB,aAAa,EAAE,mBAAmB,CAAC;IACnC,UAAU,EAAE,kBAAkB,CAAC;CAChC,WACQ,mBAAmB,iBACb,GAAG,qBACC,OAAO,iBACX,OAAO,eACT,oBAAoB,KAChC,OAAO,CAAC,iBAAiB,CAgK3B,CAAC"}
|