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

Ilya
12.09.2017
21:05:12

Alexey
12.09.2017
21:14:03

Kirill
12.09.2017
21:16:49

Google

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

Alexander
12.09.2017
22:40:11

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

Vitaly
13.09.2017
08:41:28

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

Vitaly
13.09.2017
08:50:16

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
...

Oleh
13.09.2017
10:15:31

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

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

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

Evgeny
13.09.2017
10:21:23

Александр
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

Tima
13.09.2017
12:09:30

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:19:02

Tima
13.09.2017
13:21:41

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...

Igor
13.09.2017
13:42:23

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
А, тогда ничего нового ) думал пропустил что-то важное )