@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
|
@@ -16,36 +16,65 @@ function replaceBigQuerySpecialCharacters(column) {
|
|
|
16
16
|
}
|
|
17
17
|
export function processColumnReference(column, databaseType, fallbackOnNull,
|
|
18
18
|
// for mysql, we only want to use double quotes for pivot column field aliases
|
|
19
|
-
|
|
20
|
-
if (['postgresql'
|
|
19
|
+
isPivotColumnFieldAlias, isPivotValueFieldAlias) {
|
|
20
|
+
if (['postgresql'].includes(databaseType.toLowerCase())) {
|
|
21
|
+
if (isPivotColumnFieldAlias) {
|
|
22
|
+
return `"${column.replaceAll('"', '')}"`;
|
|
23
|
+
}
|
|
21
24
|
const columnParts = column.split('.');
|
|
22
25
|
if (columnParts.length > 1) {
|
|
23
|
-
return `"
|
|
26
|
+
return (`"` +
|
|
27
|
+
columnParts.map((part) => part.replaceAll('"', '')).join('"."') +
|
|
28
|
+
`"`);
|
|
24
29
|
}
|
|
25
30
|
if (column === '' && fallbackOnNull) {
|
|
26
31
|
return `"${fallbackOnNull}"`;
|
|
27
32
|
}
|
|
28
|
-
return `"${column}"`;
|
|
33
|
+
return `"${column.replaceAll('"', '')}"`;
|
|
29
34
|
}
|
|
30
35
|
if (['mysql'].includes(databaseType.toLowerCase())) {
|
|
31
|
-
if (
|
|
32
|
-
return `"
|
|
36
|
+
if (isPivotColumnFieldAlias) {
|
|
37
|
+
return `\`${column.replaceAll(`\``, '').replaceAll(`"`, '')}\``;
|
|
33
38
|
}
|
|
34
39
|
const columnParts = column.split('.');
|
|
35
40
|
if (columnParts.length > 1) {
|
|
36
|
-
return
|
|
41
|
+
return (`\`` +
|
|
42
|
+
columnParts.map((part) => part.replaceAll(`\``, '')).join('`.`') +
|
|
43
|
+
`\``);
|
|
37
44
|
}
|
|
38
45
|
if (column === '' && fallbackOnNull) {
|
|
39
46
|
return `${fallbackOnNull}`;
|
|
40
47
|
}
|
|
41
48
|
// Wrap MySQL columns in backticks to handle whitespace
|
|
42
|
-
return `\`${column}\``;
|
|
49
|
+
return `\`${column.replaceAll(`\``, '')}\``;
|
|
50
|
+
}
|
|
51
|
+
if (['snowflake'].includes(databaseType.toLowerCase())) {
|
|
52
|
+
if (isPivotColumnFieldAlias) {
|
|
53
|
+
return `"${column.replaceAll('"', '')}"`;
|
|
54
|
+
}
|
|
55
|
+
if (isPivotValueFieldAlias) {
|
|
56
|
+
const cleanedColumn = column.replaceAll(')', '').replaceAll('(', '_');
|
|
57
|
+
return `${cleanedColumn}`;
|
|
58
|
+
}
|
|
59
|
+
// const columnParts = column.split('.');
|
|
60
|
+
// if (columnParts.length > 1) {
|
|
61
|
+
// return '"' + columnParts.join('"."') + '"';
|
|
62
|
+
// }
|
|
63
|
+
if (column === '' && fallbackOnNull) {
|
|
64
|
+
return `${fallbackOnNull}`;
|
|
65
|
+
}
|
|
66
|
+
return column;
|
|
67
|
+
}
|
|
68
|
+
if (isPivotColumnFieldAlias) {
|
|
69
|
+
return `\`${column.replaceAll('`', '')}\``;
|
|
43
70
|
}
|
|
44
71
|
const columnParts = column.split('.');
|
|
45
72
|
if (columnParts.length > 1) {
|
|
46
|
-
return
|
|
73
|
+
return (`\`` +
|
|
74
|
+
columnParts.map((part) => part.replaceAll(`\``, '')).join('`.`') +
|
|
75
|
+
`\``);
|
|
47
76
|
}
|
|
48
|
-
return `\`${replaceBigQuerySpecialCharacters(column)}\``;
|
|
77
|
+
return `\`${replaceBigQuerySpecialCharacters(column.replaceAll('`', ''))}\``;
|
|
49
78
|
}
|
|
50
79
|
export function replaceSpacesWithUnderscores(column) {
|
|
51
80
|
return column.replaceAll(' ', '_');
|
|
@@ -115,6 +144,8 @@ export function generateDistinctQuery(stringFields, query, databaseType) {
|
|
|
115
144
|
return generateDistinctQueryMySQL(stringFields, query);
|
|
116
145
|
case 'postgresql':
|
|
117
146
|
return generateDistinctQueryPostgres(stringFields, query);
|
|
147
|
+
case 'snowflake':
|
|
148
|
+
return generateDistinctQuerySnowflake(stringFields, query);
|
|
118
149
|
default:
|
|
119
150
|
return generateDistinctQueryDefault(stringFields, query, databaseType);
|
|
120
151
|
}
|
|
@@ -127,21 +158,6 @@ function generateDistinctQueryDefault(stringFields, query, databaseType) {
|
|
|
127
158
|
return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
|
|
128
159
|
}
|
|
129
160
|
function generateDistinctQueryMySQL(stringFields, query) {
|
|
130
|
-
// WITH querytable AS (
|
|
131
|
-
// SELECT DISTINCT merchant, user_name, category
|
|
132
|
-
// FROM transactions
|
|
133
|
-
// )
|
|
134
|
-
// SELECT 'merchant' AS field, JSON_ARRAYAGG(merchant) AS string_values
|
|
135
|
-
// FROM (SELECT DISTINCT merchant FROM querytable) AS distinct_merchants
|
|
136
|
-
// UNION ALL
|
|
137
|
-
// SELECT 'user_name' AS field, JSON_ARRAYAGG(user_name) AS string_values
|
|
138
|
-
// FROM (SELECT DISTINCT user_name FROM querytable) AS distinct_user_names
|
|
139
|
-
// UNION ALL
|
|
140
|
-
// SELECT 'category' AS field, JSON_ARRAYAGG(category) AS string_values
|
|
141
|
-
// FROM (SELECT DISTINCT category FROM querytable) AS distinct_categories;
|
|
142
|
-
// const distinctQueries = stringFields.map((field) => {
|
|
143
|
-
// return `SELECT '${field}' AS ${processColumnReference('field', 'mysql')}, JSON_ARRAYAGG(${field}) AS ${processColumnReference('string_values', 'mysql')} FROM querytable`;
|
|
144
|
-
// });
|
|
145
161
|
const distinctQueries = stringFields.map((field) => {
|
|
146
162
|
return `
|
|
147
163
|
SELECT '${field}' AS ${processColumnReference('field', 'mysql')},
|
|
@@ -158,29 +174,40 @@ function generateDistinctQueryPostgres(stringFields, query) {
|
|
|
158
174
|
const distinctQuery = distinctQueries.join(' UNION ALL ');
|
|
159
175
|
return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
|
|
160
176
|
}
|
|
177
|
+
function generateDistinctQuerySnowflake(stringFields, query) {
|
|
178
|
+
const distinctQueries = stringFields.map((field) => {
|
|
179
|
+
return `SELECT '${field}' AS "field", ARRAY_AGG(DISTINCT "${field}") AS "string_values" FROM querytable`;
|
|
180
|
+
});
|
|
181
|
+
const distinctQuery = distinctQueries.join(' UNION ALL ');
|
|
182
|
+
return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
|
|
183
|
+
}
|
|
161
184
|
export function generateMinMaxRangeQueries(columnFields, query, databaseType) {
|
|
185
|
+
const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
|
|
162
186
|
const distinctQueries = columnFields.map((field) => {
|
|
163
|
-
const wrappedField = ['postgresql'
|
|
187
|
+
const wrappedField = ['postgresql'].includes(databaseType.toLowerCase())
|
|
164
188
|
? `"${field}"`
|
|
165
189
|
: field;
|
|
166
|
-
return `SELECT '${field}' AS field, MIN(${wrappedField}) AS min_range,
|
|
190
|
+
return `SELECT '${field}' AS field, MIN(${wrappedField}) AS min_range, ${max}(${wrappedField}) AS max_range FROM querytable`;
|
|
167
191
|
});
|
|
168
192
|
const distinctQuery = distinctQueries.join(' UNION ALL ');
|
|
169
193
|
return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
|
|
170
194
|
}
|
|
171
|
-
export function generatePivotQuery(pivot, itemQueries, databaseType, comparisonInterval, distinctStrings, dateBucket) {
|
|
195
|
+
export function generatePivotQuery(pivot, itemQueries, databaseType, comparisonInterval, distinctStrings, dateBucket, rowLimit) {
|
|
172
196
|
if (!isValidPivot(pivot)) {
|
|
173
197
|
return undefined;
|
|
174
198
|
}
|
|
175
199
|
if (pivot.columnField) {
|
|
176
|
-
|
|
200
|
+
console.log('1');
|
|
201
|
+
return create2DPivotQuery(pivot, itemQueries, databaseType, dateBucket, comparisonInterval, distinctStrings, rowLimit);
|
|
177
202
|
}
|
|
178
203
|
if (pivot.rowField) {
|
|
179
|
-
|
|
204
|
+
console.log('2');
|
|
205
|
+
return create1DPivotQuery(pivot, itemQueries, dateBucket, databaseType, comparisonInterval, rowLimit);
|
|
180
206
|
}
|
|
181
|
-
|
|
207
|
+
console.log('3');
|
|
208
|
+
return createAggregationValuePivot(pivot, itemQueries, databaseType, rowLimit);
|
|
182
209
|
}
|
|
183
|
-
function create2DPivotQuery(pivot, itemQueries, databaseType, dateBucket, comparisonInterval, columnFieldValues) {
|
|
210
|
+
function create2DPivotQuery(pivot, itemQueries, databaseType, dateBucket, comparisonInterval, columnFieldValues, rowLimit) {
|
|
184
211
|
if (!pivot || !pivot.columnField) {
|
|
185
212
|
return undefined;
|
|
186
213
|
}
|
|
@@ -189,123 +216,363 @@ function create2DPivotQuery(pivot, itemQueries, databaseType, dateBucket, compar
|
|
|
189
216
|
}
|
|
190
217
|
if (['string', 'varchar'].includes(pivot.rowFieldType || '') ||
|
|
191
218
|
!pivot.rowFieldType) {
|
|
192
|
-
return create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databaseType);
|
|
219
|
+
return create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databaseType, rowLimit);
|
|
193
220
|
}
|
|
194
|
-
return create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseType, dateBucket, comparisonInterval);
|
|
221
|
+
return create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseType, dateBucket, comparisonInterval, rowLimit);
|
|
195
222
|
}
|
|
196
|
-
function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databaseType) {
|
|
223
|
+
function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databaseType, rowLimit) {
|
|
197
224
|
if (!pivot.columnField || !pivot.rowField) {
|
|
198
225
|
return undefined;
|
|
199
226
|
}
|
|
200
227
|
const rowField = pivot.rowField;
|
|
201
228
|
const valueField = pivot.valueField;
|
|
202
229
|
const columnField = pivot.columnField;
|
|
230
|
+
const rowFieldAlias = processColumnReference(rowField, databaseType, undefined, false, true);
|
|
231
|
+
const valueFieldAlias = processColumnReference(valueField, databaseType, undefined, false, true);
|
|
232
|
+
const columnFieldAlias = processColumnReference(columnField, databaseType, undefined, false, true);
|
|
233
|
+
const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
|
|
234
|
+
const valueAliasSubstring = valueField
|
|
235
|
+
? `${processColumnReference(valueField, databaseType, undefined, true)} AS ${valueFieldAlias},`
|
|
236
|
+
: '';
|
|
237
|
+
if (pivot.aggregationType === 'percentage' && pivot.valueField2) {
|
|
238
|
+
const valueField2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
|
|
239
|
+
const value2AliasSubstring = `${processColumnReference(pivot.valueField2, databaseType, undefined, true)} AS ${valueField2Alias},`;
|
|
240
|
+
if (pivot.valueField === pivot.valueField2) {
|
|
241
|
+
const caseWhens = columnFieldValues.map((column) => {
|
|
242
|
+
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)}`;
|
|
243
|
+
});
|
|
244
|
+
const caseWhensCompare = columnFieldValues.map((column) => {
|
|
245
|
+
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)}`;
|
|
246
|
+
});
|
|
247
|
+
const compareCTE = itemQueries[1]
|
|
248
|
+
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
249
|
+
: '';
|
|
250
|
+
const aliasCTE = itemQueries[1]
|
|
251
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
252
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
253
|
+
: '';
|
|
254
|
+
const compareCaseWhenCTE = itemQueries[1]
|
|
255
|
+
? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}, ${caseWhensCompare.join(', ')} FROM quill_c_alias GROUP BY ${rowFieldAlias})`
|
|
256
|
+
: '';
|
|
257
|
+
const joinQuery = itemQueries[1]
|
|
258
|
+
? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)} = qt.${rowFieldAlias}`
|
|
259
|
+
: '';
|
|
260
|
+
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
261
|
+
quill_alias AS (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
262
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_qt),
|
|
263
|
+
quill_qt_cw AS (SELECT ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${rowFieldAlias})
|
|
264
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
265
|
+
SELECT * FROM quill_qt_cw qt
|
|
266
|
+
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
267
|
+
}
|
|
268
|
+
const caseWhens = columnFieldValues.map((column) => {
|
|
269
|
+
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)}`;
|
|
270
|
+
});
|
|
271
|
+
const caseWhensCompare = columnFieldValues.map((column) => {
|
|
272
|
+
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)}`;
|
|
273
|
+
});
|
|
274
|
+
const compareCTE = itemQueries[1]
|
|
275
|
+
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
276
|
+
: '';
|
|
277
|
+
const aliasCTE = itemQueries[1]
|
|
278
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring} ${value2AliasSubstring}
|
|
279
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
280
|
+
: '';
|
|
281
|
+
const compareCaseWhenCTE = itemQueries[1]
|
|
282
|
+
? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}, ${caseWhensCompare.join(', ')} FROM quill_c_alias GROUP BY ${rowFieldAlias})`
|
|
283
|
+
: '';
|
|
284
|
+
const joinQuery = itemQueries[1]
|
|
285
|
+
? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)} = qt.${rowFieldAlias}`
|
|
286
|
+
: '';
|
|
287
|
+
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
288
|
+
quill_alias AS (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring} ${value2AliasSubstring}
|
|
289
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_qt),
|
|
290
|
+
quill_qt_cw AS (SELECT ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${rowFieldAlias})
|
|
291
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
292
|
+
SELECT * FROM quill_qt_cw qt
|
|
293
|
+
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
294
|
+
}
|
|
203
295
|
const caseWhens = columnFieldValues.map((column) => {
|
|
204
|
-
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN ${
|
|
296
|
+
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)} END) AS ${processColumnReference(column, databaseType, '_', true)}`;
|
|
205
297
|
});
|
|
206
298
|
const caseWhensCompare = columnFieldValues.map((column) => {
|
|
207
|
-
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN ${
|
|
299
|
+
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)} END) AS ${processColumnReference(`comparison_${column}`, databaseType, '_', true)}`;
|
|
208
300
|
});
|
|
209
301
|
const compareCTE = itemQueries[1]
|
|
210
302
|
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
211
303
|
: '';
|
|
304
|
+
const aliasCTE = itemQueries[1]
|
|
305
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
306
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
307
|
+
: '';
|
|
212
308
|
const compareCaseWhenCTE = itemQueries[1]
|
|
213
|
-
? `, quill_ct_cw as (SELECT ${
|
|
309
|
+
? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}, ${caseWhensCompare.join(', ')} FROM quill_c_alias GROUP BY ${rowFieldAlias})`
|
|
214
310
|
: '';
|
|
215
311
|
const joinQuery = itemQueries[1]
|
|
216
|
-
? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${
|
|
312
|
+
? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)} = qt.${rowFieldAlias}`
|
|
217
313
|
: '';
|
|
218
314
|
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
219
|
-
|
|
220
|
-
${
|
|
315
|
+
quill_alias AS (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
316
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_qt),
|
|
317
|
+
quill_qt_cw AS (SELECT ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${rowFieldAlias})
|
|
318
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
221
319
|
SELECT * FROM quill_qt_cw qt
|
|
222
|
-
${joinQuery}`;
|
|
320
|
+
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
223
321
|
}
|
|
224
|
-
function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseType, dateBucket = 'month', comparisonInterval) {
|
|
322
|
+
function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseType, dateBucket = 'month', comparisonInterval, rowLimit) {
|
|
225
323
|
if (!pivot.columnField || !pivot.rowField) {
|
|
226
324
|
return undefined;
|
|
227
325
|
}
|
|
228
326
|
const rowField = pivot.rowField;
|
|
229
327
|
const columnField = pivot.columnField;
|
|
328
|
+
const rowFieldAlias = processColumnReference(rowField, databaseType, undefined, false, true);
|
|
329
|
+
const valueFieldAlias = processColumnReference(pivot.valueField ?? rowField, databaseType, undefined, false, true);
|
|
330
|
+
const columnFieldAlias = processColumnReference(columnField, databaseType, undefined, false, true);
|
|
331
|
+
const valueAliasSubstring = pivot.valueField
|
|
332
|
+
? `${processColumnReference(pivot.valueField, databaseType, undefined, true)} AS ${valueFieldAlias},`
|
|
333
|
+
: '';
|
|
334
|
+
const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
|
|
335
|
+
if (pivot.aggregationType === 'percentage' && pivot.valueField2) {
|
|
336
|
+
const valueField2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
|
|
337
|
+
const value2AliasSubstring = `${processColumnReference(pivot.valueField2, databaseType, undefined, true)} AS ${valueField2Alias},`;
|
|
338
|
+
// 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
|
|
339
|
+
if (pivot.valueField === pivot.valueField2) {
|
|
340
|
+
const caseWhens = columnFieldValues.map((column) => {
|
|
341
|
+
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)}`;
|
|
342
|
+
});
|
|
343
|
+
const caseWhensCompare = columnFieldValues.map((column) => {
|
|
344
|
+
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)}`;
|
|
345
|
+
});
|
|
346
|
+
const compareCTE = itemQueries[1] && comparisonInterval
|
|
347
|
+
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
348
|
+
: '';
|
|
349
|
+
const aliasCTE = itemQueries[1]
|
|
350
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
351
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
352
|
+
: '';
|
|
353
|
+
const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
|
|
354
|
+
? `, 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)})`
|
|
355
|
+
: '';
|
|
356
|
+
const joinQuery = itemQueries[1] && comparisonInterval
|
|
357
|
+
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${rowFieldAlias} = ${processDateTrunc(dateBucket, `ct.comparison_${rowFieldAlias}`, databaseType, comparisonInterval)}`
|
|
358
|
+
: '';
|
|
359
|
+
return `WITH quill_query_table AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
360
|
+
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
361
|
+
${processColumnReference(columnField, databaseType, undefined, true, true)} AS ${columnFieldAlias} FROM quill_query_table),
|
|
362
|
+
quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
|
|
363
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
364
|
+
SELECT * FROM quill_qt_agg qt
|
|
365
|
+
${joinQuery} ORDER BY qt.${rowFieldAlias}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
366
|
+
}
|
|
367
|
+
const caseWhens = columnFieldValues.map((column) => {
|
|
368
|
+
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)}`;
|
|
369
|
+
});
|
|
370
|
+
const caseWhensCompare = columnFieldValues.map((column) => {
|
|
371
|
+
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)}`;
|
|
372
|
+
});
|
|
373
|
+
const compareCTE = itemQueries[1] && comparisonInterval
|
|
374
|
+
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
375
|
+
: '';
|
|
376
|
+
const aliasCTE = itemQueries[1]
|
|
377
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring} ${value2AliasSubstring}
|
|
378
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
379
|
+
: '';
|
|
380
|
+
const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
|
|
381
|
+
? `, 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)})`
|
|
382
|
+
: '';
|
|
383
|
+
const joinQuery = itemQueries[1] && comparisonInterval
|
|
384
|
+
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${rowFieldAlias} = ${processDateTrunc(dateBucket, `ct.comparison_${rowFieldAlias}`, databaseType, comparisonInterval)}`
|
|
385
|
+
: '';
|
|
386
|
+
return `WITH quill_query_table AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
387
|
+
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring} ${value2AliasSubstring}
|
|
388
|
+
${processColumnReference(columnField, databaseType, undefined, true, true)} AS ${columnFieldAlias} FROM quill_query_table),
|
|
389
|
+
quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
|
|
390
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
391
|
+
SELECT * FROM quill_qt_agg qt
|
|
392
|
+
${joinQuery} ORDER BY qt.${rowFieldAlias}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
393
|
+
}
|
|
230
394
|
const caseWhens = columnFieldValues.map((column) => {
|
|
231
|
-
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN
|
|
395
|
+
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)} END) AS ${processColumnReference(column, databaseType, '_', true)}`;
|
|
232
396
|
});
|
|
233
397
|
const caseWhensCompare = columnFieldValues.map((column) => {
|
|
234
|
-
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN ${
|
|
398
|
+
return `${processAggType(pivot.aggregationType, true)}(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${processValueField(pivot.aggregationType, databaseType, valueFieldAlias)} END) AS ${processColumnReference(`comparison_${column}`, databaseType, '_', true)}`;
|
|
235
399
|
});
|
|
236
400
|
const compareCTE = itemQueries[1] && comparisonInterval
|
|
237
401
|
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
238
402
|
: '';
|
|
403
|
+
const aliasCTE = itemQueries[1]
|
|
404
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
405
|
+
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
406
|
+
: '';
|
|
239
407
|
const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
|
|
240
|
-
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${
|
|
408
|
+
? `, 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)})`
|
|
241
409
|
: '';
|
|
242
410
|
const joinQuery = itemQueries[1] && comparisonInterval
|
|
243
|
-
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${
|
|
411
|
+
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${rowFieldAlias} = ${processDateTrunc(dateBucket, `ct.comparison_${rowFieldAlias}`, databaseType, comparisonInterval)}`
|
|
244
412
|
: '';
|
|
245
413
|
return `WITH quill_query_table AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
246
|
-
|
|
247
|
-
${
|
|
414
|
+
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
415
|
+
${processColumnReference(columnField, databaseType, undefined, true, true)} AS ${columnFieldAlias} FROM quill_query_table),
|
|
416
|
+
quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}, ${caseWhens.join(', ')} FROM quill_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
|
|
417
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
248
418
|
SELECT * FROM quill_qt_agg qt
|
|
249
|
-
${joinQuery} ORDER BY qt.${
|
|
419
|
+
${joinQuery} ORDER BY qt.${rowFieldAlias}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
250
420
|
}
|
|
251
|
-
function create1DPivotQuery(pivot, itemQueries, dateBucket = 'month', databaseType, comparisonInterval) {
|
|
421
|
+
function create1DPivotQuery(pivot, itemQueries, dateBucket = 'month', databaseType, comparisonInterval, rowLimit) {
|
|
422
|
+
console.log('HELLO 0: ', JSON.stringify(pivot), itemQueries);
|
|
252
423
|
if (['string', 'varchar'].includes(pivot.rowFieldType || '') ||
|
|
253
424
|
!pivot.rowFieldType) {
|
|
254
|
-
return create1DStringPivotQuery(pivot, itemQueries, databaseType);
|
|
425
|
+
return create1DStringPivotQuery(pivot, itemQueries, databaseType, rowLimit);
|
|
255
426
|
}
|
|
256
|
-
return create1DDatePivotQuery(pivot, itemQueries, dateBucket, databaseType, comparisonInterval);
|
|
427
|
+
return create1DDatePivotQuery(pivot, itemQueries, dateBucket, databaseType, comparisonInterval, rowLimit);
|
|
257
428
|
}
|
|
258
|
-
function create1DStringPivotQuery(pivot, itemQueries, databaseType) {
|
|
429
|
+
function create1DStringPivotQuery(pivot, itemQueries, databaseType, rowLimit) {
|
|
259
430
|
const rowField = pivot.rowField;
|
|
260
431
|
const valueField = pivot.valueField;
|
|
432
|
+
const rowAlias = processColumnReference(rowField, databaseType, undefined, false, true);
|
|
433
|
+
const valueAlias = processColumnReference(valueField ?? rowField, databaseType, undefined, false, true);
|
|
434
|
+
const countAlias = processColumnReference('count', databaseType);
|
|
435
|
+
const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
|
|
436
|
+
const valueAliasSubstring = valueField
|
|
437
|
+
? `, ${processColumnReference(`${valueField}`, databaseType, undefined, true)} AS ${valueAlias}`
|
|
438
|
+
: ``;
|
|
439
|
+
if (pivot.aggregationType === 'percentage' && pivot.valueField2) {
|
|
440
|
+
const value2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
|
|
441
|
+
const value2AliasSubstring = valueField && valueField !== pivot.valueField2
|
|
442
|
+
? `, ${processColumnReference(`${pivot.valueField2}`, databaseType, undefined, true)} AS ${value2Alias}`
|
|
443
|
+
: ``;
|
|
444
|
+
const compareCTE = itemQueries[1]
|
|
445
|
+
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
446
|
+
: '';
|
|
447
|
+
const aliasCTE = itemQueries[1]
|
|
448
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowAlias}${valueAliasSubstring}${value2AliasSubstring} FROM quill_ct)`
|
|
449
|
+
: '';
|
|
450
|
+
const compareCaseWhenCTE = itemQueries[1]
|
|
451
|
+
? `, 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})`
|
|
452
|
+
: '';
|
|
453
|
+
const joinQuery = itemQueries[1]
|
|
454
|
+
? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowField}`, databaseType)} = qt.${processColumnReference(`${rowField}`, databaseType)}`
|
|
455
|
+
: '';
|
|
456
|
+
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
457
|
+
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowAlias}${valueAliasSubstring}${value2AliasSubstring} FROM quill_qt),
|
|
458
|
+
quill_qt_cw AS (SELECT ${rowAlias}, sum(${valueAlias}) / ${max}(sum(${value2Alias}), 1) as ${valueField ? valueAlias : countAlias}_PERCENTAGE FROM quill_alias GROUP BY ${rowAlias})
|
|
459
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
460
|
+
SELECT * FROM quill_qt_cw qt
|
|
461
|
+
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
462
|
+
}
|
|
261
463
|
const compareCTE = itemQueries[1]
|
|
262
464
|
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
263
465
|
: '';
|
|
466
|
+
const aliasCTE = itemQueries[1]
|
|
467
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowAlias}${valueAliasSubstring} FROM quill_ct)`
|
|
468
|
+
: '';
|
|
264
469
|
const compareCaseWhenCTE = itemQueries[1]
|
|
265
|
-
? `, quill_ct_cw as (SELECT ${
|
|
470
|
+
? `, 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})`
|
|
266
471
|
: '';
|
|
267
472
|
const joinQuery = itemQueries[1]
|
|
268
473
|
? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowField}`, databaseType)} = qt.${processColumnReference(`${rowField}`, databaseType)}`
|
|
269
474
|
: '';
|
|
270
475
|
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
271
|
-
|
|
272
|
-
${
|
|
476
|
+
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowAlias}${valueAliasSubstring} FROM quill_qt),
|
|
477
|
+
quill_qt_cw AS (SELECT ${rowAlias}, ${processAggType(pivot.aggregationType)}(${valueField ? valueAlias : '*'}) as ${valueField ? valueAlias : countAlias} FROM quill_alias GROUP BY ${rowAlias})
|
|
478
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
273
479
|
SELECT * FROM quill_qt_cw qt
|
|
274
|
-
${joinQuery}`;
|
|
480
|
+
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
275
481
|
}
|
|
276
|
-
function create1DDatePivotQuery(pivot, itemQueries, dateBucket = 'month', databaseType, comparisonInterval) {
|
|
482
|
+
function create1DDatePivotQuery(pivot, itemQueries, dateBucket = 'month', databaseType, comparisonInterval, rowLimit) {
|
|
277
483
|
const rowField = pivot.rowField || '';
|
|
278
484
|
const valueField = pivot.valueField;
|
|
485
|
+
const rowFieldAlias = processColumnReference(rowField, databaseType, undefined);
|
|
486
|
+
const valueFieldAlias = processColumnReference(valueField ?? rowField, databaseType, undefined, false, true);
|
|
487
|
+
const countAlias = processColumnReference('count', databaseType);
|
|
488
|
+
const valueAliasSubstring = valueField
|
|
489
|
+
? `, ${processColumnReference(`${valueField}`, databaseType, undefined, true)} AS ${valueFieldAlias}`
|
|
490
|
+
: ``;
|
|
491
|
+
const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
|
|
492
|
+
// this "and" is for typescript. in reality, pivot.valueField2 must exist if pivot.aggregationType === 'percentage'
|
|
493
|
+
if (pivot.aggregationType === 'percentage' && pivot.valueField2) {
|
|
494
|
+
const valueField2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
|
|
495
|
+
const value2AliasSubstring = valueField !== pivot.valueField2
|
|
496
|
+
? `, ${processColumnReference(`${pivot.valueField2}`, databaseType, undefined, true)} AS ${valueField2Alias}`
|
|
497
|
+
: '';
|
|
498
|
+
const compareCTE = itemQueries[1] && comparisonInterval
|
|
499
|
+
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
500
|
+
: '';
|
|
501
|
+
const aliasCTE = itemQueries[1] && comparisonInterval
|
|
502
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}${valueAliasSubstring}${value2AliasSubstring} FROM quill_ct)`
|
|
503
|
+
: '';
|
|
504
|
+
const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
|
|
505
|
+
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)},
|
|
506
|
+
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)})`
|
|
507
|
+
: '';
|
|
508
|
+
const joinQuery = itemQueries[1] && comparisonInterval
|
|
509
|
+
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${processColumnReference(rowField, databaseType)} = ${processDateTrunc(dateBucket, `ct.comparison_${rowField}`, databaseType, comparisonInterval)}`
|
|
510
|
+
: '';
|
|
511
|
+
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
512
|
+
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}${valueAliasSubstring}${value2AliasSubstring} FROM quill_qt),
|
|
513
|
+
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)})
|
|
514
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
515
|
+
SELECT * FROM quill_qt_agg qt
|
|
516
|
+
${joinQuery} ORDER BY qt.${processColumnReference(`${rowField}`, databaseType)}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
517
|
+
}
|
|
279
518
|
const compareCTE = itemQueries[1] && comparisonInterval
|
|
280
519
|
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
281
520
|
: '';
|
|
521
|
+
const aliasCTE = itemQueries[1] && comparisonInterval
|
|
522
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}${valueAliasSubstring} FROM quill_ct)`
|
|
523
|
+
: '';
|
|
282
524
|
const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
|
|
283
|
-
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket,
|
|
525
|
+
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)},
|
|
526
|
+
${processAggType(pivot.aggregationType)}(${valueFieldAlias}) as ${processColumnReference(`comparison_${valueField ? valueFieldAlias : 'count'}`, databaseType)} FROM quill_c_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
|
|
284
527
|
: '';
|
|
285
528
|
const joinQuery = itemQueries[1] && comparisonInterval
|
|
286
|
-
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${processColumnReference(
|
|
529
|
+
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${processColumnReference(rowField, databaseType)} = ${processDateTrunc(dateBucket, `ct.comparison_${rowField}`, databaseType, comparisonInterval)}`
|
|
287
530
|
: '';
|
|
288
531
|
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
289
|
-
|
|
290
|
-
${
|
|
532
|
+
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}${valueAliasSubstring} FROM quill_qt),
|
|
533
|
+
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)})
|
|
534
|
+
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
291
535
|
SELECT * FROM quill_qt_agg qt
|
|
292
|
-
${joinQuery} ORDER BY qt.${processColumnReference(`${rowField}`, databaseType)}`;
|
|
536
|
+
${joinQuery} ORDER BY qt.${processColumnReference(`${rowField}`, databaseType)}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
293
537
|
}
|
|
294
|
-
function createAggregationValuePivot(pivot, itemQueries, databaseType) {
|
|
538
|
+
function createAggregationValuePivot(pivot, itemQueries, databaseType, rowLimit) {
|
|
295
539
|
const valueField = pivot.valueField;
|
|
296
540
|
const aggregationType = processAggType(pivot.aggregationType);
|
|
297
541
|
if (!pivot.valueField)
|
|
298
542
|
return undefined;
|
|
543
|
+
const valueAlias = processColumnReference(valueField, databaseType, undefined, false, true);
|
|
544
|
+
if (aggregationType === 'percentage' && pivot.valueField2) {
|
|
545
|
+
const value2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
|
|
546
|
+
const max = databaseType.toLowerCase() === 'snowflake' ? 'GREATEST' : 'MAX';
|
|
547
|
+
const compareCTE = itemQueries[1]
|
|
548
|
+
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
549
|
+
: '';
|
|
550
|
+
const aliasCTE = itemQueries[1]
|
|
551
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(valueField, databaseType, undefined, true)} AS ${valueAlias}, ${processColumnReference(pivot.valueField2, databaseType, undefined, true)} AS ${value2Alias} FROM quill_ct)`
|
|
552
|
+
: '';
|
|
553
|
+
const compareAggregation = itemQueries[1]
|
|
554
|
+
? `, 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)`
|
|
555
|
+
: '';
|
|
556
|
+
const joinQuery = itemQueries[1] ? `CROSS JOIN quill_ct_cw ct` : '';
|
|
557
|
+
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),
|
|
558
|
+
quill_qt_agg AS (SELECT sum(${valueAlias}) / ${max}(sum(${value2Alias}), 1) as ${processColumnReference(`${valueField}`, databaseType)}_PERCENTAGE FROM quill_alias)
|
|
559
|
+
${compareCTE} ${aliasCTE} ${compareAggregation}
|
|
560
|
+
SELECT * FROM quill_qt_agg qt
|
|
561
|
+
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
562
|
+
}
|
|
299
563
|
const compareCTE = itemQueries[1]
|
|
300
564
|
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
301
565
|
: '';
|
|
566
|
+
const aliasCTE = itemQueries[1]
|
|
567
|
+
? `, quill_c_alias as (SELECT ${processColumnReference(valueField, databaseType, undefined, true)} AS ${valueAlias} FROM quill_ct)`
|
|
568
|
+
: '';
|
|
302
569
|
const compareAggregation = itemQueries[1]
|
|
303
|
-
? `, quill_ct_cw as (SELECT ${aggregationType}(${processColumnReference(`${valueField}`, databaseType)}) as ${processColumnReference(`comparison_${valueField}`, databaseType)} FROM
|
|
570
|
+
? `, quill_ct_cw as (SELECT ${aggregationType}(${processColumnReference(`${valueField}`, databaseType)}) as ${processColumnReference(`comparison_${valueField}`, databaseType)} FROM quill_c_alias)`
|
|
304
571
|
: '';
|
|
305
572
|
const joinQuery = itemQueries[1] ? `CROSS JOIN quill_ct_cw ct` : '';
|
|
306
|
-
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
307
|
-
quill_qt_agg AS (SELECT ${aggregationType}(${
|
|
308
|
-
${compareCTE} ${compareAggregation}
|
|
309
|
-
SELECT * FROM quill_qt_agg qt
|
|
310
|
-
${joinQuery}`;
|
|
573
|
+
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}), quill_alias AS (SELECT ${processColumnReference(`${valueField}`, databaseType, undefined, true)} AS ${valueAlias} FROM quill_qt),
|
|
574
|
+
quill_qt_agg AS (SELECT ${aggregationType}(${valueAlias}) as ${processColumnReference(`${valueField}`, databaseType)} FROM quill_alias)
|
|
575
|
+
${compareCTE} ${aliasCTE} ${compareAggregation}
|
|
576
|
+
SELECT * FROM quill_qt_agg qt
|
|
577
|
+
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
311
578
|
}
|
|
@@ -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"}
|