@clickhouse_ru

Страница 194 из 723
Александр
05.07.2017
18:49:07
Спасибо!

Только еще hostname в ответе интересный clickhouse%2Ds0r0:9000 )

Vitaliy
05.07.2017
19:25:47
Только еще hostname в ответе интересный clickhouse%2Ds0r0:9000 )
Ага, про unescape забыли. Еще надо будет добавить системную таблицу system.ddl_queue по аналогии с system.replication_queue, тогда можно будет асинхронно мониторить статус всех DDL-задач.

Александр
05.07.2017
19:26:33
Супер! Очень полезная штука! Прям вот избавили от своего костыля для ddl

Google
ag0n1k
05.07.2017
19:54:39
Друзья, а подскажите пожалуйства про монтирование дисков. хештеги для поиска, а то что-то не нашел, в документациях нашел только про "не использовать lvm" #mount #disk #prod

Roman
05.07.2017
20:56:58
Подскажите, time - секунды в первичном ключ, это нормально?

Александр
05.07.2017
20:57:19
Если время с секундами, то не очень

Roman
05.07.2017
20:57:27
unixtime

Александр
05.07.2017
20:57:29
А если просто секунды в диапазоне от 0-60, то норм

А, не ) толку от такого ключа не будет

Я уже пробовал такой вариант, только DateTime

Alexey
05.07.2017
21:01:40
Вообще нормально и как раз используется, если нужно выбирать данные по диапазону времени - для логов. Для примера, так сделано в query_log в ClickHouse.

Александр
05.07.2017
21:18:44
Вообще нормально и как раз используется, если нужно выбирать данные по диапазону времени - для логов. Для примера, так сделано в query_log в ClickHouse.
Что-то как то на ярд строк у меня была замечена деградация при вставке данных ( Наверное быстро писал

Надо будет попробовать писать не так часто

Kirill
06.07.2017
03:49:57
По DateTime индекс работает отлично, но, раз про него заговорили то, вспомнилось: у нас есть таблица вида CREATE TABLE metrics ( EventDate Date default toDate(EventTime), EventTime DateTime, ApplicationID UInt32, SpotID UInt32, Country FixedString(2), DeviceID UInt8, OsID UInt8, BrowserID UInt8, Clicks UInt64, Impressions UInt64 ) ENGINE = SummingMergeTree( EventDate, ( EventTime, ApplicationID, SpotID, Country, OsID, BrowserID, DeviceID ), 8192, ( Clicks, Impressions ) ); мы из неё читаем в Grafana и строим графики, работает оно шустро, но если делать выборки с указанием EventTime и ApplicationID, то сканируется столько же строк как и если просто указывать EventTime

[Anonymous]
06.07.2017
04:56:25
@FolderArchive - канал, где сливают платный полезный - образовательный контент и курсы, например можно скачать курсы "Нетологии" или все курсы "Бизнес Молодости".

Google
Alexandr
06.07.2017
06:00:46
Кто-нибудь автоматизировал добавление новой годы в кластер? С созданием таблицы и регистрацией в zk?

Mike
06.07.2017
07:04:18
А подскажите, что хотелось бы в tabix, и чего не хватает? Интересно, т.к рисую роадмап себе на будущее
Вспомнил момент: хорошо бы можно было выполнить запрос под курсором, если у тебя несколько запросов в редакторе один под другим. Сейчас приходится выделять, а тот же DataGrip понимает и предлагает, какой выполнить.



Mike
06.07.2017
07:33:15
Ой вей, а это где-то описано? Может быть есть еще что-то, чего я не знаю? :)

Igor
06.07.2017
07:35:50
Беда с докой у меня, все руки не дойдут описать все штуки tabix'a(((

Slach
06.07.2017
07:45:39
А подскажите, что хотелось бы в tabix, и чего не хватает? Интересно, т.к рисую роадмап себе на будущее
Очень не хватает dashboard и виджетов "фильтрации" а-ля superset ну и на закуску отсылку на email

Roman
06.07.2017
07:59:22
А вот откуда у вас на винде ctrl+<left|right> переключает вкладки :) вы на Маке сидите Подумайте о виндовых юзерах)

Igor
06.07.2017
08:18:35
Никита
06.07.2017
08:19:28


Всем привет. Есть вопрос. Вчера столкнулся с проблемой подсчёта косинуса. В чёрном - результат запроса SELECT cos(0.95880226199657), ниже - виндовый калькулятор.

Почему результаты могут так сильно отличаться?

Ефим
06.07.2017
08:20:22
Градусы и радианы?

Никита
06.07.2017
08:20:35
В обоих случаях радианы

Если я ничего не попутал, конечно

Vladislav
06.07.2017
08:22:48
в винде градусы, судя по результату

Никита
06.07.2017
08:24:33
Да, по всей видимости я накосячил( Спасибо)

Aleksandr
06.07.2017
08:29:30
почему page_view меняется, дописываете клики? почему время float, почему user_id string? есть ли CH таблица с сессиями, с юзерами? какая топология кластера, какие впечатления у админов? какое отставание от реалтайма?
>> почему page_view меняется, дописываете клики? Да, клики по блокам, клики по внешним ссылкам, e-commerce, custom variables, время просмотра страницы и т.д. >> почему время float, почему user_id string? Время float делали на момент проектирования, для более точной сортировки, но в данный момент это ничем не помогает - возможно откажемся от этого. user_id - string потому что это структура данных, из которой можно достать некоторые параметры. По хорошему надо доставать эти параметры и записывать отдельно. Тоже будем допиливать. >> есть ли CH таблица с сессиями, с юзерами? Для статьи я намеренно упростил таблицу. У нас одна большая таблица, под 100 колонок. Плюс несколько справочников, например для geo. Отдельной таблицы сессий нет, сессия представлена айдишником. Количество сессий считается как uniqCombined(session_id). >> какая топология кластера, какие впечатления у админов? Вопрос про топологию поясните, пожалуйста. И какой кластер имеется в виду: CH, spark, kafka? >> какое отставание от реалтайма? Зависит от нагрузки. Мы сейчас переехали на новый кластер и из-за этого в пиках бывает до полутора часов. Это очень долго, оптимизируем и добавляем тачки. Тормозим не об кх.

Оля
06.07.2017
08:29:52
А подскажите, что хотелось бы в tabix, и чего не хватает? Интересно, т.к рисую роадмап себе на будущее
Нам часто бывают нужны большие выгрузки (~500тыс записей). Сейчас выгружаем их в файл питоновым скриптом. Было бы круто, если бы из табикса можно было сохранить такую выгрузку сразу в файл без отрисовки

Google
Bulat
06.07.2017
08:37:56
была replicated таблица, сделал drop table, потом заново create table с тем же именем в итоге в новой таблице оказались данные из старой таблицы :(

Valeriy
06.07.2017
08:38:18
Так это ж хорошо :)

Bulat
06.07.2017
08:38:30
для меня нет

Valeriy
06.07.2017
08:39:46
Вроде в этом же смысл. Надо было replicated с другом ключом в zk тогда создавать.

Bulat
06.07.2017
08:41:31
мне надо было пересоздать таблицу с другой схемой, но сохранить имя :)

коллеги подсказали что надо было drop партиции еще сделать.

Valeriy
06.07.2017
08:43:11
Так оно не по репликации тебе восстановилось?

Bulat
06.07.2017
08:43:54
а вот это хороший вопрос, я не знаю как оно востановилось

Alexey
06.07.2017
08:47:07
так команду drop table сделал на всех репликах?

или на одной сделал и тут же create?

Bulat
06.07.2017
08:52:13
на каждой drop и тут же create

наверное так не надо быдо делать

Alexey
06.07.2017
08:57:27
ну логично

сначала везде дроп

потом уже везде создание

все будет норм

проверено

а так, CH отработал штатно

Bulat
06.07.2017
08:59:32
я не знал что надо так делать. теперь буду знать :)

Google
Alexey
06.07.2017
09:00:58
CH это такой конструктор, в котором большая часть автоматизации вынесена за рамки DBMS. Это приносит некоторые дополнительные заботы, но в тож время дает очень большую гибкость

правда вот в последних релизах уже появляются фичи в сторону упрощения подобной рутины

Bulat
06.07.2017
09:01:27
в итоге у меня получился какой то трэш.

на самом деле

:)

Pavel
06.07.2017
10:25:10
мммм, немного не связанный вопрос, я тут помню были ребята из Тарантула

есть ли кто до сих пор? Вопрос по гео распределенному сетапу есть

Vladimir
06.07.2017
10:25:43
мммм, немного не связанный вопрос, я тут помню были ребята из Тарантула
я тебе в приват кинул ссылку на офф саппорт канал тарантула )

Pavel
06.07.2017
10:25:59
ой, спасибо)

Kirill
06.07.2017
11:17:41
Может кто знает - можно ли сказать CH перестать считать после какого то предела? Задача узнать количество результатов в запросе и если это количество больше N то уже не важно. Типа "слишком много, фильтруйте дальше". Но что бы посчитать count(), CH вычитывает вообще все подходящие строки и говорит сколько там миллионов, хотя дальше тысячи уже неинтересно...

Александр
06.07.2017
11:31:17
Возможно вам нужен LIMIT BY https://clickhouse.yandex/docs/ru/single/index.html#limit-n-by
Тут речь о другом если я правильно понял. Например нужно выбрать все визиты с браузеров ИЕ6, и если таких визитов больше 10 000, то не выполнять запрос дальше

Kirill
06.07.2017
11:31:19
wow, как то я это пропустил. клевая штука, но не для этой задачи. у меня в запросу GROUP BY нет. Пока пришел к такой вот штуке. Выглядит уродливо, но чтение строк на 1000 обрывает: select sum(c) from ( select 1 as c from ... limit 1000)

Kirill
06.07.2017
12:47:38
спасибо

Александр
06.07.2017
12:49:03
У меня по eventTime получился такой результат 0.000962078302459259 )

Собственно не эффективно я так полагаю

Kirill
06.07.2017
12:49:28
SELECT sum(if(c >= 8192, c, 0))/sum(c) FROM (SELECT count() AS c FROM metrics GROUP BY EventTime ); SELECT sum(if(c >= 8192, c, 0)) / sum(c) FROM ( SELECT count() AS c FROM metrics GROUP BY EventTime ) ┌─divide(sum(if(greaterOrEquals(c, 8192), c, 0)), sum(c))─┐ │ 0.9832048649885908 │ └─────────────────────────────────────────────────────────┘

Google
Kirill
06.07.2017
12:53:00
Processed 368.42 million rows

Александр
06.07.2017
12:53:38
SELECT sum(if(c >= 8192, c, 0)) / sum(c) FROM ( SELECT count() AS c FROM statements GROUP BY eventTime ) ┌─divide(sum(if(greaterOrEquals(c, 8192), c, 0)), sum(c))─┐ │ 0.0009620680871880191 │ └─────────────────────────────────────────────────────────┘

Processed 828.79 million rows

Kirill
06.07.2017
12:55:20
А индекс как построен ? У нас ENGINE = SummingMergeTree(EventDate, (EventTime, ApplicationID, SpotID, Country, OsID, BrowserID, DeviceID), 8192, (Clicks, Impressions))

У меня вопрос по Nullable полям в нативном протоколе, какова их структура, например для Nullable(UInt64), Nullable(String), Nullable(Array(Int32)) чтоб мне их передать на сервер и прочитать ?

Yuri
06.07.2017
13:40:06
Всем привет

на PGDay кто задавал вопрос про клиент Python для ClickHouse? отзовитесь, чем не устраивает? И каким пользуетесь?

Vitaliy
06.07.2017
13:54:05
У меня вопрос по Nullable полям в нативном протоколе, какова их структура, например для Nullable(UInt64), Nullable(String), Nullable(Array(Int32)) чтоб мне их передать на сервер и прочитать ?
Можете тут посмотреть. https://github.com/yandex/ClickHouse/blob/e91395fa14b31ac5ee81968a1b7e97c193f274d4/dbms/src/DataStreams/NativeBlockOutputStream.cpp#L63 Смысл в том, что сначала записывается Null-маска как обычная UInt8 колонка, затем сами значения (тожже как обычно), на месте NULL будут стоять default value.

Kirill
06.07.2017
14:12:29
там много смотреть, можно на пальцах: для Nullable в начало пишем UInt8 (зачем: 1 есть значение, 0 - нет ?) дальше если есть значение то пишем его как есть (например String: длина + сам текст в байтах), если значения нет то ничего не пишем ?

)

Igor
06.07.2017
14:13:47
в rowbinary именно так

Страница 194 из 723