Size: a a a

ClickHouse не тормозит

2021 February 11

T

Tatiana in ClickHouse не тормозит
Yury Trostin
всем привет ! можно ли в КХ сделать вычисляемый столбец на основе значения в другом столбце ? что хочется: у меня есть odbc словарь, я хочу его отобразить в виде таблицы с помощью движка Dictionary. допустим в этом словаре есть ключ id UInt64, и значение value String. я хочу сделать так, чтобы в третьем столбце calculated_value UInt8 было значение if(value='some_value', 1, 0)
Вы можете в словарь добавить еще один атрибут и прописать ему expression.
Expression будет отправляться в запросе на источник
источник

A

Alexey in ClickHouse не тормозит
Как правильнее сделать мат. вьюху для подсчета количества встречаемого Hash (хэш сумма) и списка Path, которые соотвествуют этому хэшу в таблице logs.
Сейчас сделал так:


CREATE MATERIALIZED VIEW
hashes
(
   `Hash` String,
   `Paths` Array(String),
   `Occurrence` Int32,
   `CreatedAt` DateTime,
   `UpdatedAt` DateTime
)
ENGINE = SummingMergeTree(Occurrence)
PARTITION BY toYYYYMM(CreatedAt)
ORDER BY Hash POPULATE AS
SELECT
   PathHash AS Hash,
   groupUniqArray(Path) AS Paths,
   count() AS Occurrence,
   min(EventDate) AS CreatedAt,
   max(EventDate) AS UpdatedAt
FROM logs
GROUP BY Hash



Будут запросы вида

SELECT *
FROM hashes
ORDER BY CreatedAt DESC
LIMIT 10


SELECT *
FROM hashes
ORDER BY Occurrence DESC
LIMIT 10
источник

S

Slach in ClickHouse не тормозит
Рязанский Михаил
Всем привет!
Подскажите плз, как и можно ли вообще сделать аналог SUM(col) Over()
без разворота массивов ( в выборке много столбцов и для нескольких из них придётся разворачивать )
И без джойнов (таблицы жирные)
источник

l

lnuynxa in ClickHouse не тормозит
Простенький Sum уже должен считатся нормально емнип
источник

РМ

Рязанский Михаил... in ClickHouse не тормозит
источник

AN

Andrey Nikulin in ClickHouse не тормозит
Alexey Sokolov
Это для одного параметра, а для нескольких?

В лоб у меня получился вот такой монстр:
select
 id
from
 TestTable
   array join params
where
 (params.name, params.value) in (('param1', 'val1'), ('params2', 'val2'))
group by
 id
having
 count()  > 1


Второй пример я сделал так:
select
 (params.name, params.value) as p
 , groupArray(id)
from
 TestTable
group by
 p
having
 uniq(id) > 0


Но мне оба решения не нравятся, наверняка это можно сделать проще и быстрее.
Первое можно вот так, например
where arrayElement(params.value, indexOf(params.name, 'param1')) = 'val1'
источник

AS

Alexey Sokolov in ClickHouse не тормозит
Andrey Nikulin
Первое можно вот так, например
where arrayElement(params.value, indexOf(params.name, 'param1')) = 'val1'
Спасибо, попробую.

Я ещё вот такой вариант придумал:
where hasAll(arrayZip(param.name, param.value), [('param1', 'val1'), ('param2', 'val2')]) = 1
источник

AE

Asen Erden in ClickHouse не тормозит
Code: 537. DB::Exception: Received from localhost:9000. DB::Exception: Illegal MySQL variables, the MaterializeMySQL engine requires default_authentication_plugin='mysql_native_password'.
источник

AE

Asen Erden in ClickHouse не тормозит
добрый вечер! как можно исправить это ошибку
источник

AE

Asen Erden in ClickHouse не тормозит
?
источник

AE

Asen Erden in ClickHouse не тормозит
можете подсказать
источник

НЧ

Николай Чернов... in ClickHouse не тормозит
А подскажите, пожалуйста, может есть в КХ какая-то функция, что-то типа arrayForEach, в которую можно передать лямбду и массив и что-то там сделать с элементами массива?
источник

S

Slach in ClickHouse не тормозит
Николай Чернов
А подскажите, пожалуйста, может есть в КХ какая-то функция, что-то типа arrayForEach, в которую можно передать лямбду и массив и что-то там сделать с элементами массива?
лямбды есть =) для многих array фукнций
https://clickhouse.tech/docs/en/sql-reference/functions/#higher-order-functions
источник

M

Mishanya in ClickHouse не тормозит
Николай Чернов
А подскажите, пожалуйста, может есть в КХ какая-то функция, что-то типа arrayForEach, в которую можно передать лямбду и массив и что-то там сделать с элементами массива?
источник

НЧ

Николай Чернов... in ClickHouse не тормозит
Да, что-то я не подумал про arrayMap. Спасибо.
источник

SP

Sergey Platonov in ClickHouse не тормозит
почему конструкция FROM table a, table b ест на порядки больше памяти чем в таблицах данных?
источник

SP

Sergey Platonov in ClickHouse не тормозит
по условиям сравнения там всего х3 должно быть
источник

DT

Dmitry Titov in ClickHouse не тормозит
Sergey Platonov
почему конструкция FROM table a, table b ест на порядки больше памяти чем в таблицах данных?
CROSS JOIN же
a*b
источник

DT

Dmitry Titov in ClickHouse не тормозит
А какие конкретно условия?
кх в некоторых случаях не может оптимизировать это в INNER JOIN
источник

РМ

Рязанский Михаил... in ClickHouse не тормозит
Dmitry Titov
CROSS JOIN же
a*b
+
источник