BigQuery: подсчет ненулевых значений во всех столбцах с помощью REGEX

У меня есть следующий запрос, который помогает мне подсчитать, сколько нулевых значений было сообщено в каждом столбце во всех столбцах таблицы в 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 отсутствует, поскольку все его значения равны нулю.

Негативный просмотр вперед не поддерживается в извлечении регулярных выражений в bigquery. Не могли бы вы предоставить образец ввода и вывода для репликации?

Sakshi Gatyan 16.02.2023 15:36

Добавлены примеры @SakshiGatyan.

Tomer Shalhon 16.02.2023 15:39

надеюсь это поможет. stackoverflow.com/questions/72833048/…

Jaytiger 18.02.2023 01:58
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
3
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать это (без 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

выход:

Другие вопросы по теме