У меня есть следующий запрос, который помогает мне подсчитать, сколько нулевых значений было сообщено в каждом столбце во всех столбцах таблицы в BQ:
SELECT col_name, COUNT(1) nulls_count
FROM table t,
UNNEST(REGEXP_EXTRACT_ALL(TO_JSON_STRING(t), r'"(\w+)":null')) col_name
GROUP BY col_name
;
Мне нужно настроить его так, чтобы он считал ненулевые значения. Я пытался использовать отрицательный прогноз, но, похоже, это не сработало. Моя конечная цель - указать, сообщает ли определенный столбец хотя бы 1 ненулевое значение.
Пример ввода (таблица):
Пример вывода:
column_c отсутствует, поскольку все его значения равны нулю.
Добавлены примеры @SakshiGatyan.
надеюсь это поможет. stackoverflow.com/questions/72833048/…
Вы можете попробовать это (без REGEX) решение
select * from (select column, countif (val!= 'null') non_null
from `dataset.table` table1
,unnest(array(
select as struct trim(ar[offset(0)], '"') column, trim(ar[offset(1)], '"') val
from unnest(split(trim(to_json_string(table1), '{}'))) pb,
unnest([struct(split(pb, ':') as ar)])
)) record
group by column) where non_null!=0
выход:
Негативный просмотр вперед не поддерживается в извлечении регулярных выражений в bigquery. Не могли бы вы предоставить образец ввода и вывода для репликации?