@gscdump/analysis 0.26.7 → 0.26.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analyzer/index.mjs +29 -8
- package/dist/default-registry.mjs +29 -8
- package/dist/index.mjs +29 -8
- package/package.json +4 -4
package/dist/analyzer/index.mjs
CHANGED
|
@@ -2675,15 +2675,36 @@ const deviceGapAnalyzer = defineAnalyzer({
|
|
|
2675
2675
|
const { startDate, endDate } = periodOf(params);
|
|
2676
2676
|
return {
|
|
2677
2677
|
sql: `
|
|
2678
|
+
WITH raw AS (
|
|
2679
|
+
SELECT
|
|
2680
|
+
date,
|
|
2681
|
+
COALESCE(clicks_desktop, 0) AS c_desktop,
|
|
2682
|
+
COALESCE(clicks_mobile, 0) AS c_mobile,
|
|
2683
|
+
COALESCE(clicks_tablet, 0) AS c_tablet,
|
|
2684
|
+
COALESCE(impressions_desktop, 0) AS i_desktop,
|
|
2685
|
+
COALESCE(impressions_mobile, 0) AS i_mobile,
|
|
2686
|
+
COALESCE(impressions_tablet, 0) AS i_tablet,
|
|
2687
|
+
COALESCE(sum_position_desktop, 0) AS p_desktop,
|
|
2688
|
+
COALESCE(sum_position_mobile, 0) AS p_mobile,
|
|
2689
|
+
COALESCE(sum_position_tablet, 0) AS p_tablet
|
|
2690
|
+
FROM read_parquet({{FILES}}, union_by_name = true)
|
|
2691
|
+
WHERE date >= ? AND date <= ?
|
|
2692
|
+
),
|
|
2693
|
+
device_long AS (
|
|
2694
|
+
SELECT date, 'DESKTOP' AS device, c_desktop AS clicks, i_desktop AS impressions, p_desktop AS sum_position FROM raw
|
|
2695
|
+
UNION ALL
|
|
2696
|
+
SELECT date, 'MOBILE', c_mobile, i_mobile, p_mobile FROM raw
|
|
2697
|
+
UNION ALL
|
|
2698
|
+
SELECT date, 'TABLET', c_tablet, i_tablet, p_tablet FROM raw
|
|
2699
|
+
)
|
|
2678
2700
|
SELECT
|
|
2679
2701
|
date,
|
|
2680
2702
|
device,
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
FROM
|
|
2686
|
-
WHERE date >= ? AND date <= ?
|
|
2703
|
+
CAST(SUM(clicks) AS DOUBLE) AS clicks,
|
|
2704
|
+
CAST(SUM(impressions) AS DOUBLE) AS impressions,
|
|
2705
|
+
CAST(SUM(clicks) AS DOUBLE) / NULLIF(SUM(impressions), 0) AS ctr,
|
|
2706
|
+
SUM(sum_position) / NULLIF(SUM(impressions), 0) + 1 AS position
|
|
2707
|
+
FROM device_long
|
|
2687
2708
|
GROUP BY date, device
|
|
2688
2709
|
ORDER BY date ASC
|
|
2689
2710
|
`,
|
|
@@ -3112,7 +3133,7 @@ const longTailAnalyzer = defineAnalyzer({
|
|
|
3112
3133
|
const limit = params.limit ?? 100;
|
|
3113
3134
|
return {
|
|
3114
3135
|
sql: `
|
|
3115
|
-
WITH
|
|
3136
|
+
WITH pq AS (
|
|
3116
3137
|
SELECT
|
|
3117
3138
|
url AS page,
|
|
3118
3139
|
query,
|
|
@@ -3129,7 +3150,7 @@ const longTailAnalyzer = defineAnalyzer({
|
|
|
3129
3150
|
SELECT
|
|
3130
3151
|
page, query, impressions, clicks,
|
|
3131
3152
|
ROW_NUMBER() OVER (PARTITION BY page ORDER BY impressions DESC, query ASC) AS rnk
|
|
3132
|
-
FROM
|
|
3153
|
+
FROM pq
|
|
3133
3154
|
),
|
|
3134
3155
|
log_space AS (
|
|
3135
3156
|
SELECT *,
|
|
@@ -2669,15 +2669,36 @@ const deviceGapAnalyzer = defineAnalyzer({
|
|
|
2669
2669
|
const { startDate, endDate } = periodOf(params);
|
|
2670
2670
|
return {
|
|
2671
2671
|
sql: `
|
|
2672
|
+
WITH raw AS (
|
|
2673
|
+
SELECT
|
|
2674
|
+
date,
|
|
2675
|
+
COALESCE(clicks_desktop, 0) AS c_desktop,
|
|
2676
|
+
COALESCE(clicks_mobile, 0) AS c_mobile,
|
|
2677
|
+
COALESCE(clicks_tablet, 0) AS c_tablet,
|
|
2678
|
+
COALESCE(impressions_desktop, 0) AS i_desktop,
|
|
2679
|
+
COALESCE(impressions_mobile, 0) AS i_mobile,
|
|
2680
|
+
COALESCE(impressions_tablet, 0) AS i_tablet,
|
|
2681
|
+
COALESCE(sum_position_desktop, 0) AS p_desktop,
|
|
2682
|
+
COALESCE(sum_position_mobile, 0) AS p_mobile,
|
|
2683
|
+
COALESCE(sum_position_tablet, 0) AS p_tablet
|
|
2684
|
+
FROM read_parquet({{FILES}}, union_by_name = true)
|
|
2685
|
+
WHERE date >= ? AND date <= ?
|
|
2686
|
+
),
|
|
2687
|
+
device_long AS (
|
|
2688
|
+
SELECT date, 'DESKTOP' AS device, c_desktop AS clicks, i_desktop AS impressions, p_desktop AS sum_position FROM raw
|
|
2689
|
+
UNION ALL
|
|
2690
|
+
SELECT date, 'MOBILE', c_mobile, i_mobile, p_mobile FROM raw
|
|
2691
|
+
UNION ALL
|
|
2692
|
+
SELECT date, 'TABLET', c_tablet, i_tablet, p_tablet FROM raw
|
|
2693
|
+
)
|
|
2672
2694
|
SELECT
|
|
2673
2695
|
date,
|
|
2674
2696
|
device,
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
FROM
|
|
2680
|
-
WHERE date >= ? AND date <= ?
|
|
2697
|
+
CAST(SUM(clicks) AS DOUBLE) AS clicks,
|
|
2698
|
+
CAST(SUM(impressions) AS DOUBLE) AS impressions,
|
|
2699
|
+
CAST(SUM(clicks) AS DOUBLE) / NULLIF(SUM(impressions), 0) AS ctr,
|
|
2700
|
+
SUM(sum_position) / NULLIF(SUM(impressions), 0) + 1 AS position
|
|
2701
|
+
FROM device_long
|
|
2681
2702
|
GROUP BY date, device
|
|
2682
2703
|
ORDER BY date ASC
|
|
2683
2704
|
`,
|
|
@@ -3106,7 +3127,7 @@ const longTailAnalyzer = defineAnalyzer({
|
|
|
3106
3127
|
const limit = params.limit ?? 100;
|
|
3107
3128
|
return {
|
|
3108
3129
|
sql: `
|
|
3109
|
-
WITH
|
|
3130
|
+
WITH pq AS (
|
|
3110
3131
|
SELECT
|
|
3111
3132
|
url AS page,
|
|
3112
3133
|
query,
|
|
@@ -3123,7 +3144,7 @@ const longTailAnalyzer = defineAnalyzer({
|
|
|
3123
3144
|
SELECT
|
|
3124
3145
|
page, query, impressions, clicks,
|
|
3125
3146
|
ROW_NUMBER() OVER (PARTITION BY page ORDER BY impressions DESC, query ASC) AS rnk
|
|
3126
|
-
FROM
|
|
3147
|
+
FROM pq
|
|
3127
3148
|
),
|
|
3128
3149
|
log_space AS (
|
|
3129
3150
|
SELECT *,
|
package/dist/index.mjs
CHANGED
|
@@ -3049,15 +3049,36 @@ const deviceGapAnalyzer = defineAnalyzer$1({
|
|
|
3049
3049
|
const { startDate, endDate } = periodOf$1(params);
|
|
3050
3050
|
return {
|
|
3051
3051
|
sql: `
|
|
3052
|
+
WITH raw AS (
|
|
3053
|
+
SELECT
|
|
3054
|
+
date,
|
|
3055
|
+
COALESCE(clicks_desktop, 0) AS c_desktop,
|
|
3056
|
+
COALESCE(clicks_mobile, 0) AS c_mobile,
|
|
3057
|
+
COALESCE(clicks_tablet, 0) AS c_tablet,
|
|
3058
|
+
COALESCE(impressions_desktop, 0) AS i_desktop,
|
|
3059
|
+
COALESCE(impressions_mobile, 0) AS i_mobile,
|
|
3060
|
+
COALESCE(impressions_tablet, 0) AS i_tablet,
|
|
3061
|
+
COALESCE(sum_position_desktop, 0) AS p_desktop,
|
|
3062
|
+
COALESCE(sum_position_mobile, 0) AS p_mobile,
|
|
3063
|
+
COALESCE(sum_position_tablet, 0) AS p_tablet
|
|
3064
|
+
FROM read_parquet({{FILES}}, union_by_name = true)
|
|
3065
|
+
WHERE date >= ? AND date <= ?
|
|
3066
|
+
),
|
|
3067
|
+
device_long AS (
|
|
3068
|
+
SELECT date, 'DESKTOP' AS device, c_desktop AS clicks, i_desktop AS impressions, p_desktop AS sum_position FROM raw
|
|
3069
|
+
UNION ALL
|
|
3070
|
+
SELECT date, 'MOBILE', c_mobile, i_mobile, p_mobile FROM raw
|
|
3071
|
+
UNION ALL
|
|
3072
|
+
SELECT date, 'TABLET', c_tablet, i_tablet, p_tablet FROM raw
|
|
3073
|
+
)
|
|
3052
3074
|
SELECT
|
|
3053
3075
|
date,
|
|
3054
3076
|
device,
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
FROM
|
|
3060
|
-
WHERE date >= ? AND date <= ?
|
|
3077
|
+
CAST(SUM(clicks) AS DOUBLE) AS clicks,
|
|
3078
|
+
CAST(SUM(impressions) AS DOUBLE) AS impressions,
|
|
3079
|
+
CAST(SUM(clicks) AS DOUBLE) / NULLIF(SUM(impressions), 0) AS ctr,
|
|
3080
|
+
SUM(sum_position) / NULLIF(SUM(impressions), 0) + 1 AS position
|
|
3081
|
+
FROM device_long
|
|
3061
3082
|
GROUP BY date, device
|
|
3062
3083
|
ORDER BY date ASC
|
|
3063
3084
|
`,
|
|
@@ -3486,7 +3507,7 @@ const longTailAnalyzer = defineAnalyzer$1({
|
|
|
3486
3507
|
const limit = params.limit ?? 100;
|
|
3487
3508
|
return {
|
|
3488
3509
|
sql: `
|
|
3489
|
-
WITH
|
|
3510
|
+
WITH pq AS (
|
|
3490
3511
|
SELECT
|
|
3491
3512
|
url AS page,
|
|
3492
3513
|
query,
|
|
@@ -3503,7 +3524,7 @@ const longTailAnalyzer = defineAnalyzer$1({
|
|
|
3503
3524
|
SELECT
|
|
3504
3525
|
page, query, impressions, clicks,
|
|
3505
3526
|
ROW_NUMBER() OVER (PARTITION BY page ORDER BY impressions DESC, query ASC) AS rnk
|
|
3506
|
-
FROM
|
|
3527
|
+
FROM pq
|
|
3507
3528
|
),
|
|
3508
3529
|
log_space AS (
|
|
3509
3530
|
SELECT *,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gscdump/analysis",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.26.
|
|
4
|
+
"version": "0.26.9",
|
|
5
5
|
"description": "GSC analyzers — striking-distance, opportunity, movers, decay, brand, clustering, concentration, seasonality. Pure row-based + DuckDB-native.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Harlan Wilton",
|
|
@@ -75,9 +75,9 @@
|
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
77
|
"drizzle-orm": "1.0.0-rc.3",
|
|
78
|
-
"@gscdump/engine": "0.26.
|
|
79
|
-
"@gscdump/engine-gsc-api": "0.26.
|
|
80
|
-
"gscdump": "0.26.
|
|
78
|
+
"@gscdump/engine": "0.26.9",
|
|
79
|
+
"@gscdump/engine-gsc-api": "0.26.9",
|
|
80
|
+
"gscdump": "0.26.9"
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
83
|
"vitest": "^4.1.8"
|