Выполните извлечение в Таблице для различного подсчета, используя HLL - PullRequest
0 голосов
/ 26 октября 2018

У меня есть несколько огромная таблица (130 миллионов строк), которую я могу создать на том же сервере менее чем за 10 минут и создать уменьшенную, предварительно агрегированную таблицу, которая прекрасно работает, и все довольны использовать его.

Таблица сгруппирована примерно в 6 столбцов, а остальные агрегированы с SUM() или различными COUNT(DISTINCT myColumn), которые оптимизированы с помощью HLL .

hll_union_agg(hll_add(hll_empty(15, 4), hll_hash_bigint(my_column)))

Люди, которые используют эту небольшую результирующую таблицу, могут сгруппировать по 1 или 2 исходным столбцам, чтобы получить еще более широкую сводку. Только на последнем шаге фактический счет производится с

hll_cardinality(hll_union_agg(my_intermediary_hll_set))

Результаты выдаются в миллисекундах.

Проблема заключается в том, чтобы переместить это в Таблицу как отрывок в Hyper, потому что люди хотят использовать его там. Tableau не знает о HLL, и она хочет сделать сам подсчет. Однако загрузка всех этих необработанных данных происходит очень медленно (например, 5 часов).

Я готов пойти на компромисс в скорости, но не от 10 минут до 5 часов. Есть ли способ передать набор, который в настоящее время представлен как HLL, как целый столбец? Как массив или JSON или что-то?

Я нашел подобный вопрос здесь, но это больше о Кассандре, чем о выдержках из Таблицы.

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

Подводя итог:
Как передать предварительно агрегированные строки в Tableau, и при этом иметь возможность производить правильные вычисления COUNT(DISTINCT x) на стороне Tableau?

1 Ответ

0 голосов
/ 29 октября 2018

Мне удалось решить эту проблему, используя сквозные функции SQL в Таблице.После добавления источника данных (только LIVE), который содержит столбцы HLL, и создания настраиваемого вычисляемого столбца с помощью выражения, подобного следующему:

rawsqlagg_int("hll_cardinality(hll_union_agg(%1))", [Set of entities])

, я получил нужный мне результат.Удивительно и быстро.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...