Vertica - проекции для заказа по убыванию - PullRequest
0 голосов
/ 09 января 2020

У нас есть сетевые данные временных рядов, которые мы храним в таблице Vertica. Пользовательский интерфейс должен показывать данные в порядке убывания метки времени. Я попытался передать запрос конструктору базы данных, но он не предлагает какой-либо проекции для убывающего порядка, у него уже есть проекция, которая по метке времени в порядке возрастания. Я также попытался создать проекцию с порядком меток времени по убыванию, но выбрасывает Vertica и выдает ошибку - «Проекции могут быть отсортированы только в порядке возрастания». Поскольку пользовательский интерфейс должен отображать события в порядке убывания временной метки, стоимость запроса SORT очень высока - можем ли мы его каким-либо образом оптимизировать?

Следующий запрос очень медленный (SORT отнимает много времени, даже если я укажите фильтр event_timestamp для учета событий за 1 день) выберите * из публикации c .f_network_events упорядочить по event_timestamp des c limit 1000;

1 Ответ

3 голосов
/ 09 января 2020

Боюсь, вы не можете ORDER BY ts DESCENDING проецировать в Vertica.

Хитрость, которую я использую для этой необходимости, заключается в добавлении столбца:

tssort INTEGER DEFAULT TIMESTAMPDIFF(microsecond,ts,'2100-01-01::TIMESTAMP)

.. чтобы отсортировать проекцию по этому, вычислить это TIMESTAMPDIFF() в запросе и использовать его для условия WHERE.

Не захватывающей дух красоты, согласен, но стоит потраченных усилий в сценарии больших данных ios ...

...