Nano Hash - криптовалюты, майнинг, программирование

HIVE: заменить пустые результаты на 0 в группе по операторам

Я новый пользователь Hive, и мне нужно агрегировать сумму сумм для данной таблицы. Рассмотрим упрощенный пример ниже:

SELECT day, sum(amount) FROM tableX WHERE columnA = 'RareValue' GROUP BY day;

Предположим, что возможно, что нет записи строки, которая соответствует условию в предложении WHERE для некоторых дат. И поэтому результат запроса пропустит эти дни.

Например, вот результат, который я получаю:

date       amount
2018-01-15 230
2018-01-13 210
2018-01-12 140
2018-01-11 222

Но это желаемый результат:

date       amount
2018-01-15 230
2018-01-14 0
2018-01-13 210
2018-01-12 140
2018-01-11 222

Я попытался это создать последовательность дат, а затем использовать LEFT JOIN и COALESCE для заполнения пустых дат нулями. Однако исполнение было ужасно медленным. Каков наилучший подход для этого?


Ответы:


1

Предположим, что вы пытаетесь исключить весь день в случае, если ваше условие истинно, вы можете сделать что-то вроде

select 
day,
if(max(mycondition) = 0, sum(amount), 0) as mysum from 
(
select day, amount, 
if(columnA = 'RareValue', 1, 0) as mycondition
FROM tableX 
) t GROUP BY day;

У меня не было возможности проверить :)

07.05.2018

2

Если я правильно вас понял, все необходимые дни представлены в таблице tableX. Итак, я советую сначала выбрать все строки, где столбец A не равен «RareValue», и объединить его с вашим запросом.

SELECT day, 0 FROM tableX WHERE columnA != 'RareValue'
UNION
SELECT day,sum(amount) from tableX WHERE columnA = 'RareValue' GROUP BY day;

если дни из первого выбора повторяются, вы можете добавить «отличный»

07.05.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..