@clickhouse_ru

Страница 260 из 723
Kirill
12.09.2017
21:01:25
Прошу прощения за глупый вопрос. Кто использовал infi.clickhouse_orm для импорта данных в CH, как наиболее эффективно заполнять поля для сконфигурированных классов таблиц ? Я формирую pandas DataFrame размером один батч с данными из имеющейся базы, заполняю где был null стандартными значениями, проверяю приведение и начинаю формировать объекты для каждой строки через .setattr(x, value). занимает это порядка 3с на 1000 объектов с 122 полями. Мб возможно оптимизировать работу через другие коннекторы ? Спасибо.

Kirill
12.09.2017
21:16:49
Я могу только заметить, что это действительно очень медленно. Но я сам не пользовался этим драйвером и не могу сказать, что тормозит - драйвер или Pandas.
Pandas выполняет все свои проверки быстро и над всеми полями. Меня в силу недостатка знаний смущает конструкция последовательного прохода по всем 122 параметрам для каждого из 1000 объектов.

Google
Anton
12.09.2017
22:13:51
Доброй ночи. Ребят подскадите есть ли чат по API отчетов v1 для AppMetrica? Интересует, можно ли группировать не только по трекерам, но и по меткам, которые используются в этих трекерах.

Edya
13.09.2017
07:48:15
Начал его использовать. Работает хорошо

Vitaly
13.09.2017
08:19:48
Alexander
13.09.2017
08:30:27
Это лучше ответит сам автор @tkostyan

Kostya
13.09.2017
08:31:41
А в вашей обертке для алхимии есть поддержка функций с лямбдами?
Функций в плане прокси в виде func.do_smth()? Можно пример того что хочется?

Vitaly
13.09.2017
08:41:28
Функций в плане прокси в виде func.do_smth()? Можно пример того что хочется?
например, я хочу использовать какую-нибудь функцию работы с массивами, где есть лямбда: SELECT arrayFilter(x -> x LIKE '%World%', ['Hello', 'abc World']) AS res

Kostya
13.09.2017
08:49:44
В виде оператора этого пока нет. Можете попробовать это сделать в виде вызова функции func.lambda(x, expr)

Kostya
13.09.2017
08:54:14
Хотя, это тоже не выйдет из-за зарезервированности "lambda" в питоне.

Александр
13.09.2017
09:43:33
А почему при записи 1970-01-01 в колонку типа Date я получаю 0000-00-00 вместо 1970-01-01? )

Oleh
13.09.2017
10:12:26
а зачем вообще писать такую дату?

Google
Александр
13.09.2017
10:12:52
а зачем вообще писать такую дату?
Зачем вообще писать дату? )

Есть например справочник всех войн и там куча показателей

И например дата войны до юниксовой эпохи

Это просто как пример привязки даты к событию

Таких кейсов может быть много

Oleh
13.09.2017
10:14:50
тогда пиши строку, а не дату

Alexandr
13.09.2017
10:15:08
превращать в timestamp? и пилить в int?

Vsevolod
13.09.2017
10:15:13
Формат date же хранится в unix time если я не ошибаюсь

Александр
13.09.2017
10:15:16
...

Vsevolod
13.09.2017
10:16:20
Нам к примеру нужны милли или микросекунды. К сожалению приходится хранить 3 поля local_date, local_time, local_time_ns

Александр
13.09.2017
10:16:42
превращать в timestamp? и пилить в int?
Как вариант, только никакие операции не произведешь. Например среднюю продолжительность мирного времени не посчитаешь ) бред сумасшедшего, но все же )

Alexandr
13.09.2017
10:19:19
почему? вычесть из int-int и перемножить до дней-недель-месяцев, у меня вроде в компании ребята все время пилят в timestamp и места меньше и проще вроде в коде работать

Как вариант, только никакие операции не произведешь. Например среднюю продолжительность мирного времени не посчитаешь ) бред сумасшедшего, но все же )

Evgeny
13.09.2017
10:21:23
И например дата войны до юниксовой эпохи
работайте со сдвигом на 2000 лет )

Александр
13.09.2017
10:24:57
Инт без сдвига нет смысла использовать. 0 значение будет первое января 1970 года, а мне надо раньше ) вот и получается, что нужно двигать, да

Причем сдвиг в 2000 лет должен учитывать високосные года )

Alexandr
13.09.2017
10:26:38
блин, тоже верно

Dmitry
13.09.2017
11:52:48
Есть такой запрос (из Табло) SELECT Custom_SQL_Query.date AS date, SUM((CASE WHEN Custom_SQL_Query.uv = 0 THEN NULL ELSE CAST(Custom_SQL_Query.vv AS FLOAT) / Custom_SQL_Query.uv END)) AS sum_vv__copy__ok FROM ( SELECT subsite_id, subsite, date, percent_view ) Custom_SQL_Query WHERE (Custom_SQL_Query.subsite IN ('Gambit', 'Gambit-html5-android', 'Gambit-html5-ios')) GROUP BY date КХ возвращает Internal error вот кусок лога https://pastebin.com/78ShXb0J

так работает case when uniqExact(uid)=0 then 0 else cast(count() as Float) / uniqExact(uid) end а так нет case when uniqExact(uid)=0 then NULL else cast(count() as Float) / uniqExact(uid) end

Google
Dmitry
13.09.2017
12:10:19
я не знаю как в КХ, но где-то деление целого на целое будет в результате целое, а надо вещественное

и Табло генерит каст по умолчанию

да и не в касте мне кажется дело, а в операция с участием NULL

Tima
13.09.2017
12:13:50
Возможно дело в том, что в КХ NULL добавлен относительно недавно, и что-то ещё не до конца поддерживает NULL. На это указывает, что замена на явное указание 0 работает

Mike
13.09.2017
12:26:43
а есть ли функция типа URLPathHierarchy('https://example.com/browse/CONV-6788') = [ '/browse/', '/browse/CONV-6788' ] но чтобы вернула URLPathHierarchy2('https://example.com/browse/CONV-6788') = [ 'browse', 'CONV-6788' ] ?

Roman
13.09.2017
12:28:59
splitByChar не пйодет?

Mike
13.09.2017
12:31:55
О, и точно ?

select splitByChar('/', path(URL))[2] from qwe

Igor
13.09.2017
13:23:53
причем, что еще интереснее, в Enum'е 3 значения: Enum8('UNKNOWN' = -1, 'FALSE' = 0, 'TRUE' = 1) Вот эти два валятся с ошибками: select * from test.virtual_status_2017_02_26 WHERE ParentalControlEnabled='UNKNOWN' limit 1 select * from test.virtual_status_2017_02_26 WHERE ParentalControlEnabled='TRUE' limit 1 А вот этот отрабатывает: select * from test.virtual_status_2017_02_26 WHERE ParentalControlEnabled='FALSE' limit 1

Схему таблиц укажите
В смысле показать здесь структуру проблемных таблиц?

Tima
13.09.2017
13:25:43
Да

Igor
13.09.2017
13:29:40
Field1 String Field2 Enum8(\'UNKNOWN\' = 0, \'WINDOWS\' = 1, \'ANDROID\' = 2) Field3 DateTime Field4 FixedString(16) Field5 Nullable(String) Field6 Nullable(String) Field7 Nullable(String) Field8 DateTime Field9 Enum8(\'V1\' = 1, \'V2\' = 2, \'V3\' = 3, \'V4\' = 4, \'V5\' = 5) Field10 Nullable(String) Field11 UInt32 Field12 FixedString(2) Field13 UInt32 Field14 String Field15 Enum8(\'UNKNOWN\' = -1, \'FALSE\' = 0, \'TRUE\' = 1) SendAnonStats Enum8(\'UNKNOWN\' = -1, \'FALSE\' = 0, \'TRUE\' = 1) ParentalControlEnabled Enum8(\'UNKNOWN\' = -1, \'FALSE\' = 0, \'TRUE\' = 1) Field16 Enum8(\'UNKNOWN\' = 0, \'EXPIRED\' = 1) Field17 Nullable(UInt32) Field18 Array(String) Field19 Array(String) Field20 Array(UInt32) Field21 Enum8(\'UNKNOWN\' = 0, \'EXPIRED\' = 1, \'FREE\' = 2)

соответственно проблема на полях Field15, SendAnonStats, ParentalControlEnabled

как и в прошлый раз, на полях с отрицательными значениями

причем значения енума UNKNOWN и TRUE фейлятся на всех трех филдах, значение FALSE на всех трех филдах работает нормально

Tima
13.09.2017
13:35:09
А для поля Field2 работает нормально? Может дело в том, что в проблемных полях есть значения с -1?

Igor
13.09.2017
13:35:40
да, проблема в отрицательных значениях

Google
Igor
13.09.2017
13:36:01
я второй раз замечаю эту проблему, и второй раз на енумах с отрицательным значением

но при этом проблема плавающая

то есть у меня рядом есть таблица где тот же самый енум работает нормально

Tima
13.09.2017
13:38:33
Судя по описанию доки https://clickhouse.yandex/docs/ru/data_types/enum.html?highlight=enum лично у меня сомнение, что если указать отрицательное значение, оно в какой-то ситуации может пытаться кастоваться как Int8. Что и проводит к ошибке

prll
13.09.2017
13:40:32
да, проблема в отрицательных значениях
а можете приготовить готовый минимальный тест в котором будет видно что падает ?

просто sql c create .. insert .. select...

Tima
13.09.2017
13:42:35
Igor
13.09.2017
13:43:40
угу, я понял. минимальный тест сейчас пытаюсь сделать, оно не всегда повторяется.

в общем вот это сообщение выскакивает тогда, когда таблица создается через http интерфейс и имеет неправильный порядок (отрицательных?) значений, например вот такой TRUE(1), FALSE(0), UNKNOWN(-1)

Поменял порядок на возрастающий и попустило. Причем при создании таблицы через родной клиент кликхауза - проблемы нет

еще поиграюсь и формализую на гитхабе

Alexey
13.09.2017
14:50:26
Всем привет! Сегодня столкнулся с очень неприятной ситуацией. Есть кластер из 4 шардов и у каждого шарда по реплике. Внезапно на одном из шардов во всех запросах к таблице с ограничением по дате (например WHERE d_event_date=today()) сервер начал процессить все строки за все дни в партиции за текущий месяц. В итоге получилось, что на трех шардах запрос для обработки использует 50 миллионов строк, а на одно четвертом 1,2 миллиарда (что составляем количество строк за весь сентябрь). Та же ситуация и на реплике этого шарда. Единственный вариант - пересоздавать таблицы и перегонять данные, но это очень больно ( Никто не сталкивался с такой проблемой у себя?

Нашел в доке крутую команду OPTIMIZE, которая Просит движок таблицы сделать что-нибудь, что может привести к более оптимальной работе. но чет толку мало.

Andrey
13.09.2017
14:52:44
Друзья, как очистить таблицу с репликацией?

Igor
13.09.2017
15:34:46
подскажите плиз, а подзапросы с условиями в КХ работают? хочется написать что-то вроде: SELECT DateAdded, (SELECT count() FROM t2 WHERE t2.DateAdded=t1.DateAdded) as Count FROM t1

papa
13.09.2017
15:39:59
коррелированные подзапросы не работают, джойны работают.

Igor
13.09.2017
15:40:21
спасибо

Mike
13.09.2017
16:17:12
Александр
13.09.2017
16:32:21
Джоины начали поддерживать условия? оО

Google
Александр
13.09.2017
16:32:21
Или там только равенство?

Mike
13.09.2017
16:33:05
Добрый день, подскажите плиз, работает ли в данный момент решардинг? Как только не пытался его завести, получаю Code: 325. DB::Exception: Received from localhost:9000, ::1. DB::Exception: This host is not allowed to subscribe to coordinator coordinator-0000000008. Задача - расширить кластер новыми шардами. Может быть есть еще какой-то способ. Сдампить, расширить, залить в новое не подойдет, объем данных уже большой.

Tima
13.09.2017
16:34:37
Или там только равенство?
Только равенство, причем колонки должны называться одинаково

Ekaterina
13.09.2017
16:55:11
Коллеги, привет! На RIW 2017 ищу рекламодателя, который может поделиться опытом использования clickhouse.

Есть тут такие?)

Александр
13.09.2017
16:55:20
А, тогда ничего нового ) думал пропустил что-то важное )

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