@gscdump/engine-duckdb-wasm 5.8.1 → 5.9.1
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/archetype-sql.mjs +5 -4
- package/package.json +4 -4
package/dist/archetype-sql.mjs
CHANGED
|
@@ -224,13 +224,14 @@ function compileArchetypeSql(query) {
|
|
|
224
224
|
const cmp = compareRangePredicate(query);
|
|
225
225
|
const dir = query.orderBy.dir === "asc" ? "ASC" : "DESC";
|
|
226
226
|
const compareOrder = `COALESCE(c.${query.orderBy.metric}, 0) ${dir}`;
|
|
227
|
+
const order = `${query.orderBy.metric} ${dir}, ${query.dimension} ASC`;
|
|
227
228
|
const metricList = query.metrics.includes(query.orderBy.metric) ? query.metrics : [...query.metrics, query.orderBy.metric];
|
|
228
229
|
const variantSel = query.dimension === "queryCanonical" ? ", COUNT(DISTINCT query) AS variantCount" : "";
|
|
229
230
|
if (query.dimension === "device") {
|
|
230
231
|
if (cmp) {
|
|
231
232
|
const curCols = metricList.map((m) => coalesceMetric(m, "c", m)).join(", ");
|
|
232
233
|
const prevCols = STD_METRICS.map((m) => coalesceMetric(m, "p", prevAlias(m))).join(", ");
|
|
233
|
-
let sql = `WITH cur AS (${deviceUnpivotSql(metricList, where.sql, false)}), prev AS (${deviceUnpivotSql(STD_METRICS, cmp.sql, false)}) SELECT COALESCE(c.device, p.device) AS device, ${curCols}, ${prevCols} FROM cur c FULL OUTER JOIN prev p ON c.device = p.device ORDER BY ${compareOrder} LIMIT ?`;
|
|
234
|
+
let sql = `WITH cur AS (${deviceUnpivotSql(metricList, where.sql, false)}), prev AS (${deviceUnpivotSql(STD_METRICS, cmp.sql, false)}) SELECT COALESCE(c.device, p.device) AS device, ${curCols}, ${prevCols} FROM cur c FULL OUTER JOIN prev p ON c.device = p.device ORDER BY ${compareOrder}, COALESCE(c.device, p.device) ASC LIMIT ?`;
|
|
234
235
|
const params = [
|
|
235
236
|
...where.params,
|
|
236
237
|
...where.params,
|
|
@@ -250,7 +251,7 @@ function compileArchetypeSql(query) {
|
|
|
250
251
|
params
|
|
251
252
|
};
|
|
252
253
|
}
|
|
253
|
-
let sql = `SELECT device, ${metricList.join(", ")} FROM (${deviceUnpivotSql(metricList, where.sql, false)}) ORDER BY ${
|
|
254
|
+
let sql = `SELECT device, ${metricList.join(", ")} FROM (${deviceUnpivotSql(metricList, where.sql, false)}) ORDER BY ${order} LIMIT ?`;
|
|
254
255
|
const params = [
|
|
255
256
|
...where.params,
|
|
256
257
|
...where.params,
|
|
@@ -277,7 +278,7 @@ function compileArchetypeSql(query) {
|
|
|
277
278
|
const mover = query.movers ? moverClause(query.movers) : null;
|
|
278
279
|
const moverWhere = mover ? `WHERE ${mover.where} ` : "";
|
|
279
280
|
const orderSql = mover ? mover.order : compareOrder;
|
|
280
|
-
let sql = `WITH cur AS (SELECT ${col} AS k, ${metricSelectList(metricList)}${variantSel} FROM ${table} WHERE ${where.sql}${facet.sql} GROUP BY ${col}), prev AS (SELECT ${col} AS k, ${metricSelectList(STD_METRICS)} FROM ${table} WHERE ${cmp.sql}${facet.sql} GROUP BY ${col}) SELECT COALESCE(c.k, p.k) AS ${query.dimension}, ${curCols}, ${prevCols}${variantOut}${totalCol} FROM cur c FULL OUTER JOIN prev p ON c.k = p.k ${moverWhere}ORDER BY ${orderSql} LIMIT ?`;
|
|
281
|
+
let sql = `WITH cur AS (SELECT ${col} AS k, ${metricSelectList(metricList)}${variantSel} FROM ${table} WHERE ${where.sql}${facet.sql} GROUP BY ${col}), prev AS (SELECT ${col} AS k, ${metricSelectList(STD_METRICS)} FROM ${table} WHERE ${cmp.sql}${facet.sql} GROUP BY ${col}) SELECT COALESCE(c.k, p.k) AS ${query.dimension}, ${curCols}, ${prevCols}${variantOut}${totalCol} FROM cur c FULL OUTER JOIN prev p ON c.k = p.k ${moverWhere}ORDER BY ${orderSql}, COALESCE(c.k, p.k) ASC LIMIT ?`;
|
|
281
282
|
const params = [
|
|
282
283
|
...where.params,
|
|
283
284
|
...facet.params,
|
|
@@ -295,7 +296,7 @@ function compileArchetypeSql(query) {
|
|
|
295
296
|
params
|
|
296
297
|
};
|
|
297
298
|
}
|
|
298
|
-
let sql = `SELECT ${col} AS ${query.dimension}, ${metricSelectList(query.metrics)}${variantSel}${totalCol} FROM ${table} WHERE ${where.sql}${facet.sql} GROUP BY ${col} ORDER BY ${
|
|
299
|
+
let sql = `SELECT ${col} AS ${query.dimension}, ${metricSelectList(query.metrics)}${variantSel}${totalCol} FROM ${table} WHERE ${where.sql}${facet.sql} GROUP BY ${col} ORDER BY ${order} LIMIT ?`;
|
|
299
300
|
const params = [
|
|
300
301
|
...where.params,
|
|
301
302
|
...facet.params,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gscdump/engine-duckdb-wasm",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.9.1",
|
|
5
5
|
"description": "DuckDB-WASM engine adapter for @gscdump/analysis — typed browser analytics against parquet via R2.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Harlan Wilton",
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@gscdump/contracts": "^5.
|
|
48
|
-
"@gscdump/engine": "^5.
|
|
47
|
+
"@gscdump/contracts": "^5.9.1",
|
|
48
|
+
"@gscdump/engine": "^5.9.1",
|
|
49
49
|
"drizzle-orm": "1.0.0-rc.4",
|
|
50
|
-
"gscdump": "^5.
|
|
50
|
+
"gscdump": "^5.9.1"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@duckdb/duckdb-wasm": "1.33.1-dev57.0",
|