@quillsql/react 2.13.26 → 2.13.28
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 +20 -2
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +130 -36
- package/dist/cjs/ChartEditor.d.ts +5 -3
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +4 -5
- package/dist/cjs/Context.d.ts +15 -4
- package/dist/cjs/Context.d.ts.map +1 -1
- package/dist/cjs/Context.js +37 -60
- package/dist/cjs/Dashboard.d.ts +4 -0
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +78 -23
- package/dist/cjs/QuillProvider.d.ts +12 -9
- package/dist/cjs/QuillProvider.d.ts.map +1 -1
- package/dist/cjs/QuillProvider.js +2 -2
- package/dist/cjs/ReportBuilder.d.ts +9 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +198 -80
- package/dist/cjs/SQLEditor.d.ts +5 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +81 -18
- package/dist/cjs/Table.d.ts.map +1 -1
- package/dist/cjs/Table.js +5 -4
- package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/InternalChart.js +106 -27
- package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/PieChart.js +10 -7
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +3 -2
- package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DashboardFilter.js +65 -65
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +81 -34
- package/dist/cjs/components/Dashboard/MetricComponent.js +3 -3
- package/dist/cjs/components/Dashboard/util.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/util.js +6 -2
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/cjs/components/QuillMultiSelectWithCombo.js +17 -18
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +9 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterModal.js +25 -3
- package/dist/cjs/components/ReportBuilder/FilterStack.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/FilterStack.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/FilterStack.js +2 -2
- package/dist/cjs/components/ReportBuilder/convert.d.ts +1 -0
- package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/convert.js +54 -4
- package/dist/cjs/components/ReportBuilder/ui.d.ts +2 -1
- package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/ui.js +3 -2
- package/dist/cjs/components/UiComponents.d.ts +1 -0
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- 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 +6 -5
- package/dist/cjs/hooks/useAstToFilterTree.d.ts +2 -1
- package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/cjs/hooks/useAstToFilterTree.js +3 -3
- package/dist/cjs/hooks/useDashboard.d.ts +5 -2
- package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
- package/dist/cjs/hooks/useDashboard.js +21 -7
- package/dist/cjs/hooks/useExport.d.ts.map +1 -1
- package/dist/cjs/hooks/useExport.js +6 -4
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +8 -2
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +59 -30
- package/dist/cjs/models/Client.d.ts +22 -3
- 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 +4 -0
- package/dist/cjs/models/Report.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.d.ts +3 -2
- package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astFilterProcessing.js +3323 -977
- package/dist/cjs/utils/astProcessing.d.ts +1 -1
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.js +3 -2
- package/dist/cjs/utils/client.d.ts +4 -2
- package/dist/cjs/utils/client.d.ts.map +1 -1
- package/dist/cjs/utils/client.js +47 -1
- package/dist/cjs/utils/columnProcessing.d.ts +3 -0
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +34 -1
- package/dist/cjs/utils/dashboard.d.ts +4 -3
- package/dist/cjs/utils/dashboard.d.ts.map +1 -1
- package/dist/cjs/utils/dashboard.js +10 -91
- package/dist/cjs/utils/dataFetcher.d.ts +3 -1
- package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
- package/dist/cjs/utils/dataFetcher.js +66 -30
- package/dist/cjs/utils/filterProcessing.d.ts +1 -1
- package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/filterProcessing.js +2 -0
- package/dist/cjs/utils/pivotConstructor.d.ts +4 -1
- package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/pivotConstructor.js +7 -7
- package/dist/cjs/utils/pivotProcessing.d.ts +4 -1
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +27 -20
- package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
- package/dist/cjs/utils/queryConstructor.js +101 -85
- package/dist/cjs/utils/report.d.ts +17 -5
- package/dist/cjs/utils/report.d.ts.map +1 -1
- package/dist/cjs/utils/report.js +23 -23
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +21 -21
- package/dist/cjs/utils/tableProcessing.d.ts +37 -10
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +45 -38
- package/dist/cjs/utils/tenants.d.ts +11 -0
- package/dist/cjs/utils/tenants.d.ts.map +1 -0
- package/dist/cjs/utils/tenants.js +13 -0
- package/dist/cjs/utils/textProcessing.d.ts +1 -0
- package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/textProcessing.js +49 -0
- package/dist/cjs/utils/validation.js +1 -1
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +2 -2
- package/dist/esm/ChartBuilder.d.ts +20 -2
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +131 -40
- package/dist/esm/ChartEditor.d.ts +5 -3
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +5 -6
- package/dist/esm/Context.d.ts +15 -4
- package/dist/esm/Context.d.ts.map +1 -1
- package/dist/esm/Context.js +36 -59
- package/dist/esm/Dashboard.d.ts +4 -0
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +79 -24
- package/dist/esm/QuillProvider.d.ts +12 -9
- package/dist/esm/QuillProvider.d.ts.map +1 -1
- package/dist/esm/QuillProvider.js +2 -2
- package/dist/esm/ReportBuilder.d.ts +9 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +200 -84
- package/dist/esm/SQLEditor.d.ts +5 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +80 -17
- package/dist/esm/Table.d.ts.map +1 -1
- package/dist/esm/Table.js +6 -5
- package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/InternalChart.js +107 -28
- package/dist/esm/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/PieChart.js +10 -7
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts +3 -2
- package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DashboardFilter.js +65 -65
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +82 -35
- package/dist/esm/components/Dashboard/MetricComponent.js +3 -3
- package/dist/esm/components/Dashboard/util.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/util.js +6 -2
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
- package/dist/esm/components/QuillMultiSelectWithCombo.js +17 -18
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +9 -1
- package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterModal.js +26 -4
- package/dist/esm/components/ReportBuilder/FilterStack.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/FilterStack.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/FilterStack.js +2 -2
- package/dist/esm/components/ReportBuilder/convert.d.ts +1 -0
- package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/convert.js +54 -5
- package/dist/esm/components/ReportBuilder/ui.d.ts +2 -1
- package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/ui.js +4 -3
- package/dist/esm/components/UiComponents.d.ts +1 -0
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- 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 +7 -6
- package/dist/esm/hooks/useAstToFilterTree.d.ts +2 -1
- package/dist/esm/hooks/useAstToFilterTree.d.ts.map +1 -1
- package/dist/esm/hooks/useAstToFilterTree.js +3 -3
- package/dist/esm/hooks/useDashboard.d.ts +5 -2
- package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
- package/dist/esm/hooks/useDashboard.js +21 -7
- package/dist/esm/hooks/useExport.d.ts.map +1 -1
- package/dist/esm/hooks/useExport.js +7 -5
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +8 -2
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +59 -30
- package/dist/esm/models/Client.d.ts +22 -3
- 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 +4 -0
- package/dist/esm/models/Report.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.d.ts +3 -2
- package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astFilterProcessing.js +3323 -977
- package/dist/esm/utils/astProcessing.d.ts +1 -1
- package/dist/esm/utils/astProcessing.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.js +4 -3
- package/dist/esm/utils/client.d.ts +4 -2
- package/dist/esm/utils/client.d.ts.map +1 -1
- package/dist/esm/utils/client.js +47 -1
- package/dist/esm/utils/columnProcessing.d.ts +3 -0
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.js +31 -1
- package/dist/esm/utils/dashboard.d.ts +4 -3
- package/dist/esm/utils/dashboard.d.ts.map +1 -1
- package/dist/esm/utils/dashboard.js +10 -90
- package/dist/esm/utils/dataFetcher.d.ts +3 -1
- package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
- package/dist/esm/utils/dataFetcher.js +65 -29
- package/dist/esm/utils/filterProcessing.d.ts +1 -1
- package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
- package/dist/esm/utils/filterProcessing.js +2 -0
- package/dist/esm/utils/pivotConstructor.d.ts +4 -1
- package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
- package/dist/esm/utils/pivotConstructor.js +8 -8
- package/dist/esm/utils/pivotProcessing.d.ts +4 -1
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +27 -20
- package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
- package/dist/esm/utils/queryConstructor.js +101 -85
- package/dist/esm/utils/report.d.ts +17 -5
- package/dist/esm/utils/report.d.ts.map +1 -1
- package/dist/esm/utils/report.js +20 -23
- package/dist/esm/utils/schema.d.ts.map +1 -1
- package/dist/esm/utils/schema.js +21 -21
- package/dist/esm/utils/tableProcessing.d.ts +37 -10
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +46 -39
- package/dist/esm/utils/tenants.d.ts +11 -0
- package/dist/esm/utils/tenants.d.ts.map +1 -0
- package/dist/esm/utils/tenants.js +9 -0
- package/dist/esm/utils/textProcessing.d.ts +1 -0
- package/dist/esm/utils/textProcessing.d.ts.map +1 -1
- package/dist/esm/utils/textProcessing.js +48 -0
- package/dist/esm/utils/validation.js +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { ColumnInternal } from '../models/Columns';
|
|
2
2
|
import { Pivot } from '../models/Pivot';
|
|
3
3
|
export declare function pivotToSql(pivot: Pivot, query: string, columns: ColumnInternal[]): string;
|
|
4
|
-
export declare function isValidPivot(pivot: Pivot):
|
|
4
|
+
export declare function isValidPivot(pivot: Pivot): {
|
|
5
|
+
valid: boolean;
|
|
6
|
+
reason: string;
|
|
7
|
+
};
|
|
5
8
|
export declare function getPossiblePivotFieldOptions(columns: ColumnInternal[], uniqueValues: {
|
|
6
9
|
[column: string]: {
|
|
7
10
|
[value: string]: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,EAAE,GACxB,MAAM,CAuCR;AAkBD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,EAAE,GACxB,MAAM,CAuCR;AAkBD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA6B7E;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,cAAc,EAAE,EACzB,YAAY,EAAE;IAAE,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;CAAE;;;;EAsDjE;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,CA8BP;AAED,eAAO,MAAM,eAAe,WAAY,GAAG,SAAS,KAAK,YA8BxD,CAAC"}
|
|
@@ -52,28 +52,35 @@ function generateTwoDPivotQuery(pivot, query, columns) {
|
|
|
52
52
|
FROM original_query GROUP BY ${pivot.rowField}`;
|
|
53
53
|
}
|
|
54
54
|
function isValidPivot(pivot) {
|
|
55
|
-
if (pivot.rowField && pivot.
|
|
56
|
-
return
|
|
55
|
+
if (!pivot.rowField && !pivot.valueField) {
|
|
56
|
+
return {
|
|
57
|
+
valid: false,
|
|
58
|
+
reason: 'Row field cannot be empty without a value field',
|
|
59
|
+
};
|
|
57
60
|
}
|
|
58
|
-
else if (pivot.rowField &&
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
else if (pivot.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
61
|
+
else if (!pivot.rowField && pivot.columnField) {
|
|
62
|
+
return {
|
|
63
|
+
valid: false,
|
|
64
|
+
reason: 'Row field cannot be empty when column field is present',
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
else if (!pivot.aggregationType) {
|
|
68
|
+
return { valid: false, reason: 'Aggregation type cannot be empty' };
|
|
69
|
+
}
|
|
70
|
+
else if (pivot.aggregationType === 'percentage' &&
|
|
71
|
+
(!pivot.valueField2 || !pivot.valueField)) {
|
|
72
|
+
return {
|
|
73
|
+
valid: false,
|
|
74
|
+
reason: 'Percentage aggregation requires two value fields',
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
else if (!pivot.valueField && pivot.aggregationType !== 'count') {
|
|
78
|
+
return {
|
|
79
|
+
valid: false,
|
|
80
|
+
reason: 'Value field cannot be empty when aggregation is not "count"',
|
|
81
|
+
};
|
|
75
82
|
}
|
|
76
|
-
return
|
|
83
|
+
return { valid: true, reason: '' };
|
|
77
84
|
}
|
|
78
85
|
function getPossiblePivotFieldOptions(columns, uniqueValues) {
|
|
79
86
|
const rowFields = [];
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"queryConstructor.d.ts","sourceRoot":"","sources":["../../../src/utils/queryConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AA0BxC,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAEvB,uBAAuB,CAAC,EAAE,OAAO,EACjC,sBAAsB,CAAC,EAAE,OAAO,UA+EjC;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAE1D;AAkED,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,UAYrB;AAiDD,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,UAgBrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,EAC1B,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CAgCpB"}
|
|
@@ -6,10 +6,12 @@ exports.generateCountQuery = generateCountQuery;
|
|
|
6
6
|
exports.generateDistinctQuery = generateDistinctQuery;
|
|
7
7
|
exports.generateMinMaxDateRangeQueries = generateMinMaxDateRangeQueries;
|
|
8
8
|
exports.generatePivotQuery = generatePivotQuery;
|
|
9
|
+
const columnProcessing_1 = require("./columnProcessing");
|
|
9
10
|
const constants_1 = require("./constants");
|
|
10
11
|
const pivotProcessing_1 = require("./pivotProcessing");
|
|
12
|
+
const textProcessing_1 = require("./textProcessing");
|
|
11
13
|
function processSingleQuotes(value, databaseType) {
|
|
12
|
-
if (['postgresql', 'snowflake'].includes(databaseType.toLowerCase())) {
|
|
14
|
+
if (['postgresql', 'snowflake', 'clickhouse'].includes(databaseType.toLowerCase())) {
|
|
13
15
|
return value.replaceAll("'", "''");
|
|
14
16
|
}
|
|
15
17
|
return value.replaceAll("'", "\\'");
|
|
@@ -25,70 +27,80 @@ function replaceBigQuerySpecialCharacters(column) {
|
|
|
25
27
|
function processColumnReference(column, databaseType, fallbackOnNull,
|
|
26
28
|
// for mysql, we only want to use double quotes for pivot column field aliases
|
|
27
29
|
isPivotColumnFieldAlias, isPivotValueFieldAlias) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
switch (databaseType.toLowerCase()) {
|
|
31
|
+
case 'postgresql':
|
|
32
|
+
case 'clickhouse': {
|
|
33
|
+
if (column === '') {
|
|
34
|
+
return fallbackOnNull ? `"${fallbackOnNull}"` : `"_"`;
|
|
35
|
+
}
|
|
36
|
+
if (isPivotColumnFieldAlias) {
|
|
37
|
+
return `"${column.replaceAll('"', '')}"`;
|
|
38
|
+
}
|
|
39
|
+
const columnParts = column.split('.');
|
|
40
|
+
if (columnParts.length > 1) {
|
|
41
|
+
return (`"` +
|
|
42
|
+
columnParts.map((part) => part.replaceAll('"', '')).join('"."') +
|
|
43
|
+
`"`);
|
|
44
|
+
}
|
|
30
45
|
return `"${column.replaceAll('"', '')}"`;
|
|
31
46
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
47
|
+
case 'mysql': {
|
|
48
|
+
if (column === '') {
|
|
49
|
+
return fallbackOnNull ? `${fallbackOnNull}` : '_';
|
|
50
|
+
}
|
|
51
|
+
if (isPivotColumnFieldAlias) {
|
|
52
|
+
return `\`${column.replaceAll(`\``, '').replaceAll(`"`, '')}\``;
|
|
53
|
+
}
|
|
54
|
+
const columnParts = column.split('.');
|
|
55
|
+
if (columnParts.length > 1) {
|
|
56
|
+
return (`\`` +
|
|
57
|
+
columnParts.map((part) => part.replaceAll(`\``, '')).join('`.`') +
|
|
58
|
+
`\``);
|
|
59
|
+
}
|
|
60
|
+
// Wrap MySQL columns in backticks to handle whitespace
|
|
61
|
+
return `\`${column.replaceAll(`\``, '')}\``;
|
|
37
62
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return `${fallbackOnNull}`;
|
|
55
|
-
}
|
|
56
|
-
// Wrap MySQL columns in backticks to handle whitespace
|
|
57
|
-
return `\`${column.replaceAll(`\``, '')}\``;
|
|
58
|
-
}
|
|
59
|
-
if (['snowflake'].includes(databaseType.toLowerCase())) {
|
|
60
|
-
if (isPivotColumnFieldAlias) {
|
|
61
|
-
return `"${column.replaceAll('"', '')}"`;
|
|
63
|
+
case 'snowflake': {
|
|
64
|
+
if (column === '') {
|
|
65
|
+
return fallbackOnNull ? `${fallbackOnNull}` : '_';
|
|
66
|
+
}
|
|
67
|
+
if (isPivotColumnFieldAlias) {
|
|
68
|
+
return `"${column.replaceAll('"', '')}"`;
|
|
69
|
+
}
|
|
70
|
+
if (isPivotValueFieldAlias) {
|
|
71
|
+
const cleanedColumn = column.replaceAll(')', '').replaceAll('(', '_');
|
|
72
|
+
return `${cleanedColumn}`;
|
|
73
|
+
}
|
|
74
|
+
// const columnParts = column.split('.');
|
|
75
|
+
// if (columnParts.length > 1) {
|
|
76
|
+
// return '"' + columnParts.join('"."') + '"';
|
|
77
|
+
// }
|
|
78
|
+
return column;
|
|
62
79
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
80
|
+
case 'bigquery': {
|
|
81
|
+
if (column === '') {
|
|
82
|
+
return fallbackOnNull ? `\`${fallbackOnNull}\`` : '`_`';
|
|
83
|
+
}
|
|
84
|
+
if (isPivotColumnFieldAlias) {
|
|
85
|
+
return `\`${replaceBigQuerySpecialCharacters(column.replaceAll('`', ''))}\``;
|
|
86
|
+
}
|
|
87
|
+
const columnParts = column.split('.');
|
|
88
|
+
if (columnParts.length > 1) {
|
|
89
|
+
return (`\`` +
|
|
90
|
+
columnParts.map((part) => part.replaceAll(`\``, '')).join('`.`') +
|
|
91
|
+
`\``);
|
|
92
|
+
}
|
|
93
|
+
return `\`${replaceBigQuerySpecialCharacters(column.replaceAll('`', ''))}\``;
|
|
66
94
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
// return '"' + columnParts.join('"."') + '"';
|
|
70
|
-
// }
|
|
71
|
-
if (column === '' && fallbackOnNull) {
|
|
72
|
-
return `${fallbackOnNull}`;
|
|
73
|
-
}
|
|
74
|
-
return column;
|
|
75
|
-
}
|
|
76
|
-
if (isPivotColumnFieldAlias) {
|
|
77
|
-
return `\`${column.replaceAll('`', '')}\``;
|
|
78
|
-
}
|
|
79
|
-
const columnParts = column.split('.');
|
|
80
|
-
if (columnParts.length > 1) {
|
|
81
|
-
return (`\`` +
|
|
82
|
-
columnParts.map((part) => part.replaceAll(`\``, '')).join('`.`') +
|
|
83
|
-
`\``);
|
|
95
|
+
default:
|
|
96
|
+
return column;
|
|
84
97
|
}
|
|
85
|
-
return `\`${replaceBigQuerySpecialCharacters(column.replaceAll('`', ''))}\``;
|
|
86
98
|
}
|
|
87
99
|
function replaceSpacesWithUnderscores(column) {
|
|
88
100
|
return column.replaceAll(' ', '_');
|
|
89
101
|
}
|
|
90
102
|
function processInterval(interval, rowField, databaseType) {
|
|
91
|
-
if (['postgresql', 'snowflake'].includes(databaseType.toLowerCase())) {
|
|
103
|
+
if (['postgresql', 'snowflake', 'clickhouse'].includes(databaseType.toLowerCase())) {
|
|
92
104
|
return `(${processColumnReference(rowField, databaseType)} + INTERVAL '${interval}')`;
|
|
93
105
|
}
|
|
94
106
|
else if (databaseType.toLowerCase() === 'mysql') {
|
|
@@ -103,6 +115,12 @@ function processDateTrunc(dateBucket, rowField, databaseType, comparisonInterval
|
|
|
103
115
|
: processColumnReference(rowField, databaseType);
|
|
104
116
|
return `date_trunc('${dateBucket}', ${dateField})`;
|
|
105
117
|
}
|
|
118
|
+
if (['clickhouse'].includes(databaseType.toLowerCase())) {
|
|
119
|
+
const dateField = comparisonInterval
|
|
120
|
+
? processInterval(comparisonInterval, rowField, databaseType)
|
|
121
|
+
: processColumnReference(rowField, databaseType);
|
|
122
|
+
return `dateTrunc('${dateBucket}', ${dateField})`;
|
|
123
|
+
}
|
|
106
124
|
if (['mysql'].includes(databaseType.toLowerCase())) {
|
|
107
125
|
const dateField = comparisonInterval
|
|
108
126
|
? processInterval(comparisonInterval, rowField, databaseType)
|
|
@@ -193,7 +211,7 @@ function generateMinMaxDateRangeQueries(columnFields, query, databaseType) {
|
|
|
193
211
|
const max = 'MAX';
|
|
194
212
|
const min = 'MIN';
|
|
195
213
|
const distinctQueries = columnFields.map((field) => {
|
|
196
|
-
const wrappedField = ['postgresql'].includes(databaseType.toLowerCase())
|
|
214
|
+
const wrappedField = ['postgresql', 'clickhouse'].includes(databaseType.toLowerCase())
|
|
197
215
|
? `"${field}"`
|
|
198
216
|
: field;
|
|
199
217
|
return `SELECT '${field}' AS field, ${min}(${wrappedField}) AS min_range, ${max}(${wrappedField}) AS max_range FROM querytable`;
|
|
@@ -202,7 +220,7 @@ function generateMinMaxDateRangeQueries(columnFields, query, databaseType) {
|
|
|
202
220
|
return `WITH querytable AS (${query.replace(';', '')}) ` + distinctQuery;
|
|
203
221
|
}
|
|
204
222
|
function generatePivotQuery(pivot, itemQueries, databaseType, comparisonInterval, distinctStrings, dateBucket, rowLimit) {
|
|
205
|
-
if (!(0, pivotProcessing_1.isValidPivot)(pivot)) {
|
|
223
|
+
if (!(0, pivotProcessing_1.isValidPivot)(pivot).valid) {
|
|
206
224
|
return undefined;
|
|
207
225
|
}
|
|
208
226
|
if (pivot.columnField) {
|
|
@@ -220,8 +238,7 @@ function create2DPivotQuery(pivot, itemQueries, databaseType, dateBucket, compar
|
|
|
220
238
|
if (!columnFieldValues) {
|
|
221
239
|
return undefined;
|
|
222
240
|
}
|
|
223
|
-
if (
|
|
224
|
-
!pivot.rowFieldType) {
|
|
241
|
+
if ((0, columnProcessing_1.isStringType)(pivot.rowFieldType || '') || !pivot.rowFieldType) {
|
|
225
242
|
return create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databaseType, rowLimit);
|
|
226
243
|
}
|
|
227
244
|
return create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseType, dateBucket, comparisonInterval, rowLimit);
|
|
@@ -234,9 +251,9 @@ function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databas
|
|
|
234
251
|
const valueField = pivot.valueField;
|
|
235
252
|
const columnField = pivot.columnField;
|
|
236
253
|
const rowFieldAlias = processColumnReference(rowField, databaseType, undefined, false, true);
|
|
237
|
-
const valueFieldAlias = processColumnReference(valueField, databaseType, undefined, false, true);
|
|
254
|
+
const valueFieldAlias = processColumnReference(valueField ?? rowField, databaseType, undefined, false, true);
|
|
238
255
|
const columnFieldAlias = processColumnReference(columnField, databaseType, undefined, false, true);
|
|
239
|
-
const max =
|
|
256
|
+
const max = 'GREATEST';
|
|
240
257
|
const valueAliasSubstring = valueField
|
|
241
258
|
? `${processColumnReference(valueField, databaseType, undefined, true)} AS ${valueFieldAlias},`
|
|
242
259
|
: '';
|
|
@@ -258,7 +275,7 @@ function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databas
|
|
|
258
275
|
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
259
276
|
: '';
|
|
260
277
|
const compareCaseWhenCTE = itemQueries[1]
|
|
261
|
-
? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}
|
|
278
|
+
? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}${caseWhensCompare.length > 0 ? `, ${caseWhensCompare.join(', ')}` : ''} FROM quill_c_alias GROUP BY ${rowFieldAlias})`
|
|
262
279
|
: '';
|
|
263
280
|
const joinQuery = itemQueries[1]
|
|
264
281
|
? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)} = qt.${rowFieldAlias}`
|
|
@@ -266,7 +283,7 @@ function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databas
|
|
|
266
283
|
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
267
284
|
quill_alias AS (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
268
285
|
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_qt),
|
|
269
|
-
quill_qt_cw AS (SELECT ${rowFieldAlias}
|
|
286
|
+
quill_qt_cw AS (SELECT ${rowFieldAlias}${caseWhens.length > 0 ? `, ${caseWhens.join(', ')}` : ''} FROM quill_alias GROUP BY ${rowFieldAlias})
|
|
270
287
|
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
271
288
|
SELECT * FROM quill_qt_cw qt
|
|
272
289
|
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
@@ -285,7 +302,7 @@ function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databas
|
|
|
285
302
|
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
286
303
|
: '';
|
|
287
304
|
const compareCaseWhenCTE = itemQueries[1]
|
|
288
|
-
? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}
|
|
305
|
+
? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}${caseWhensCompare.length > 0 ? `, ${caseWhensCompare.join(', ')}` : ''} FROM quill_c_alias GROUP BY ${rowFieldAlias})`
|
|
289
306
|
: '';
|
|
290
307
|
const joinQuery = itemQueries[1]
|
|
291
308
|
? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)} = qt.${rowFieldAlias}`
|
|
@@ -293,7 +310,7 @@ function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databas
|
|
|
293
310
|
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
294
311
|
quill_alias AS (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring} ${value2AliasSubstring}
|
|
295
312
|
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_qt),
|
|
296
|
-
quill_qt_cw AS (SELECT ${rowFieldAlias}
|
|
313
|
+
quill_qt_cw AS (SELECT ${rowFieldAlias}${caseWhens.length > 0 ? `, ${caseWhens.join(', ')}` : ''} FROM quill_alias GROUP BY ${rowFieldAlias})
|
|
297
314
|
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
298
315
|
SELECT * FROM quill_qt_cw qt
|
|
299
316
|
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
@@ -312,7 +329,7 @@ function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databas
|
|
|
312
329
|
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
313
330
|
: '';
|
|
314
331
|
const compareCaseWhenCTE = itemQueries[1]
|
|
315
|
-
? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}
|
|
332
|
+
? `, quill_ct_cw as (SELECT ${rowFieldAlias} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}${caseWhensCompare.length > 0 ? `, ${caseWhensCompare.join(', ')}` : ''} FROM quill_c_alias GROUP BY ${rowFieldAlias})`
|
|
316
333
|
: '';
|
|
317
334
|
const joinQuery = itemQueries[1]
|
|
318
335
|
? `JOIN quill_ct_cw ct ON ct.${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)} = qt.${rowFieldAlias}`
|
|
@@ -320,7 +337,7 @@ function create2DStringPivotQuery(pivot, itemQueries, columnFieldValues, databas
|
|
|
320
337
|
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
321
338
|
quill_alias AS (SELECT ${processColumnReference(rowField, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
322
339
|
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_qt),
|
|
323
|
-
quill_qt_cw AS (SELECT ${rowFieldAlias}
|
|
340
|
+
quill_qt_cw AS (SELECT ${rowFieldAlias}${caseWhens.length > 0 ? `, ${caseWhens.join(', ')}` : ''} FROM quill_alias GROUP BY ${rowFieldAlias})
|
|
324
341
|
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
325
342
|
SELECT * FROM quill_qt_cw qt
|
|
326
343
|
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
@@ -337,7 +354,7 @@ function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseT
|
|
|
337
354
|
const valueAliasSubstring = pivot.valueField
|
|
338
355
|
? `${processColumnReference(pivot.valueField, databaseType, undefined, true)} AS ${valueFieldAlias},`
|
|
339
356
|
: '';
|
|
340
|
-
const max =
|
|
357
|
+
const max = 'GREATEST';
|
|
341
358
|
if (pivot.aggregationType === 'percentage' && pivot.valueField2) {
|
|
342
359
|
const valueField2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
|
|
343
360
|
const value2AliasSubstring = `${processColumnReference(pivot.valueField2, databaseType, undefined, true)} AS ${valueField2Alias},`;
|
|
@@ -357,7 +374,7 @@ function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseT
|
|
|
357
374
|
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
358
375
|
: '';
|
|
359
376
|
const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
|
|
360
|
-
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}
|
|
377
|
+
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}${caseWhensCompare.length > 0 ? `, ${caseWhensCompare.join(', ')}` : ''} FROM quill_c_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
|
|
361
378
|
: '';
|
|
362
379
|
const joinQuery = itemQueries[1] && comparisonInterval
|
|
363
380
|
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${rowFieldAlias} = ${processDateTrunc(dateBucket, `ct.comparison_${rowFieldAlias}`, databaseType, comparisonInterval)}`
|
|
@@ -365,7 +382,7 @@ function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseT
|
|
|
365
382
|
return `WITH quill_query_table AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
366
383
|
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
367
384
|
${processColumnReference(columnField, databaseType, undefined, true, true)} AS ${columnFieldAlias} FROM quill_query_table),
|
|
368
|
-
quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}
|
|
385
|
+
quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}${caseWhens.length > 0 ? `, ${caseWhens.join(', ')}` : ''} FROM quill_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
|
|
369
386
|
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
370
387
|
SELECT * FROM quill_qt_agg qt
|
|
371
388
|
${joinQuery} ORDER BY qt.${rowFieldAlias}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
@@ -384,7 +401,7 @@ function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseT
|
|
|
384
401
|
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
385
402
|
: '';
|
|
386
403
|
const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
|
|
387
|
-
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}
|
|
404
|
+
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}${caseWhensCompare.length > 0 ? `, ${caseWhensCompare.join(', ')}` : ''} FROM quill_c_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
|
|
388
405
|
: '';
|
|
389
406
|
const joinQuery = itemQueries[1] && comparisonInterval
|
|
390
407
|
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${rowFieldAlias} = ${processDateTrunc(dateBucket, `ct.comparison_${rowFieldAlias}`, databaseType, comparisonInterval)}`
|
|
@@ -392,7 +409,7 @@ function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseT
|
|
|
392
409
|
return `WITH quill_query_table AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
393
410
|
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring} ${value2AliasSubstring}
|
|
394
411
|
${processColumnReference(columnField, databaseType, undefined, true, true)} AS ${columnFieldAlias} FROM quill_query_table),
|
|
395
|
-
quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}
|
|
412
|
+
quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}${caseWhens.length > 0 ? `, ${caseWhens.join(', ')}` : ''} FROM quill_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
|
|
396
413
|
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
397
414
|
SELECT * FROM quill_qt_agg qt
|
|
398
415
|
${joinQuery} ORDER BY qt.${rowFieldAlias}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
@@ -411,7 +428,7 @@ function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseT
|
|
|
411
428
|
${processColumnReference(columnField, databaseType, undefined, true)} AS ${columnFieldAlias} FROM quill_ct)`
|
|
412
429
|
: '';
|
|
413
430
|
const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
|
|
414
|
-
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}
|
|
431
|
+
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowField, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)}${caseWhensCompare.length > 0 ? `, ${caseWhensCompare.join(', ')}` : ''} FROM quill_c_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
|
|
415
432
|
: '';
|
|
416
433
|
const joinQuery = itemQueries[1] && comparisonInterval
|
|
417
434
|
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${rowFieldAlias} = ${processDateTrunc(dateBucket, `ct.comparison_${rowFieldAlias}`, databaseType, comparisonInterval)}`
|
|
@@ -419,14 +436,13 @@ function create2DDatePivotQuery(pivot, itemQueries, columnFieldValues, databaseT
|
|
|
419
436
|
return `WITH quill_query_table AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
420
437
|
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}, ${valueAliasSubstring}
|
|
421
438
|
${processColumnReference(columnField, databaseType, undefined, true, true)} AS ${columnFieldAlias} FROM quill_query_table),
|
|
422
|
-
quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}
|
|
439
|
+
quill_qt_agg as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${rowFieldAlias}${caseWhens.length > 0 ? `, ${caseWhens.join(', ')}` : ''} FROM quill_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
|
|
423
440
|
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
424
441
|
SELECT * FROM quill_qt_agg qt
|
|
425
442
|
${joinQuery} ORDER BY qt.${rowFieldAlias}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
426
443
|
}
|
|
427
444
|
function create1DPivotQuery(pivot, itemQueries, dateBucket = 'month', databaseType, comparisonInterval, rowLimit) {
|
|
428
|
-
if (
|
|
429
|
-
!pivot.rowFieldType) {
|
|
445
|
+
if ((0, columnProcessing_1.isStringType)(pivot.rowFieldType || '') || !pivot.rowFieldType) {
|
|
430
446
|
return create1DStringPivotQuery(pivot, itemQueries, databaseType, rowLimit);
|
|
431
447
|
}
|
|
432
448
|
return create1DDatePivotQuery(pivot, itemQueries, dateBucket, databaseType, comparisonInterval, rowLimit);
|
|
@@ -437,7 +453,7 @@ function create1DStringPivotQuery(pivot, itemQueries, databaseType, rowLimit) {
|
|
|
437
453
|
const rowAlias = processColumnReference(rowField, databaseType, undefined, false, true);
|
|
438
454
|
const valueAlias = processColumnReference(valueField ?? rowField, databaseType, undefined, false, true);
|
|
439
455
|
const countAlias = processColumnReference('count', databaseType);
|
|
440
|
-
const max =
|
|
456
|
+
const max = 'GREATEST';
|
|
441
457
|
const valueAliasSubstring = valueField
|
|
442
458
|
? `, ${processColumnReference(`${valueField}`, databaseType, undefined, true)} AS ${valueAlias}`
|
|
443
459
|
: ``;
|
|
@@ -460,7 +476,7 @@ function create1DStringPivotQuery(pivot, itemQueries, databaseType, rowLimit) {
|
|
|
460
476
|
: '';
|
|
461
477
|
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
462
478
|
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowAlias}${valueAliasSubstring}${value2AliasSubstring} FROM quill_qt),
|
|
463
|
-
quill_qt_cw AS (SELECT ${rowAlias}, sum(${valueAlias}) / ${max}(sum(${value2Alias}), 1) as ${valueField
|
|
479
|
+
quill_qt_cw AS (SELECT ${rowAlias}, sum(${valueAlias}) / ${max}(sum(${value2Alias}), 1) as ${processColumnReference(`${valueField ?? ''}_${(0, textProcessing_1.matchCasing)('percentage', valueField)}`, databaseType, undefined, false, true)} FROM quill_alias GROUP BY ${rowAlias})
|
|
464
480
|
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
465
481
|
SELECT * FROM quill_qt_cw qt
|
|
466
482
|
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
@@ -493,7 +509,7 @@ function create1DDatePivotQuery(pivot, itemQueries, dateBucket = 'month', databa
|
|
|
493
509
|
const valueAliasSubstring = valueField
|
|
494
510
|
? `, ${processColumnReference(`${valueField}`, databaseType, undefined, true)} AS ${valueFieldAlias}`
|
|
495
511
|
: ``;
|
|
496
|
-
const max =
|
|
512
|
+
const max = 'GREATEST';
|
|
497
513
|
// this "and" is for typescript. in reality, pivot.valueField2 must exist if pivot.aggregationType === 'percentage'
|
|
498
514
|
if (pivot.aggregationType === 'percentage' && pivot.valueField2) {
|
|
499
515
|
const valueField2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
|
|
@@ -508,14 +524,14 @@ function create1DDatePivotQuery(pivot, itemQueries, dateBucket = 'month', databa
|
|
|
508
524
|
: '';
|
|
509
525
|
const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
|
|
510
526
|
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)},
|
|
511
|
-
sum(${processColumnReference(`${valueFieldAlias}`, databaseType, undefined, true)}) / ${max}(sum(${processColumnReference(`${valueField2Alias}`, databaseType, undefined, true)}), 1) as ${processColumnReference(`comparison_${valueField ? valueFieldAlias : 'count'}`, databaseType)}
|
|
527
|
+
sum(${processColumnReference(`${valueFieldAlias}`, databaseType, undefined, true)}) / ${max}(sum(${processColumnReference(`${valueField2Alias}`, databaseType, undefined, true)}), 1) as ${processColumnReference(`comparison_${valueField ? valueFieldAlias : 'count'}_${(0, textProcessing_1.matchCasing)('percentage', valueField)}`, databaseType, undefined, false, true)} FROM quill_c_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
|
|
512
528
|
: '';
|
|
513
529
|
const joinQuery = itemQueries[1] && comparisonInterval
|
|
514
530
|
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${processColumnReference(rowField, databaseType)} = ${processDateTrunc(dateBucket, `ct.comparison_${rowField}`, databaseType, comparisonInterval)}`
|
|
515
531
|
: '';
|
|
516
532
|
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
517
533
|
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}${valueAliasSubstring}${value2AliasSubstring} FROM quill_qt),
|
|
518
|
-
quill_qt_agg AS (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`${rowField}`, databaseType)}, sum(${valueFieldAlias}) / ${max}(sum(${valueField2Alias}), 1) as ${valueField
|
|
534
|
+
quill_qt_agg AS (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`${rowField}`, databaseType)}, sum(${valueFieldAlias}) / ${max}(sum(${valueField2Alias}), 1) as ${processColumnReference(`${valueField ?? ''}_${(0, textProcessing_1.matchCasing)('percentage', valueField)}`, databaseType, undefined, false, true)} FROM quill_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
|
|
519
535
|
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
520
536
|
SELECT * FROM quill_qt_agg qt
|
|
521
537
|
${joinQuery} ORDER BY qt.${processColumnReference(`${rowField}`, databaseType)}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
@@ -528,14 +544,14 @@ function create1DDatePivotQuery(pivot, itemQueries, dateBucket = 'month', databa
|
|
|
528
544
|
: '';
|
|
529
545
|
const compareCaseWhenCTE = itemQueries[1] && comparisonInterval
|
|
530
546
|
? `, quill_ct_cw as (SELECT ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)} as ${processColumnReference(`comparison_${rowFieldAlias}`, databaseType)},
|
|
531
|
-
${processAggType(pivot.aggregationType)}(${valueFieldAlias}) as ${processColumnReference(`comparison_${valueField ? valueFieldAlias : 'count'}`, databaseType)} FROM quill_c_alias GROUP BY ${processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
|
|
547
|
+
${processAggType(pivot.aggregationType)}(${valueFieldAlias}) as ${processColumnReference(`comparison_${valueField ? valueFieldAlias : 'count'}`, databaseType)} FROM quill_c_alias GROUP BY ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})`
|
|
532
548
|
: '';
|
|
533
549
|
const joinQuery = itemQueries[1] && comparisonInterval
|
|
534
550
|
? `LEFT JOIN quill_ct_cw ${processColumnReference(`ct`, databaseType)} ON qt.${processColumnReference(rowField, databaseType)} = ${processDateTrunc(dateBucket, `ct.comparison_${rowField}`, databaseType, comparisonInterval)}`
|
|
535
551
|
: '';
|
|
536
552
|
return `WITH quill_qt AS (${itemQueries[0]?.replaceAll(';', '')}),
|
|
537
553
|
quill_alias AS (SELECT ${processColumnReference(`${rowField}`, databaseType, undefined, true)} AS ${rowFieldAlias}${valueAliasSubstring} FROM quill_qt),
|
|
538
|
-
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)})
|
|
554
|
+
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 ${databaseType.toLowerCase() === 'clickhouse' ? processColumnReference(`${rowField}`, databaseType) : processDateTrunc(dateBucket, rowFieldAlias, databaseType)})
|
|
539
555
|
${compareCTE} ${aliasCTE} ${compareCaseWhenCTE}
|
|
540
556
|
SELECT * FROM quill_qt_agg qt
|
|
541
557
|
${joinQuery} ORDER BY qt.${processColumnReference(`${rowField}`, databaseType)}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
@@ -548,7 +564,7 @@ function createAggregationValuePivot(pivot, itemQueries, databaseType, rowLimit)
|
|
|
548
564
|
const valueAlias = processColumnReference(valueField, databaseType, undefined, false, true);
|
|
549
565
|
if (aggregationType === 'percentage' && pivot.valueField2) {
|
|
550
566
|
const value2Alias = processColumnReference(pivot.valueField2, databaseType, undefined, false, true);
|
|
551
|
-
const max =
|
|
567
|
+
const max = 'GREATEST';
|
|
552
568
|
const compareCTE = itemQueries[1]
|
|
553
569
|
? `, quill_ct as (${itemQueries[1]?.replaceAll(';', '')})`
|
|
554
570
|
: '';
|
|
@@ -556,11 +572,11 @@ function createAggregationValuePivot(pivot, itemQueries, databaseType, rowLimit)
|
|
|
556
572
|
? `, quill_c_alias as (SELECT ${processColumnReference(valueField, databaseType, undefined, true)} AS ${valueAlias}, ${processColumnReference(pivot.valueField2, databaseType, undefined, true)} AS ${value2Alias} FROM quill_ct)`
|
|
557
573
|
: '';
|
|
558
574
|
const compareAggregation = itemQueries[1]
|
|
559
|
-
? `, quill_ct_cw as (SELECT sum(${processColumnReference(`${valueField}`, databaseType)}) / ${max}(sum(${processColumnReference(`${pivot.valueField2}`, databaseType)}), 1) as ${processColumnReference(`comparison_${valueField}
|
|
575
|
+
? `, quill_ct_cw as (SELECT sum(${processColumnReference(`${valueField}`, databaseType)}) / ${max}(sum(${processColumnReference(`${pivot.valueField2}`, databaseType)}), 1) as ${processColumnReference(`comparison_${valueField}_${(0, textProcessing_1.matchCasing)('percentage', valueField)}`, databaseType, undefined, false, true)} FROM quill_c_alias)`
|
|
560
576
|
: '';
|
|
561
577
|
const joinQuery = itemQueries[1] ? `CROSS JOIN quill_ct_cw ct` : '';
|
|
562
578
|
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),
|
|
563
|
-
quill_qt_agg AS (SELECT sum(${valueAlias}) / ${max}(sum(${value2Alias}), 1) as ${processColumnReference(`${valueField}`, databaseType)}
|
|
579
|
+
quill_qt_agg AS (SELECT sum(${valueAlias}) / ${max}(sum(${value2Alias}), 1) as ${processColumnReference(`${valueField}_${(0, textProcessing_1.matchCasing)('percentage', valueField)}`, databaseType)} FROM quill_alias)
|
|
564
580
|
${compareCTE} ${aliasCTE} ${compareAggregation}
|
|
565
581
|
SELECT * FROM quill_qt_agg qt
|
|
566
582
|
${joinQuery}${rowLimit ? ` LIMIT ${rowLimit}` : ''}`;
|
|
@@ -25,7 +25,10 @@ export type ReportBuilderInfo = {
|
|
|
25
25
|
};
|
|
26
26
|
export declare const EMPTY_REPORT: QuillReport;
|
|
27
27
|
export declare const EMPTY_INTERNAL_REPORT: QuillReportInternal;
|
|
28
|
-
export declare function fetchReport(reportId: string, client: QuillProviderClient,
|
|
28
|
+
export declare function fetchReport(reportId: string, client: QuillProviderClient, tenants?: {
|
|
29
|
+
tenantField: string;
|
|
30
|
+
tenantIds: (string | number)[];
|
|
31
|
+
}[] | (string | number)[], flags?: string[], useReportTask?: boolean, filters?: any[], additionalProcessing?: AdditionalProcessing, dateBucket?: string, customFields?: any, rowsOnly?: boolean, rowCountOnly?: boolean, abortSignal?: AbortSignal, getDefaultDashboardFilters?: boolean): Promise<{
|
|
29
32
|
report: QuillReportInternal;
|
|
30
33
|
error?: string;
|
|
31
34
|
}>;
|
|
@@ -36,11 +39,17 @@ export declare function processReportResponse({ resp, client, filters, dateBucke
|
|
|
36
39
|
dateBucket?: string;
|
|
37
40
|
additionalProcessing?: AdditionalProcessing;
|
|
38
41
|
}): Promise<QuillReportInternal>;
|
|
39
|
-
export declare function fetchReportInfo(reportId: string, client: QuillProviderClient
|
|
42
|
+
export declare function fetchReportInfo(reportId: string, client: QuillProviderClient, tenants?: {
|
|
43
|
+
tenantField: string;
|
|
44
|
+
tenantIds: (string | number)[];
|
|
45
|
+
}[] | (string | number)[]): Promise<{
|
|
40
46
|
report: any;
|
|
41
47
|
filters: any;
|
|
42
48
|
}>;
|
|
43
|
-
export declare function fetchReportRowCount(reportId: string, client: QuillProviderClient,
|
|
49
|
+
export declare function fetchReportRowCount(reportId: string, client: QuillProviderClient, tenants?: {
|
|
50
|
+
tenantField: string;
|
|
51
|
+
tenantIds: (string | number)[];
|
|
52
|
+
}[] | (string | number)[], flags?: string[], useReportTask?: boolean, filters?: any[], additionalProcessing?: AdditionalProcessing, customFields?: any, abortSignal?: AbortSignal): Promise<number | undefined>;
|
|
44
53
|
export declare function saveReport({ report, dashboardItemId, client, }: {
|
|
45
54
|
report: any;
|
|
46
55
|
dashboardItemId?: string;
|
|
@@ -48,8 +57,11 @@ export declare function saveReport({ report, dashboardItemId, client, }: {
|
|
|
48
57
|
}): Promise<any>;
|
|
49
58
|
export declare const formatRowsFromReport: (report: any, xAxisField?: string, xAxisFormat?: string) => any;
|
|
50
59
|
export declare function convertInternalReportToReport(report: QuillReportInternal, dashboardFilters: DashboardFilter[], initiator?: string): QuillReport;
|
|
51
|
-
export declare const fetchReportBuilderDataFromAST: (baseAst: any, formData: any, schema: Table[], client: QuillProviderClient,
|
|
60
|
+
export declare const fetchReportBuilderDataFromAST: (baseAst: any, formData: any, schema: Table[], client: QuillProviderClient, tenants?: {
|
|
61
|
+
tenantField: string;
|
|
62
|
+
tenantIds: (string | number)[];
|
|
63
|
+
}[] | (string | number)[], pivot?: Pivot, previousFormData?: any, currentTable?: string, previousRelevant?: {
|
|
52
64
|
uniqueStrings: UniqueValuesByTable;
|
|
53
65
|
dateRanges: DateRangesByColumn;
|
|
54
|
-
}, report?: QuillReportInternal, customFields?: any, skipUniqueValues?: boolean, skipRowCount?: boolean, processing?: AdditionalProcessing) => Promise<ReportBuilderInfo>;
|
|
66
|
+
}, report?: QuillReportInternal, customFields?: any, skipUniqueValues?: boolean, skipRowCount?: boolean, processing?: AdditionalProcessing, dashboardName?: string) => Promise<ReportBuilderInfo>;
|
|
55
67
|
//# sourceMappingURL=report.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"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"}
|