Обсуждаем ClickHouse
Спасибо. А если без pandas, то как лучше попробовать?
Читать полностью…Пытался без pandas, не зашло, решил поработать с типами данных.
Вот мой код до pandas:
reader = csv.reader(StringIO(data), delimiter='\t')Читать полностью…
header = [col.replace('ym:s:', '') for col in next(reader)] # Упрощённый маппинг
rows = list(reader)
batch_size = 10000
for i in range(0, len(rows), batch_size):
batch = []
for row in rows[i:i+batch_size]:
row_dict = dict(zip(header, row))
row_dict = convert_dates(row_dict)
batch.append(row_dict)
try:
client.insert('yaMetLogs', batch)
print(f"Вставлено {min(i+batch_size, len(rows))}/{len(rows)} строк")
except Exception as e:
print(f"Ошибка при вставке: {str(e)}")
print("Проблемная строка:", batch[0] if batch else "нет данных")
я не про это, я про то что с помощью Null таблицу -> MV -> *mergetree вы можете делать любые трансформации при вставке
https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf
https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597
Я поискал в интернете и не нашел чтобы где-то говорилось про то, что вставка в связку null engine -> MV -> ReplicatedMergeTree
обеспечивает exactly once.
Если допустить, что у меня всегда вставка в одну партицию, есть поблочная дедупликация в целевой mergetree и deduplicate_blocks_in_dependent_materialized_views=1
, то можно ли с уверенностью сказать что данные не потеряются и дубликатов не будет?
Что такое до запятой? Запятая это decimal separator?
Читать полностью…$ cat /etc/clickhouse-server/users.d/allow_deprecated_error_prone_window_functions.xml
<?xml version="1.0" ?>
<clickhouse>
<profiles>
<default>
<allow_deprecated_error_prone_window_functions>1</allow_deprecated_error_prone_window_functions>
</default>
</profiles>
</clickhouse>
всем привет
кто может подсказать, как изменить настройку внутри таблицы system.settings?
хочу изменить параметр allow_deprecated_error_prone_window_functions
да, все верно. ответ искался про первую в результате, так что в этом ответе все ок)
Читать полностью…вот что написал gpt
WITH t AS (
SELECT 1 AS x
UNION ALL
SELECT 2
UNION ALL
SELECT 3
),
t2 AS (
SELECT x::int, ROW_NUMBER() OVER (ORDER BY x) AS rn FROM t
),
t3 AS (
SELECT CASE WHEN rn = 1 THEN NULL ELSE x END AS x, rn FROM t2
)
SELECT
x,
AVG(x) OVER (ORDER BY rn ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS m
FROM t3
ORDER BY rn;
у вас ROWS BETWEEN 1 PRECEDING AND CURRENT ROW
это ДВЕ строки
для кх gpt сказала, что все ок - Use avg(...) or other functions directly, not wrapped )
Читать полностью…обычные реквесты
и в метрику и в клик
Читать полностью…
url_params = urlencode(
[
('date1', user_request.start_date_str),
('date2', user_request.end_date_str),
('source', user_request.source),
('fields', ','.join(user_request.fields))
]
)
headers = {'Authorization': 'OAuth ' + user_request.token}
url = '{host}/management/v1/counter/{counter_id}/logrequests/evaluate?'\
.format(host=HOST, counter_id=user_request.counter_id) + url_params
r = requests.get(url, headers=headers)
все отлично работает без пандас
у Метрики был скрипт на обычных реквестах, но потом им стало лень его поддерживать и прикрыли
у меня до сих пор работает
но если хочется пандас, то вот примитивный пример
https://github.com/handgunman/primitive-scripts/blob/main/logs_download_simple.py
Добрый вечер. Подскажите, пожалуйста, какой наилучший алгоритм для загрузки с помощью python скрипта логов визитов из API Метрики в таблицу ClickHouse.
Я получаю данные
response_result = requests.get(api_url_result, headers=headers)
tsv_data = StringIO(response_result.text)
df = pd.read_csv(tsv_data, sep='\t')
thousand separator не поддерживается, и в c++ printf тоже емнип не умеет
Читать полностью…До запятой, разделить разрядов, например 55 555 555.55 через пробел, что-то все варианты перебрал, ошибка. SELECT printf('%.01f',55555555.55). Что нужно указать до точки в функции...
Читать полностью…Это к сожалению работает только для знака после запятой( все варианты как разряды перебрал(
Читать полностью…я решил так
Читать полностью…
row_number(x) OVER (ORDER BY x ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS rn,
if(rn=1,null,m) as result
всем привет! подскажите кто как мониторит состояние keeper'ов? как понять, что кластер операбелен, кворум собран и пр? собирать вывод 4lw или есть нормальные инструменты? как проверить состояние синхронизации метадаты?
Читать полностью…If x is Nullable, the result will have NULL in the first row (or wherever there’s insufficient data).
Читать полностью…в SQL есть функция avg
если в нее попадает два значения Null и 1 то avg=1
postgresql => select avg(x) from (select 1 x union all select null) t;
1.00000000000000000000
можно у gpt спросить про pg
SELECT printf('%s %s %.02f', 'Hello', 'World', 2024.123456);
https://github.com/ClickHouse/ClickHouse/issues/34142