со значением месяцев (1,2,3...) вытаскивать значения через фильтр в redash в текстовом формате типо Январь=1
Словаря такого нет и не предвидится
Есть какой вариант это в запросе прописать?
там есть WITH и можно прописать соответствие
Ща гляну, спасибо
ну а само выражение можно тупо в multiIf запихнуть
это к этому «решению»
сделать каст к enum либо transform
SELECT * FROM ( SELECT * FROM ( SELECT ['Январь', 'Февраль', 'Март', 'Апрель'] AS m_name, arrayEnumerate(m_name) AS m_num ) AS months ARRAY JOIN m_name, m_num ) AS dict_months и можно это как то как subquery для JOIN использовать к основной таблице но лучше всего ТУПО СОЗДАТЬ СЛОВАРЬ, это проще
Во, это похоже на то, что мне нужно. А если у меня массив json объектов типа [{"Name":"name1","dt":20201201,"af":11},{"Name":"name2","dt":20201202,"af":3}] как мне получить select Name, dt, af FROM ( SELECT [...] AS data ) as data2 ARRAY JOIN ??? ) as data3 ???
with (select [январь, февраль, ....] x) as x select x[month_num]
не нужен array Join , просто по номеру элемента из массива доставать
JSONExtract видимо множественный акой нибудь будет
Получилось вот так SELECT A,B,DT FROM ( SELECT * FROM ( SELECT JSONExtract('[{"A":1,"B":"ffff","date":"2020-12-01T00:00"},{"A":2,"B":"fewfrff","date":"2020-12-02T00:00"},{"A":3,"B":"ssfdf","date":"2020-12-03T00:00"}]', 'Array(Tuple(Int8,String))') AS data, arrayMap(x -> (x.1),data) AS A, arrayMap(x -> (x.2),data) AS B, arrayMap(x -> toDateTime64((x.3),3,'UTC'),data) AS DT ) AS data2 ARRAY JOIN A, B, DT ) AS data3
Обсуждают сегодня