processed_device_distribution¶
SQL type: SimpleAggregateFunction(anyLast, Nullable(String)) — JSON {desktop, mobile, tablet}
Table: keywords.keywords_data_local
Last validated: 2026-05-21
What it is¶
The fractional split of web-search impressions across desktop / mobile / tablet devices. JSON dict, values sum to 1.0 (normalised). Image / news / video impressions are excluded — this is web-only by design.
How it's computed¶
Same function as processed_search_type_distribution: compute_distributions() in processing.py:L838. Uses the same latest-month-with-enough-volume strategy.
Gate¶
processing.py:KB-ANCHOR:device-distribution-threshold: total_web >= 1000. Total web impressions (the sum of desktop + mobile + tablet) must hit 1000 for either distribution to be emitted — the gate is on the web subset specifically, not on total impressions across all search types. A keyword that's dominated by image-search traffic might have plenty of total impressions but still fail this gate.
Edge cases¶
- Mobile-heavy keywords (most consumer queries) — typically
{"mobile": ≥0.6, "desktop": <0.3, "tablet": <0.05}. - Desktop-heavy keywords (B2B, developer queries) — flip side.
- Tablet share is usually a rounding-error trickle (1–4%). Not enough volume to be meaningful for most use cases.
- Image / news / video-dominant keywords — if web traffic is below 1000, this field is empty even though the keyword has plenty of other-type impressions.
Downstream¶
- Customer UI renders this as a small pie chart or stacked bar alongside
processed_search_type_distribution. - ES +
keywords_metrics_localupload paths.
See also¶
- GSC source — the only input
processed_search_type_distribution— sibling, same function + same gate- Central hub table
- processing.py —
compute_distributions()