Ниже для BigQuery Standard SQL
#standardSQL
SELECT
TRIM(SPLIT(kv, ':')[OFFSET(0)], '"') tag,
SPLIT(kv, ':')[SAFE_OFFSET(1)] cnt
FROM `project.dataset.table` t,
UNNEST(REGEXP_EXTRACT_ALL(TRIM(TO_JSON_STRING(t), '{}'), r'(.*?)(?:,|$)')) kv
Вы можете протестировать, поиграть с выше, используя примеры данных из вашего вопроса, как в примере ниже
#standardSQL
WITH `project.dataset.table` AS (
SELECT 8279 all_close, 4 all_open, 1504 only_o, 16785 only_f
)
SELECT
TRIM(SPLIT(kv, ':')[OFFSET(0)], '"') tag,
SPLIT(kv, ':')[SAFE_OFFSET(1)] cnt
FROM `project.dataset.table` t,
UNNEST(REGEXP_EXTRACT_ALL(TRIM(TO_JSON_STRING(t), '{}'), r'(.*?)(?:,|$)')) kv
с результатом
Row tag cnt
1 all_close 8279
2 all_open 4
3 only_o 1504
4 only_f 16785