processed_search_type_distribution¶
SQL type: SimpleAggregateFunction(anyLast, Nullable(String)) — JSON {web, image, news, video}
Table: keywords.keywords_data_local
Last validated: 2026-05-21
What it is¶
The fractional split of GSC impressions across Google's four major search-vertical types: web, image, news, video. JSON dict, values sum to 1.0 (normalised after computation).
How it's computed¶
compute_distributions() in processing.py:L838 (single function, returns both this and the device distribution). The latest month with ≥ 1000 total impressions is used; falls back to a 12-month aggregate if no single month qualifies.
Computed only when the keyword has enough impression volume in the chosen window — see threshold below.
Gate¶
processing.py:KB-ANCHOR:device-distribution-threshold: total_web >= 1000. The same threshold gates BOTH this field and processed_device_distribution — they share the function. Below 1000 impressions, both distributions are returned as empty {} to avoid showing noisy splits on low-volume keywords.
Edge cases¶
- Single-month gating — uses the most recent month with
total_imps >= 1000. For keywords whose volume just crossed that threshold this month, the distribution updates abruptly. - No qualifying month — falls back to a 12-month aggregate of impressions; if still below 1000, returns empty.
- All-web keywords — common for product / how-to queries; returns
{"web": 1.0, "image": 0, …}.
Downstream¶
- Customer UI renders this as a small pie chart or stacked bar.
- ES +
keywords_metrics_localupload paths.
See also¶
- GSC source — the only input; the per-search-type impression columns
processed_device_distribution— sibling, same function- Central hub table
- processing.py —
compute_distributions()