Как подсчитать все строки в файле необработанных данных с помощью Hive?

Я читаю необработанный ввод, который выглядит примерно так:

20   abc   def
21   ghi   jkl
     mno   pqr
23   stu 

Обратите внимание, что первые две строки являются «хорошими», а последние две строки — «плохими», поскольку в них отсутствуют некоторые данные.

Вот фрагмент моего запроса улья, который считывает эти необработанные данные во внешнюю таблицу только для чтения:

DROP TABLE IF EXISTS readonly_s3;
CREATE EXTERNAL TABLE readonly_s3 (id string, name string, data string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'

Мне нужно получить количество ВСЕХ строк, как «хороших», так и «плохих». Проблема в том, что некоторые данные отсутствуют, и если я, например, сделаю SELECT count(id) as total_rows, это не сработает, поскольку не во всех строках есть id.

Любые предложения о том, как я могу подсчитать ВСЕ строки в этом файле необработанных данных?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
218
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Хм . . . Вы можете использовать:

select sum(case when col1 is not null and col2 is not null and col3 is not null then 1 else 0 end) as num_good,
       sum(case when col1 is null or col2 is null or col3 is null then 1 else 0 end) as num_bad
from readonly_s3;

Спасибо, что получает хорошие и плохие строки отдельно. Что, если мне нужно объединить плохие и хорошие строки? Я просто SUMnum_good и num_bad?

smolkitty 15.12.2020 03:33

@smolkitty . . . Просто используйте count(*) для общего количества строк.

Gordon Linoff 15.12.2020 03:35

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