@quillsql/react 2.13.43 → 2.13.45
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.map +1 -1
- package/dist/cjs/Chart.js +2 -2
- package/dist/cjs/ChartBuilder.d.ts +1 -0
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +48 -14
- package/dist/cjs/ChartEditor.d.ts +1 -1
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +2 -2
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +37 -26
- package/dist/cjs/Dashboard.d.ts +8 -2
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +117 -101
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +871 -1574
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +23 -4
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/components/Chart/CustomReferenceLine.js +1 -1
- package/dist/cjs/components/Chart/GaugeChart.js +0 -6
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +3 -3
- package/dist/cjs/components/Dashboard/DashboardSection.d.ts +1 -1
- package/dist/cjs/components/Dashboard/DashboardSection.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardSection.js +20 -19
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +1 -0
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +5 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +58 -8
- package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
- package/dist/cjs/components/QuillSelect.js +91 -14
- package/dist/cjs/components/QuillSelectWithCombo.js +6 -6
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts +6 -16
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnModal.js +172 -75
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +1 -5
- package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddSortPopover.js +2 -9
- package/dist/cjs/components/ReportBuilder/DraggableColumns.d.ts +17 -0
- package/dist/cjs/components/ReportBuilder/DraggableColumns.d.ts.map +1 -0
- package/dist/cjs/components/ReportBuilder/DraggableColumns.js +52 -0
- package/dist/cjs/components/ReportBuilder/DraggableItem.d.ts +17 -0
- package/dist/cjs/components/ReportBuilder/DraggableItem.d.ts.map +1 -0
- package/dist/cjs/components/ReportBuilder/DraggableItem.js +17 -0
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +6 -12
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.js +29 -20
- package/dist/cjs/components/ReportBuilder/FilterStack.d.ts +8 -17
- package/dist/cjs/components/ReportBuilder/FilterStack.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterStack.js +20 -86
- package/dist/cjs/components/ReportBuilder/convert.js +6 -6
- package/dist/cjs/components/ReportBuilder/ui.d.ts +8 -9
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +30 -8
- package/dist/cjs/components/ReportBuilder/util.d.ts +2 -5
- package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/util.js +1 -1
- package/dist/cjs/components/UiComponents.d.ts +3 -2
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +13 -13
- package/dist/cjs/hooks/useAskQuill.d.ts +1 -1
- package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/cjs/hooks/useAskQuill.js +14 -12
- package/dist/cjs/hooks/useDashboard.d.ts +5 -3
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +8 -6
- package/dist/cjs/hooks/useOnClickOutside.d.ts +1 -0
- package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/cjs/hooks/useOnClickOutside.js +33 -0
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +2 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotForm.js +22 -15
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +7 -5
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +100 -48
- package/dist/cjs/models/Client.d.ts +4 -0
- package/dist/cjs/models/Client.d.ts.map +1 -1
- package/dist/cjs/models/Dashboard.d.ts +1 -0
- package/dist/cjs/models/Dashboard.d.ts.map +1 -1
- package/dist/cjs/models/Report.d.ts +2 -0
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/models/ReportBuilder.d.ts +46 -0
- package/dist/cjs/models/ReportBuilder.d.ts.map +1 -0
- package/dist/cjs/models/ReportBuilder.js +19 -0
- package/dist/cjs/models/Tables.d.ts +5 -5
- package/dist/cjs/models/Tables.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.d.ts +4 -0
- package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.js +301 -97
- package/dist/cjs/utils/astProcessing.d.ts +14 -4
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +38 -4
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +18 -3
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +4 -3
- package/dist/cjs/utils/filterProcessing.d.ts +2 -11
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +4 -16
- package/dist/cjs/utils/pivotConstructor.d.ts +2 -1
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +4 -2
- package/dist/cjs/utils/pivotProcessing.d.ts +17 -7
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +60 -51
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +15 -2
- package/dist/cjs/utils/report.d.ts +12 -9
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +114 -47
- package/dist/cjs/utils/reportBuilder.d.ts +88 -0
- package/dist/cjs/utils/reportBuilder.d.ts.map +1 -0
- package/dist/cjs/utils/reportBuilder.js +395 -0
- package/dist/cjs/utils/schema.d.ts +7 -0
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +36 -2
- package/dist/cjs/utils/tableProcessing.d.ts +59 -29
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +75 -90
- package/dist/cjs/utils/ui.d.ts +2 -0
- package/dist/cjs/utils/ui.d.ts.map +1 -0
- package/dist/cjs/utils/ui.js +18 -0
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +2 -2
- package/dist/esm/ChartBuilder.d.ts +1 -0
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +49 -15
- package/dist/esm/ChartEditor.d.ts +1 -1
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +2 -2
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +37 -26
- package/dist/esm/Dashboard.d.ts +8 -2
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +121 -105
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +878 -1581
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +23 -4
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/components/Chart/CustomReferenceLine.js +1 -1
- package/dist/esm/components/Chart/GaugeChart.js +0 -6
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +3 -3
- package/dist/esm/components/Dashboard/DashboardSection.d.ts +1 -1
- package/dist/esm/components/Dashboard/DashboardSection.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardSection.js +21 -20
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +1 -0
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.js +5 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +57 -7
- package/dist/esm/components/QuillSelect.d.ts.map +1 -1
- package/dist/esm/components/QuillSelect.js +58 -14
- package/dist/esm/components/QuillSelectWithCombo.js +6 -6
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts +6 -16
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnModal.js +173 -76
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +1 -5
- package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddSortPopover.js +2 -9
- package/dist/esm/components/ReportBuilder/DraggableColumns.d.ts +17 -0
- package/dist/esm/components/ReportBuilder/DraggableColumns.d.ts.map +1 -0
- package/dist/esm/components/ReportBuilder/DraggableColumns.js +46 -0
- package/dist/esm/components/ReportBuilder/DraggableItem.d.ts +17 -0
- package/dist/esm/components/ReportBuilder/DraggableItem.d.ts.map +1 -0
- package/dist/esm/components/ReportBuilder/DraggableItem.js +14 -0
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts +6 -12
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterModal.js +29 -20
- package/dist/esm/components/ReportBuilder/FilterStack.d.ts +8 -17
- package/dist/esm/components/ReportBuilder/FilterStack.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterStack.js +21 -87
- package/dist/esm/components/ReportBuilder/convert.js +6 -6
- package/dist/esm/components/ReportBuilder/ui.d.ts +8 -9
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +33 -11
- package/dist/esm/components/ReportBuilder/util.d.ts +2 -5
- package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/util.js +1 -1
- package/dist/esm/components/UiComponents.d.ts +3 -2
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +13 -13
- package/dist/esm/hooks/useAskQuill.d.ts +1 -1
- package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
- package/dist/esm/hooks/useAskQuill.js +14 -12
- package/dist/esm/hooks/useDashboard.d.ts +5 -3
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +8 -6
- package/dist/esm/hooks/useOnClickOutside.d.ts +1 -0
- package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
- package/dist/esm/hooks/useOnClickOutside.js +31 -0
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +2 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotForm.js +23 -16
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +7 -5
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +101 -49
- package/dist/esm/models/Client.d.ts +4 -0
- package/dist/esm/models/Client.d.ts.map +1 -1
- package/dist/esm/models/Dashboard.d.ts +1 -0
- package/dist/esm/models/Dashboard.d.ts.map +1 -1
- package/dist/esm/models/Report.d.ts +2 -0
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/models/ReportBuilder.d.ts +46 -0
- package/dist/esm/models/ReportBuilder.d.ts.map +1 -0
- package/dist/esm/models/ReportBuilder.js +16 -0
- package/dist/esm/models/Tables.d.ts +5 -5
- package/dist/esm/models/Tables.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.d.ts +4 -0
- package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.js +300 -97
- package/dist/esm/utils/astProcessing.d.ts +14 -4
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +38 -5
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +18 -3
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +4 -3
- package/dist/esm/utils/filterProcessing.d.ts +2 -11
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +4 -15
- package/dist/esm/utils/pivotConstructor.d.ts +2 -1
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +4 -2
- package/dist/esm/utils/pivotProcessing.d.ts +17 -7
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +58 -49
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +15 -2
- package/dist/esm/utils/report.d.ts +12 -9
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +116 -46
- package/dist/esm/utils/reportBuilder.d.ts +88 -0
- package/dist/esm/utils/reportBuilder.d.ts.map +1 -0
- package/dist/esm/utils/reportBuilder.js +386 -0
- package/dist/esm/utils/schema.d.ts +7 -0
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +34 -1
- package/dist/esm/utils/tableProcessing.d.ts +59 -29
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +71 -86
- package/dist/esm/utils/ui.d.ts +2 -0
- package/dist/esm/utils/ui.d.ts.map +1 -0
- package/dist/esm/utils/ui.js +14 -0
- package/package.json +1 -1
|
@@ -54,10 +54,20 @@ export declare const createBasicSelectASTFromColumns: (columns: ColumnInternal[]
|
|
|
54
54
|
orderby: null;
|
|
55
55
|
limit: null;
|
|
56
56
|
};
|
|
57
|
-
export declare const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
export declare const createSelectStarFromAst: (ast: any) => any;
|
|
58
|
+
export declare const fetchAndProcessASTFromPrompt: ({ aiPrompt, schema, client, prevPivot, currentQuery, prevTable, dashboardName, tenants, }: {
|
|
59
|
+
aiPrompt: string;
|
|
60
|
+
schema: Table[];
|
|
61
|
+
client: QuillProviderClient;
|
|
62
|
+
prevPivot?: Pivot;
|
|
63
|
+
currentQuery?: string;
|
|
64
|
+
prevTable?: string;
|
|
65
|
+
dashboardName: string;
|
|
66
|
+
tenants?: {
|
|
67
|
+
tenantField: string;
|
|
68
|
+
tenantIds: (string | number)[];
|
|
69
|
+
}[] | (string | number)[];
|
|
70
|
+
}) => Promise<{
|
|
61
71
|
ast: any;
|
|
62
72
|
pivot: Pivot | null | undefined;
|
|
63
73
|
whereAST: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/astProcessing.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"astProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/astProcessing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fetchASTFromQuillReport = exports.fetchAndProcessASTFromPrompt = exports.createBasicSelectASTFromColumns = exports.getAllPossibleColumns = exports.isSubquery = void 0;
|
|
3
|
+
exports.fetchASTFromQuillReport = exports.fetchAndProcessASTFromPrompt = exports.createSelectStarFromAst = exports.createBasicSelectASTFromColumns = exports.getAllPossibleColumns = exports.isSubquery = void 0;
|
|
4
4
|
exports.getSelectFromAST = getSelectFromAST;
|
|
5
5
|
exports.processStarColumn = processStarColumn;
|
|
6
6
|
exports.recursiveSearchByKey = recursiveSearchByKey;
|
|
@@ -185,6 +185,9 @@ function getColumnAndTableInfo(tableAliasMap, column, schemaInfo) {
|
|
|
185
185
|
return { tableName, columnName };
|
|
186
186
|
}
|
|
187
187
|
function getColumnsByTableFromASTAndSchema(ast, tables, tableAliasMap, skipStar = false) {
|
|
188
|
+
if (!ast || !ast.columns) {
|
|
189
|
+
return {};
|
|
190
|
+
}
|
|
188
191
|
const referencedColumns = {};
|
|
189
192
|
if (!skipStar &&
|
|
190
193
|
(ast?.columns === '*' || ast?.columns?.[0]?.expr?.column === '*')) {
|
|
@@ -362,8 +365,24 @@ const createBasicSelectASTFromColumns = (columns, tableName) => {
|
|
|
362
365
|
};
|
|
363
366
|
};
|
|
364
367
|
exports.createBasicSelectASTFromColumns = createBasicSelectASTFromColumns;
|
|
368
|
+
const createSelectStarFromAst = (ast) => {
|
|
369
|
+
return {
|
|
370
|
+
...ast,
|
|
371
|
+
columns: [
|
|
372
|
+
{
|
|
373
|
+
expr: {
|
|
374
|
+
type: 'column_ref',
|
|
375
|
+
table: null,
|
|
376
|
+
column: '*',
|
|
377
|
+
},
|
|
378
|
+
as: null,
|
|
379
|
+
},
|
|
380
|
+
],
|
|
381
|
+
};
|
|
382
|
+
};
|
|
383
|
+
exports.createSelectStarFromAst = createSelectStarFromAst;
|
|
365
384
|
//TODO: Move all fetches to a /sdk route
|
|
366
|
-
const fetchAndProcessASTFromPrompt = async (aiPrompt, schema, client, prevPivot, currentQuery, prevTable, dashboardName, tenants) => {
|
|
385
|
+
const fetchAndProcessASTFromPrompt = async ({ aiPrompt, schema, client, prevPivot, currentQuery, prevTable, dashboardName, tenants, }) => {
|
|
367
386
|
let res, data, ast, newAst, pivot;
|
|
368
387
|
let numRetries = 0;
|
|
369
388
|
let whereAST;
|
|
@@ -428,13 +447,28 @@ const fetchAndProcessASTFromPrompt = async (aiPrompt, schema, client, prevPivot,
|
|
|
428
447
|
if (!tableInfo) {
|
|
429
448
|
throw new Error('Table info not found');
|
|
430
449
|
}
|
|
431
|
-
const uniqueValues = await (0, tableProcessing_1.
|
|
450
|
+
const uniqueValues = await (0, tableProcessing_1.getUniqueStringValuesByColumn)({
|
|
451
|
+
columns: tableInfo.columns,
|
|
452
|
+
tableName: processedName,
|
|
453
|
+
client,
|
|
454
|
+
tenants,
|
|
455
|
+
dashboardName,
|
|
456
|
+
});
|
|
432
457
|
newAst = (0, convert_1.convertUnaryToBinary)(newAst);
|
|
433
458
|
newAst = (0, util_1.removeNonSelectedTableReferences)(newAst, processedName, tableInfo.columns.map((col) => col.field), uniqueValues);
|
|
434
459
|
if (pivot) {
|
|
435
460
|
newAst = (0, util_1.deepCopy)({ ...newAst, orderby: null, limit: null });
|
|
436
461
|
}
|
|
437
462
|
whereAST = (0, util_1.deepCopy)(newAst.where);
|
|
463
|
+
const _columns = schema.find((_table) => {
|
|
464
|
+
return _table.name === table;
|
|
465
|
+
})?.columns;
|
|
466
|
+
// parse the whereAst first
|
|
467
|
+
const filterTree = (0, astFilterProcessing_1.astToFilterTree)(whereAST, client.databaseType?.toLowerCase() || 'postgresql', _columns);
|
|
468
|
+
const cleanAst = filterTree
|
|
469
|
+
? (0, astFilterProcessing_1.filterTreeToAst)(filterTree, client.databaseType?.toLowerCase() || 'postgresql')
|
|
470
|
+
: null;
|
|
471
|
+
whereAST = cleanAst;
|
|
438
472
|
}
|
|
439
473
|
catch (e) {
|
|
440
474
|
console.log(e);
|
|
@@ -455,7 +489,7 @@ const fetchASTFromQuillReport = async (report, client, schema) => {
|
|
|
455
489
|
let groupByPivot = null;
|
|
456
490
|
let schemaInfo = [];
|
|
457
491
|
try {
|
|
458
|
-
if (!report
|
|
492
|
+
if (!report) {
|
|
459
493
|
throw new Error('Report not found');
|
|
460
494
|
}
|
|
461
495
|
const url = `${constants_1.QUILL_SERVER}/astify`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAcvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAOzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAsB/C;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,IAAI,EACJ,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,oBAAoB,EACpB,YAAY,EACZ,cAAc,GACf,EAAE;IACD,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,SAAS,CAAC;IACzC,gBAAgB,EAAE,GAAG,CAAC;IACtB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,YAAY,CAAC,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAcvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAOzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAsB/C;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,IAAI,EACJ,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,oBAAoB,EACpB,YAAY,EACZ,cAAc,GACf,EAAE;IACD,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,SAAS,CAAC;IACzC,gBAAgB,EAAE,GAAG,CAAC;IACtB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,YAAY,CAAC,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAsL/B;AA2ID,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EACJ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;CAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EACvB,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,GAAG,CAAC,CA6Bd"}
|
|
@@ -73,7 +73,15 @@ async function cleanDashboardItem({ item, dashboardFilters, client, dateBucket,
|
|
|
73
73
|
return { ...col, label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(col.label) };
|
|
74
74
|
});
|
|
75
75
|
const columnInternal = (item.includeCustomFields ? columnsWithCustomFields : item.columns).map((col) => {
|
|
76
|
-
|
|
76
|
+
const field = item.fields?.find((f) => f.name === col.field);
|
|
77
|
+
const converted_field = (0, columnProcessing_1.convertPostgresColumn)(field ?? {});
|
|
78
|
+
return {
|
|
79
|
+
fieldType: converted_field.fieldType,
|
|
80
|
+
dataTypeID: converted_field.dataTypeID,
|
|
81
|
+
jsType: converted_field.jsType,
|
|
82
|
+
...col,
|
|
83
|
+
label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(col.label),
|
|
84
|
+
};
|
|
77
85
|
});
|
|
78
86
|
let pivotTable;
|
|
79
87
|
let pivotError;
|
|
@@ -117,10 +125,16 @@ async function cleanDashboardItem({ item, dashboardFilters, client, dateBucket,
|
|
|
117
125
|
if (item.referenceLines) {
|
|
118
126
|
for (const referenceLine of item.referenceLines) {
|
|
119
127
|
if (Array.isArray(referenceLine.query)) {
|
|
120
|
-
referenceLineYValues.push({
|
|
128
|
+
referenceLineYValues.push({
|
|
129
|
+
label: referenceLine.label,
|
|
130
|
+
query: referenceLine.query,
|
|
131
|
+
});
|
|
121
132
|
}
|
|
122
133
|
else if (referenceLine.query === '') {
|
|
123
|
-
referenceLineYValues.push({
|
|
134
|
+
referenceLineYValues.push({
|
|
135
|
+
label: referenceLine.label,
|
|
136
|
+
query: (pivotTable?.rows ? pivotTable.rows : item.rows).map((row) => Number(row[referenceLine.label]) || 0),
|
|
137
|
+
});
|
|
124
138
|
}
|
|
125
139
|
}
|
|
126
140
|
}
|
|
@@ -128,6 +142,7 @@ async function cleanDashboardItem({ item, dashboardFilters, client, dateBucket,
|
|
|
128
142
|
id: item._id ?? item.id,
|
|
129
143
|
name: item.name,
|
|
130
144
|
dashboardName: item.dashboardName,
|
|
145
|
+
section: item.section,
|
|
131
146
|
rows: item.rows,
|
|
132
147
|
pivotRows: pivotTable ? pivotTable.rows : undefined,
|
|
133
148
|
pivotColumns: pivotTable ? pivotTable.columns : undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAgFvD,wBAAsB,OAAO,CAC3B,MAAM,EAAE,mBAAmB,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,GAAG,EACtB,gBAAgB,EAAE,GAAG,EACrB,MAAM,SAAS,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAgFvD,wBAAsB,OAAO,CAC3B,MAAM,EAAE,mBAAmB,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,GAAG,EACtB,gBAAgB,EAAE,GAAG,EACrB,MAAM,SAAS,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,WAAW,gBAgL1B;AAED,wBAAgB,aAAa;+BAGjB,mBAAmB,sBACP,MAAM,oBACR,GAAG,iCAEP,WAAW;EAoC5B;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,CAAC,EAAE,GAAG,GACb,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB5C"}
|
|
@@ -88,11 +88,12 @@ async function getData(client, cloudQueryEndpoint, noCred, hostedRequestBody, cl
|
|
|
88
88
|
signal: abortSignal,
|
|
89
89
|
});
|
|
90
90
|
const responseJson = await resp.json();
|
|
91
|
-
if (responseJson.status === 'error' &&
|
|
92
|
-
['query', 'patterns', 'item'].includes(hostedRequestBody.metadata.task)) {
|
|
91
|
+
if ((responseJson.status === 'error' || responseJson.data.error) &&
|
|
92
|
+
['query', 'patterns', 'item', 'report'].includes(hostedRequestBody.metadata.task)) {
|
|
93
93
|
const brokenReport = { ...responseJson };
|
|
94
94
|
let errorPrefix = 'Error: ';
|
|
95
|
-
let errorMessage = 'Failed to fetch report: ' +
|
|
95
|
+
let errorMessage = 'Failed to fetch report: ' +
|
|
96
|
+
(responseJson.error || responseJson.data.error);
|
|
96
97
|
if (hostedRequestBody.metadata.task === 'query' ||
|
|
97
98
|
hostedRequestBody.metadata.task === 'patterns') {
|
|
98
99
|
errorPrefix = responseJson.error?.includes('Query Parsing Error')
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FieldType, InternalFilter, DashboardDateFilter, Filter, DashboardFilter } from '../models/Filter';
|
|
2
2
|
import { QuillReport } from '../models/Report';
|
|
3
3
|
import { FilterTreeNode } from './astFilterProcessing';
|
|
4
|
+
import { ReportBuilderState } from '../models/ReportBuilder';
|
|
4
5
|
export declare function findAndProcessDateFilter(filters: any[]): any;
|
|
5
6
|
export declare function processFilterFromBackend(filter: any): any;
|
|
6
7
|
export declare function updateFilter(filter: any, value: any | undefined, comparison: any | undefined, dashboardName: string): any;
|
|
@@ -21,7 +22,7 @@ export declare function filterStackToFilterTree(stack: any[]): FilterTreeNode |
|
|
|
21
22
|
/**
|
|
22
23
|
* This function uses the baseAst and forms a SQL query using the a filters array
|
|
23
24
|
*/
|
|
24
|
-
export declare function buildQueryFromFilters(
|
|
25
|
+
export declare function buildQueryFromFilters(reportBuilderState: ReportBuilderState, filters: FilterTreeNode[], endpoint: string, client: any): Promise<{
|
|
25
26
|
success: boolean;
|
|
26
27
|
query?: string;
|
|
27
28
|
error?: string;
|
|
@@ -29,16 +30,6 @@ export declare function buildQueryFromFilters(baseAst: any, filters: FilterTreeN
|
|
|
29
30
|
export declare function applyCustomFilterToDashDateFilter(customDateFilter: Filter, dashboardDateFilter: DashboardDateFilter): DashboardDateFilter;
|
|
30
31
|
export declare function mergeCustomFilters(filters: DashboardFilter[], customFilters: InternalFilter[]): any[];
|
|
31
32
|
export declare function filtersAreEquivalent(filters1?: InternalFilter[], filters2?: InternalFilter[]): boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Helper function that converts a UniqueValuesByColumn interface to a string map
|
|
34
|
-
*/
|
|
35
|
-
export declare function uniqueValuesToStringMap(uniqueValues: {
|
|
36
|
-
[column: string]: {
|
|
37
|
-
[value: string]: boolean;
|
|
38
|
-
};
|
|
39
|
-
}): {
|
|
40
|
-
[key: string]: string[];
|
|
41
|
-
};
|
|
42
33
|
export declare const createDefaultDateFilter: (filter: DashboardDateFilter, reports: QuillReport[], dashboardName: string) => (DashboardDateFilter & {
|
|
43
34
|
dateField: string[];
|
|
44
35
|
}) | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,SAAS,EACT,cAAc,EAGd,mBAAmB,EACnB,MAAM,EAEN,eAAe,EAEhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,SAAS,EACT,cAAc,EAGd,mBAAmB,EACnB,MAAM,EAEN,eAAe,EAEhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAoB5D;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,OAkBnD;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,GAAG,YAAO,EACjB,UAAU,EAAE,GAAG,YAAO,EACtB,aAAa,EAAE,MAAM,OAmGtB;AAGD,eAAO,MAAM,OAAO,MAAO,MAAM,cA0DhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAwB7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,GAAG,GAAG,cAAc,EAAE,CAoCrE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,yBAgCnD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,kBAAkB,EAAE,kBAAkB,EACtC,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,GAAG,GACV,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiC/D;AAED,wBAAgB,iCAAiC,CAC/C,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,mBAAmB,GACvC,mBAAmB,CAkKrB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EAAE,EAC1B,aAAa,EAAE,cAAc,EAAE,GAC9B,GAAG,EAAE,CA+CP;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,CAAC,EAAE,cAAc,EAAE,EAC3B,QAAQ,CAAC,EAAE,cAAc,EAAE,GAC1B,OAAO,CA+BT;AAED,eAAO,MAAM,uBAAuB,WAC1B,mBAAmB,WAClB,WAAW,EAAE,iBACP,MAAM,KACpB,CAAC,mBAAmB,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAAG,SAqDpD,CAAC"}
|
|
@@ -11,12 +11,12 @@ exports.buildQueryFromFilters = buildQueryFromFilters;
|
|
|
11
11
|
exports.applyCustomFilterToDashDateFilter = applyCustomFilterToDashDateFilter;
|
|
12
12
|
exports.mergeCustomFilters = mergeCustomFilters;
|
|
13
13
|
exports.filtersAreEquivalent = filtersAreEquivalent;
|
|
14
|
-
exports.uniqueValuesToStringMap = uniqueValuesToStringMap;
|
|
15
14
|
const date_fns_1 = require("date-fns");
|
|
16
15
|
const dateRangePickerUtils_1 = require("../DateRangePicker/dateRangePickerUtils");
|
|
17
16
|
const Filter_1 = require("../models/Filter");
|
|
18
17
|
const astFilterProcessing_1 = require("./astFilterProcessing");
|
|
19
18
|
const textProcessing_1 = require("./textProcessing");
|
|
19
|
+
const reportBuilder_1 = require("./reportBuilder");
|
|
20
20
|
function findAndProcessDateFilter(filters) {
|
|
21
21
|
let dateFilter = filters.find((filter) => filter.filterType === 'date_range');
|
|
22
22
|
if (dateFilter) {
|
|
@@ -321,13 +321,14 @@ function filterStackToFilterTree(stack) {
|
|
|
321
321
|
/**
|
|
322
322
|
* This function uses the baseAst and forms a SQL query using the a filters array
|
|
323
323
|
*/
|
|
324
|
-
async function buildQueryFromFilters(
|
|
324
|
+
async function buildQueryFromFilters(reportBuilderState, filters, endpoint, client) {
|
|
325
325
|
const subTree = filterStackToFilterTree(filters);
|
|
326
326
|
let whereNode = null;
|
|
327
327
|
if (subTree) {
|
|
328
328
|
whereNode = (0, astFilterProcessing_1.filterTreeToAst)(subTree, client.databaseType.toLowerCase());
|
|
329
329
|
}
|
|
330
|
-
const
|
|
330
|
+
const ast = (0, reportBuilder_1.reportBuilderStateToAst)({ ...reportBuilderState, filterStack: filters }, client.databaseType.toLowerCase());
|
|
331
|
+
const queryAst = { ...ast, where: whereNode };
|
|
331
332
|
try {
|
|
332
333
|
const response = await fetch(`${endpoint}/sqlify`, {
|
|
333
334
|
method: 'POST',
|
|
@@ -554,19 +555,6 @@ function filtersAreEquivalent(filters1, filters2) {
|
|
|
554
555
|
}
|
|
555
556
|
return true;
|
|
556
557
|
}
|
|
557
|
-
/**
|
|
558
|
-
* Helper function that converts a UniqueValuesByColumn interface to a string map
|
|
559
|
-
*/
|
|
560
|
-
function uniqueValuesToStringMap(uniqueValues) {
|
|
561
|
-
const fieldValues = {};
|
|
562
|
-
for (const field of Object.keys(uniqueValues)) {
|
|
563
|
-
fieldValues[field] = [];
|
|
564
|
-
for (const value of Object.keys(uniqueValues[field] ?? {})) {
|
|
565
|
-
fieldValues[field].push(value);
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
return fieldValues;
|
|
569
|
-
}
|
|
570
558
|
const createDefaultDateFilter = (filter, reports, dashboardName) => {
|
|
571
559
|
const comparisonRangeStart = getComparisonRange(filter, 'startDate');
|
|
572
560
|
const comparisonRangeEnd = getComparisonRange(filter, 'endDate');
|
|
@@ -2,7 +2,7 @@ import { QuillProviderClient } from '../models/Client';
|
|
|
2
2
|
import { Pivot, PivotData } from '../models/Pivot';
|
|
3
3
|
import { QuillReportInternal } from '../models/Report';
|
|
4
4
|
import { AdditionalProcessing } from './tableProcessing';
|
|
5
|
-
export declare function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFilter, distinctStrings, dashboardName, tenants, additionalProcessing, pivotQuery, comparisonPivotQuery, getPivotRowCount, }: {
|
|
5
|
+
export declare function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFilter, distinctStrings, dashboardName, tenants, additionalProcessing, pivotQuery, comparisonPivotQuery, getPivotRowCount, caller, }: {
|
|
6
6
|
pivot: Pivot;
|
|
7
7
|
report?: QuillReportInternal;
|
|
8
8
|
client: QuillProviderClient;
|
|
@@ -18,6 +18,7 @@ export declare function generatePivotWithSQL({ pivot, report, client, dateBucket
|
|
|
18
18
|
pivotQuery?: string;
|
|
19
19
|
comparisonPivotQuery?: string;
|
|
20
20
|
getPivotRowCount?: boolean;
|
|
21
|
+
caller?: string;
|
|
21
22
|
}): Promise<PivotData>;
|
|
22
23
|
export declare function disambiguatedValueField(pivot: Pivot): string | undefined;
|
|
23
24
|
//# sourceMappingURL=pivotConstructor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotConstructor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAYvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAsB,oBAAoB,CAAC,EACzC,KAAK,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,eAAe,EACf,aAAa,EACb,OAAO,EACP,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,gBAAuB,
|
|
1
|
+
{"version":3,"file":"pivotConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotConstructor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAYvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAsB,oBAAoB,CAAC,EACzC,KAAK,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,eAAe,EACf,aAAa,EACb,OAAO,EACP,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,gBAAuB,EACvB,MAAM,GACP,EAAE;IACD,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EACJ;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACxB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,SAAS,CAAC,CAyWrB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,KAAK,sBAYnD"}
|
|
@@ -11,7 +11,7 @@ const dates_1 = require("./dates");
|
|
|
11
11
|
const merge_1 = require("./merge");
|
|
12
12
|
const queryConstructor_1 = require("./queryConstructor");
|
|
13
13
|
const textProcessing_1 = require("./textProcessing");
|
|
14
|
-
async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFilter, distinctStrings, dashboardName, tenants, additionalProcessing, pivotQuery, comparisonPivotQuery, getPivotRowCount = true, }) {
|
|
14
|
+
async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFilter, distinctStrings, dashboardName, tenants, additionalProcessing, pivotQuery, comparisonPivotQuery, getPivotRowCount = true, caller, }) {
|
|
15
15
|
let sqlQuery = pivotQuery;
|
|
16
16
|
let comparisonPivotSql = comparisonPivotQuery;
|
|
17
17
|
const databaseType = client.databaseType || 'postgresql';
|
|
@@ -76,7 +76,9 @@ async function generatePivotWithSQL({ pivot, report, client, dateBucket, dateFil
|
|
|
76
76
|
? (0, queryConstructor_1.additionalProcessingOnPivotQuery)(pivot, comparisonPivotSql, additionalProcessing, client.databaseType)
|
|
77
77
|
: '';
|
|
78
78
|
const preQueries = [paginatedSqlQuery];
|
|
79
|
-
getPivotRowCount =
|
|
79
|
+
getPivotRowCount =
|
|
80
|
+
getPivotRowCount &&
|
|
81
|
+
(report?.chartType === 'table' || caller === 'ReportBuilder');
|
|
80
82
|
if (getPivotRowCount) {
|
|
81
83
|
const pivotRowCountQuery = (0, queryConstructor_1.generateRowCountQuery)(sqlQuery, client.databaseType);
|
|
82
84
|
preQueries.push(pivotRowCountQuery);
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
+
import { AxisFormat } from '../Dashboard';
|
|
1
2
|
import { ColumnInternal } from '../models/Columns';
|
|
2
|
-
import { Pivot } from '../models/Pivot';
|
|
3
|
-
|
|
3
|
+
import { Pivot, PivotData } from '../models/Pivot';
|
|
4
|
+
import { QuillReportInternal } from '../models/Report';
|
|
5
|
+
import { UniqueValuesByColumn } from '../models/Tables';
|
|
4
6
|
export declare function isValidPivot(pivot: Pivot): {
|
|
5
7
|
valid: boolean;
|
|
6
8
|
reason: string;
|
|
7
9
|
};
|
|
8
|
-
export declare function getPossiblePivotFieldOptions(columns: ColumnInternal[], uniqueValues: {
|
|
9
|
-
[column: string]: {
|
|
10
|
-
[value: string]: boolean;
|
|
11
|
-
};
|
|
12
|
-
}): {
|
|
10
|
+
export declare function getPossiblePivotFieldOptions(columns: ColumnInternal[], uniqueValues: UniqueValuesByColumn): {
|
|
13
11
|
rowFields: string[];
|
|
14
12
|
columnFields: string[];
|
|
15
13
|
valueFields: string[];
|
|
@@ -20,4 +18,16 @@ export declare function cleanPivot(pivot: Pivot, possibleColumns: {
|
|
|
20
18
|
valueFields: any;
|
|
21
19
|
}): Pivot;
|
|
22
20
|
export declare const isPivotPossible: (fields: any, pivot: Pivot) => boolean;
|
|
21
|
+
export declare const pivotFormData: (pivot: Pivot, columns: ColumnInternal[], report?: QuillReportInternal, formChartType?: string, pivotData?: PivotData) => {
|
|
22
|
+
pivot: Pivot;
|
|
23
|
+
chartType: string;
|
|
24
|
+
xAxisField: string | undefined;
|
|
25
|
+
xAxisFormat: AxisFormat;
|
|
26
|
+
xAxisLabel: string | undefined;
|
|
27
|
+
yAxisFields: {
|
|
28
|
+
field: string;
|
|
29
|
+
label: string;
|
|
30
|
+
format: AxisFormat;
|
|
31
|
+
}[];
|
|
32
|
+
};
|
|
23
33
|
//# sourceMappingURL=pivotProcessing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAMxD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAuB7E;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,cAAc,EAAE,EACzB,YAAY,EAAE,oBAAoB;;;;EAyDnC;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE;IACf,SAAS,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,GAAG,CAAC;IAClB,WAAW,EAAE,GAAG,CAAC;CAClB,GACA,KAAK,CAsCP;AAED,eAAO,MAAM,eAAe,WAAY,GAAG,SAAS,KAAK,YA8BxD,CAAC;AAEF,eAAO,MAAM,aAAa,UACjB,KAAK,WACH,cAAc,EAAE,WAChB,mBAAmB,kBACZ,MAAM,cACV,SAAS;;;;;;;;;;;CAuDtB,CAAC"}
|
|
@@ -1,56 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isPivotPossible = void 0;
|
|
4
|
-
exports.pivotToSql = pivotToSql;
|
|
3
|
+
exports.pivotFormData = exports.isPivotPossible = void 0;
|
|
5
4
|
exports.isValidPivot = isValidPivot;
|
|
6
5
|
exports.getPossiblePivotFieldOptions = getPossiblePivotFieldOptions;
|
|
7
6
|
exports.cleanPivot = cleanPivot;
|
|
8
7
|
const util_1 = require("../components/ReportBuilder/util");
|
|
8
|
+
const PivotModal_1 = require("../internals/ReportBuilder/PivotModal");
|
|
9
|
+
const columnProcessing_1 = require("./columnProcessing");
|
|
9
10
|
const constants_1 = require("./constants");
|
|
11
|
+
const pivotConstructor_1 = require("./pivotConstructor");
|
|
10
12
|
const valueFormatter_1 = require("./valueFormatter");
|
|
11
|
-
function pivotToSql(pivot, query, columns) {
|
|
12
|
-
const processedAggType = pivot.aggregationType?.toLowerCase() === 'average'
|
|
13
|
-
? 'avg'
|
|
14
|
-
: pivot.aggregationType?.toLowerCase();
|
|
15
|
-
if ((!pivot.rowField && pivot.valueField && processedAggType) ||
|
|
16
|
-
(!pivot.valueField && pivot.rowField && processedAggType === 'count')) {
|
|
17
|
-
// table aggregation
|
|
18
|
-
return `with
|
|
19
|
-
original_query as (${query})
|
|
20
|
-
SELECT ${processedAggType}(${pivot.valueField ?? pivot.rowField}) FROM original_query`;
|
|
21
|
-
}
|
|
22
|
-
else if (!pivot.columnField &&
|
|
23
|
-
processedAggType &&
|
|
24
|
-
pivot.rowField &&
|
|
25
|
-
pivot.valueField) {
|
|
26
|
-
// 1-d pivot
|
|
27
|
-
return `with
|
|
28
|
-
original_query as (${query})
|
|
29
|
-
SELECT ${pivot.rowField}, ${processedAggType}(${pivot.valueField}) FROM original_query GROUP BY ${pivot.rowField}`;
|
|
30
|
-
}
|
|
31
|
-
else if (pivot.columnField &&
|
|
32
|
-
pivot.rowField &&
|
|
33
|
-
pivot.valueField &&
|
|
34
|
-
processedAggType) {
|
|
35
|
-
// 2-d pivot
|
|
36
|
-
const sqlQuery = generateTwoDPivotQuery(
|
|
37
|
-
// @ts-ignore
|
|
38
|
-
{ ...pivot, aggregationType: processedAggType }, query, columns);
|
|
39
|
-
return sqlQuery;
|
|
40
|
-
}
|
|
41
|
-
return query;
|
|
42
|
-
}
|
|
43
|
-
function generateTwoDPivotQuery(pivot, query, columns) {
|
|
44
|
-
const caseWhens = columns.map((column) => {
|
|
45
|
-
return `${pivot.aggregationType}(
|
|
46
|
-
CASE WHEN ${pivot.columnField} = '${column.field}' THEN ${pivot.valueField} ELSE 0 END
|
|
47
|
-
) AS "${column.field}"`;
|
|
48
|
-
});
|
|
49
|
-
return `WITH
|
|
50
|
-
original_query as (${query})
|
|
51
|
-
SELECT ${pivot.rowField}, ${caseWhens.join(', ')}
|
|
52
|
-
FROM original_query GROUP BY ${pivot.rowField}`;
|
|
53
|
-
}
|
|
54
13
|
function isValidPivot(pivot) {
|
|
55
14
|
if (!pivot.rowField && !pivot.aggregations?.[0]?.valueField) {
|
|
56
15
|
return {
|
|
@@ -87,14 +46,14 @@ function getPossiblePivotFieldOptions(columns, uniqueValues) {
|
|
|
87
46
|
// }
|
|
88
47
|
// column fields can be strings
|
|
89
48
|
if (column.jsType === 'string') {
|
|
90
|
-
const possibleValues = uniqueValues
|
|
49
|
+
const possibleValues = uniqueValues?.[column.field] ?? [];
|
|
91
50
|
const isNullValuesOnly = !possibleValues ||
|
|
92
51
|
(Object.keys(possibleValues).length === 1 &&
|
|
93
52
|
Object.keys(possibleValues)[0] === 'null');
|
|
94
53
|
if (!isNullValuesOnly &&
|
|
95
|
-
|
|
54
|
+
possibleValues.length <= constants_1.MAX_PIVOT_UNIQUE_VALUES &&
|
|
96
55
|
!(Object.keys(possibleValues).length === 1 &&
|
|
97
|
-
possibleValues['EXCEEDS_LIMIT'
|
|
56
|
+
possibleValues[0] === 'EXCEEDS_LIMIT')) {
|
|
98
57
|
columnFields.push(column.field);
|
|
99
58
|
}
|
|
100
59
|
if (!isNullValuesOnly // Used to limit rowFields with max unique values, no more
|
|
@@ -104,7 +63,8 @@ function getPossiblePivotFieldOptions(columns, uniqueValues) {
|
|
|
104
63
|
}
|
|
105
64
|
// value fields can be numbers or bools
|
|
106
65
|
// TODO: should "format" be used as the indicator, or fieldType?
|
|
107
|
-
if (valueFormatter_1.NUMBER_FORMAT_TYPES.includes(column.format) ||
|
|
66
|
+
if (valueFormatter_1.NUMBER_FORMAT_TYPES.includes(column.format) ||
|
|
67
|
+
column.jsType === 'bool') {
|
|
108
68
|
if (!(0, util_1.isIdColumn)(column.field)) {
|
|
109
69
|
valueFields.push(column.field);
|
|
110
70
|
}
|
|
@@ -140,10 +100,12 @@ function cleanPivot(pivot, possibleColumns) {
|
|
|
140
100
|
pivot.columnField = undefined;
|
|
141
101
|
}
|
|
142
102
|
if (pivot.aggregationType) {
|
|
143
|
-
pivot.aggregations = [
|
|
103
|
+
pivot.aggregations = [
|
|
104
|
+
{
|
|
144
105
|
valueField: pivot.valueField,
|
|
145
106
|
aggregationType: pivot.aggregationType,
|
|
146
|
-
}
|
|
107
|
+
},
|
|
108
|
+
];
|
|
147
109
|
}
|
|
148
110
|
return pivot;
|
|
149
111
|
}
|
|
@@ -164,3 +126,50 @@ const isPivotPossible = (fields, pivot) => {
|
|
|
164
126
|
return validPivot;
|
|
165
127
|
};
|
|
166
128
|
exports.isPivotPossible = isPivotPossible;
|
|
129
|
+
const pivotFormData = (pivot, columns, report, formChartType, pivotData) => {
|
|
130
|
+
const yAxisField = pivot.columnField ?? (0, pivotConstructor_1.disambiguatedValueField)(pivot) ?? '';
|
|
131
|
+
const yAxisLabel = report?.yAxisFields && report?.yAxisFields?.length > 0
|
|
132
|
+
? (report.yAxisFields[0]?.label ?? '')
|
|
133
|
+
: ((0, pivotConstructor_1.disambiguatedValueField)(pivot) ?? '');
|
|
134
|
+
// date labels for pivots should be treated like strings since they are
|
|
135
|
+
const yAxisIsDate = pivot.columnField
|
|
136
|
+
? (0, PivotModal_1.isDateField)(pivot.columnFieldType ?? '')
|
|
137
|
+
: false;
|
|
138
|
+
const chartType = formChartType ?? (pivot.rowField ? 'column' : 'metric');
|
|
139
|
+
const rowColumn = (pivotData?.columns ?? columns).find((col) => col.field === pivot.rowField);
|
|
140
|
+
const xAxisField = pivot.rowField &&
|
|
141
|
+
!(['metric', 'gauge'].includes(chartType) &&
|
|
142
|
+
!valueFormatter_1.NUMBER_FORMAT_TYPES.includes(rowColumn?.format ?? ''))
|
|
143
|
+
? pivot.rowField
|
|
144
|
+
: (0, pivotConstructor_1.disambiguatedValueField)(pivot);
|
|
145
|
+
const result = {
|
|
146
|
+
pivot,
|
|
147
|
+
chartType: chartType,
|
|
148
|
+
xAxisField,
|
|
149
|
+
xAxisFormat: chartType === 'gauge'
|
|
150
|
+
? 'percent'
|
|
151
|
+
: chartType === 'metric'
|
|
152
|
+
? 'whole_number'
|
|
153
|
+
: (0, columnProcessing_1.isDateType)(pivot.rowFieldType ?? '')
|
|
154
|
+
? 'string'
|
|
155
|
+
: (0, columnProcessing_1.isNumberType)(pivot.rowFieldType ?? '')
|
|
156
|
+
? 'whole_number'
|
|
157
|
+
: (0, columnProcessing_1.isNumberType)((0, pivotConstructor_1.disambiguatedValueField)(pivot) ?? '')
|
|
158
|
+
? 'whole_number'
|
|
159
|
+
: 'string',
|
|
160
|
+
xAxisLabel: report?.xAxisLabel || pivot.rowField,
|
|
161
|
+
yAxisFields: [
|
|
162
|
+
{
|
|
163
|
+
field: yAxisField,
|
|
164
|
+
label: yAxisLabel,
|
|
165
|
+
format: yAxisIsDate
|
|
166
|
+
? 'string'
|
|
167
|
+
: report?.yAxisFields && report?.yAxisFields?.length > 0
|
|
168
|
+
? (report?.yAxisFields[0]?.format ?? 'whole_number')
|
|
169
|
+
: (report?.columns.find((col) => col.field === (0, pivotConstructor_1.disambiguatedValueField)(pivot))?.format ?? 'whole_number'),
|
|
170
|
+
},
|
|
171
|
+
],
|
|
172
|
+
};
|
|
173
|
+
return result;
|
|
174
|
+
};
|
|
175
|
+
exports.pivotFormData = pivotFormData;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAStE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,UAAQ,UAGrE;AAMD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAEvB,kBAAkB,CAAC,EAAE,OAAO,EAC5B,iBAAiB,CAAC,EAAE,OAAO,UAkG5B;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAE1D;AAmBD,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,UA8B5B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,UAYnB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAsBrB;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAStE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,UAAQ,UAGrE;AAMD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAEvB,kBAAkB,CAAC,EAAE,OAAO,EAC5B,iBAAiB,CAAC,EAAE,OAAO,UAkG5B;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAE1D;AAmBD,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,UA8B5B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,UAYnB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAsBrB;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAiBrB;AAgGD,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAkBrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAkBpB;AA82BD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,KAAK,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,oBAAoB,CAAC,EAAE,oBAAoB,EAC3C,YAAY,SAAe,sBAuE5B;AAED,wBAAgB,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,sBAqB1E"}
|
|
@@ -197,12 +197,15 @@ function generateDistinctQuery(stringFields, query, databaseType) {
|
|
|
197
197
|
switch (databaseType.toLowerCase()) {
|
|
198
198
|
case 'mysql':
|
|
199
199
|
return generateDistinctQueryMySQL(stringFields, query);
|
|
200
|
+
case 'bigquery':
|
|
201
|
+
return generateDistinctQueryBigQuery(stringFields, query);
|
|
200
202
|
case 'postgresql':
|
|
201
203
|
return generateDistinctQueryPostgres(stringFields, query);
|
|
202
204
|
case 'snowflake':
|
|
203
205
|
return generateDistinctQuerySnowflake(stringFields, query);
|
|
204
206
|
case 'mssql':
|
|
205
207
|
return generateDistinctQueryMSSQL(stringFields, query);
|
|
208
|
+
case 'clickhouse': // works with default for now
|
|
206
209
|
default:
|
|
207
210
|
return generateDistinctQueryDefault(stringFields, query, databaseType);
|
|
208
211
|
}
|
|
@@ -224,6 +227,16 @@ function generateDistinctQueryMySQL(stringFields, query) {
|
|
|
224
227
|
const distinctQuery = distinctQueries.join(' UNION ALL ');
|
|
225
228
|
return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
|
|
226
229
|
}
|
|
230
|
+
function generateDistinctQueryBigQuery(stringFields, query) {
|
|
231
|
+
const distinctQueries = stringFields.map((field) => {
|
|
232
|
+
return `
|
|
233
|
+
SELECT '${field}' AS ${processColumnReference('field', 'bigquery')},
|
|
234
|
+
ARRAY_AGG(\`${field}\`) AS ${processColumnReference('string_values', 'bigquery')}
|
|
235
|
+
FROM (SELECT \`${field}\` FROM querytable WHERE \`${field}\` IS NOT NULL GROUP BY \`${field}\`) AS distinct_${replaceSpacesWithUnderscores(field)}`;
|
|
236
|
+
});
|
|
237
|
+
const distinctQuery = distinctQueries.join(' UNION ALL ');
|
|
238
|
+
return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
|
|
239
|
+
}
|
|
227
240
|
function generateDistinctQueryPostgres(stringFields, query) {
|
|
228
241
|
const distinctQueries = stringFields.map((field) => {
|
|
229
242
|
return `SELECT '${field}' AS ${processColumnReference('field', 'postgresql')}, to_json(ARRAY_AGG(DISTINCT "${field}")) AS ${processColumnReference('string_values', 'postgresql')} FROM querytable`;
|
|
@@ -363,7 +376,7 @@ function create2DStringPivotQuery(pivot, itemQuery, columnFieldValues, databaseT
|
|
|
363
376
|
...caseWhens,
|
|
364
377
|
...columnFieldValues.map((column) => {
|
|
365
378
|
return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${valueExpr} END) / GREATEST(sum(${value2Expr}), 1) AS ${processColumnReference(column + disambiguation, databaseType, '_', true)}`;
|
|
366
|
-
})
|
|
379
|
+
}),
|
|
367
380
|
];
|
|
368
381
|
}
|
|
369
382
|
else {
|
|
@@ -372,7 +385,7 @@ function create2DStringPivotQuery(pivot, itemQuery, columnFieldValues, databaseT
|
|
|
372
385
|
...caseWhens,
|
|
373
386
|
...columnFieldValues.map((column) => {
|
|
374
387
|
return `sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${valueExpr} END) / GREATEST(sum(CASE WHEN ${columnFieldAlias} = '${processSingleQuotes(column, databaseType)}' THEN ${value2Expr} END), 1) AS ${processColumnReference(column + disambiguation, databaseType, '_', true)}`;
|
|
375
|
-
})
|
|
388
|
+
}),
|
|
376
389
|
];
|
|
377
390
|
}
|
|
378
391
|
}
|