Моделирование притока данных в теги и поля

TL;DR
Как смоделировать данные в поля по сравнению с тегами, если вы хотите выполнить как по группам, так и по числу

Итак, в настоящее время это моя модель данных Infliff:

api_requests (database)
   - requests_stats (measurement)
        - api_path (tag)
        - app_version (tag)
        - host (tag)
        - platform (tag) 

        - account_id (field)
        - user_id (field)
        - function_name (field)
        - network (field)
        - network_type (field)
        - time_to_execute (field)

Итак, теперь я хочу узнать количество отдельных учетных записей (активных учетных записей). Поэтому я могу выполнить следующий запрос:

SELECT count(distinct("account_id")) AS "active_accounts"
FROM "api_requests"."autogen"."requests_stats"

Это прекрасно работает, так как идентификатор учетной записи является полем.

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

SELECT count("function_name") AS "request_count" 
FROM "api_requests"."autogen"."requests_stats"
GROUP BY "account_id"

Я не могу сделать это, так как группа по рекомендуется для тегов.

Как справиться с этим видом сценария?

Одним из решений является сохранение значения как в поле, так и в значении, но это будет избыточность данных.

Другим и наиболее оптимальным способом было бы использовать count (Different()) для работы с тегами. Это возможно? Это было на самом деле запросом функции в их репозитории github.

Или можно что-то сделать с моделью данных для достижения того же?

1 ответ

Решение

Использование tag за account_id, Вместо подсчета запросов:

SELECT count(distinct("account_id")) AS "active_accounts"
FROM "api_requests"."autogen"."requests_stats"

используйте запрос, который вычислит точное количество значений тега:

SHOW TAG VALUES EXACT CARDINALITY WITH KEY = "account_id"

Это будет работать только для вашего варианта использования, потому что вы не хотите использовать какой-либо дополнительный фильтр (время, тег) в вашем отдельном запросе подсчета.

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