витрины данных на КХ оптимальным?
Имеется 3 шарда, на них созданы локальные таблицы:
CREATE TABLE datamart.trafficEdiEds (
billingRecID UUID,
...
shard UInt64
) ENGINE = MergeTree
PARTITION BY toDate(documentReceptionDate)
ORDER BY (documentReceptionDate, senderAccountID)
Есть DISTRIBUTED таблица, которая смотрит на них:
CREATE TABLE datamart.trafficEdiEds_distributed (
billingRecID UUID,
...
shard UInt64
) ENGINE = Distributed(click_3s, datamart, trafficEdiEds, shard - 1)
Над DISTRIBUTED таблицей имеется VIEW только на первом шарде:
CREATE VIEW datamart.trafficEdiEdsView AS
SELECT billingRecID,
dictGetUInt64('gln',
'glnevoid',
senderGlnID) AS senderGlnEvoID,
dictGetString('gln',
'glnname',
senderGlnID) AS senderGlnName,
...
shard
FROM datamart.trafficEdiEds_distributed
В общем, в финальной вьюшке используются 3 разных словаря, из которых тянется по 5-10 полей через dictGet*.
На эту вьюшку смотрит Tableau. Пользователи строят по ней отчеты. Группируют и фильтруют по полям, которые тянутся из словарей.
А вопрос такой: является ли такая конструкция оптимальной с точки зрения утилизации сети? И как будет исполняться запрос,
в котором группировка идет по полю, полученному из словаря, а сумма считается по полю из таблицы?
Идея: сделать так, чтобы не было лишней утилизации сети. Словари можем и на всех шардах разместить (пока только на первом),
если это нужно для оптимального исполнения запросов.
а у вас такой запрос с вью и без вью работает без ошибки разве? Не верю. В таком виде как у вас к словарям уже на шардах будет обращение и частичный расчет сумм уже на шардах
Обсуждают сегодня