184 похожих чатов

@Den_crane Помогите, пожалуйста. Есть таблица CREATE TABLE data_vault_stage.hubGln ( glnHashKey FixedString(20), loadDate

DateTime,
recordSource String,
glnCode String
) ENGINE = MergeTree() ORDER BY glnHashKey SETTINGS index_granularity = 8192

к ней мат представление

CREATE MATERIALIZED VIEW data_vault_stage.hubGln_mv (
glnHashKey FixedString(20),
lastSeenDate AggregateFunction(max,
DateTime)
) ENGINE = AggregatingMergeTree() ORDER BY glnHashKey SETTINGS index_granularity = 8192
AS
SELECT glnHashKey, maxState(loadDate) AS lastSeenDate FROM data_vault_stage.hubGln GROUP BY glnHashKey

Таблица data_vault_stage.hubGln транкейтится 1 раз в час и в нее вставляются новые данные.

Также есть такая таблица, в которую данные только добавляются через insert-select:

CREATE TABLE data_vault_core.hubGln (
glnHashKey FixedString(20),
loadDate DateTime,
recordSource String,
glnCode String
) ENGINE = MergeTree() ORDER BY glnHashKey SETTINGS index_granularity = 8192

и вот такое представление

CREATE VIEW data_vault_core.hubGln_view (
glnHashKey FixedString(20),
loadDate DateTime,
recordSource String,
lastSeenDate DateTime,
glnCode String) AS SELECT glnHashKey,
loadDate,
recordSource,
lastSeenDate,
glnCode FROM (SELECT glnHashKey,
loadDate,
recordSource,
glnCode FROM data_vault_core.hubGln) ALL LEFT JOIN (SELECT glnHashKey,
maxMerge(lastSeenDate) AS lastSeenDate FROM data_vault_stage.hubGln_mv GROUP BY glnHashKey) USING (glnHashKey)


Есть еще достаточно сложное представление, частью которого является такой подзапрос, а к нему много чего прилоединяется левым соединением:

SELECT glnHashKey,
recordSource,
glnCode FROM data_vault_core.hubGln_view WHERE dateDiff('second',
lastSeenDate,
(SELECT max(lastSeenDate) FROM data_vault_core.hubGln_view)) < (60 * 10)


Собственно, вопрос:
Запрос к сложному представлению исполняется около 10 секунд. В момент исполнения таблица data_vault_stage.hubGln может быть очищена и в нее могут быть вставлены новые данные (происходит это 1 раз в час). В loadDate всегда вставляется now().
Есть примерно <1% случаев, когда этот запрос может не вернуть данных, полагаю, что это связано с dateDiff, так как не полняется условие в where. Но с другой стороны, при исполнении запроса разве не создается снапшота
всех используемых таблиц на определенный момент времени? Нормально ли для КХ, что он так себя ведет и как можно избежать подобной ситуации?

1 ответов

9 просмотров

SELECT glnHashKey, recordSource, glnCode FROM data_vault_core.hubGln_view WHERE dateDiff('second', lastSeenDate, (SELECT max(lastSeenDate) FROM data_vault_core.hubGln_view) с т.з. КХ тут два селект и они видят 2 разных таблицы, т.е. SELECT max(lastSeenDate) выполняется над неочищенной таблицей, SELECT glnHashKey над очищенной

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта