текущий момент с вот таким запросом:
Есть таблица в которой лежат URL, мне необходимо вытащить значение параметров строки запроса, при этом нужны не все параметры, а только из определенного списка параметров.
Составил вот такой запрос с использованием array join
select param, extractURLParameter(decodeURLComponent(uri), param) as value from http array join ['email', 'customerEmail'] as param where timestamp >= '2021-07-01 00:00:00' and notEmpty(value) = 1;
но CH ругается, на то что параметр в extractURLParameter должен быть статичным. Можно ли как-то по другому данный запрос составить?
Вам надо получить 2 явных параметра, почему бы просто не написать функцию дважды?
Если вдруг, кому-то интересно, то вот такой запрос решает мою проблему select param, decodeURLComponent(replaceRegexpOne(arrayElement(arr, 1), '("[^"]+"|\\w+)=("[^"]+"|\\w+)', '\\2')) from ( select param, arrayFilter(x -> startsWith(x, concat(param, '=')), parameters) as arr from (select param, extractURLParameters(uri) as parameters from http array join ['email', 'customerEmail'] as param where position(queryString(uri), param) <> 0 and timestamp >= '2021-07-01 00:00:00' limit 1000) as t where notEmpty(arr) group by param, arr);
Обсуждают сегодня