Size: a a a

ClickHouse не тормозит

2020 June 14

f

fLipE in ClickHouse не тормозит
ну это я ставил в ubuntu на win 10 сейчас
источник

f

fLipE in ClickHouse не тормозит
буду разбираться
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alexey Kostarev
Добрый день, коллеги
Вопрос по поводу материализованных стролбцов для Nested полей
Если не использовать Nested материализация проходит успешно:
CREATE TABLE table1 (
 CreateDate DateTime,
 TotalSum Float64 MATERIALIZED arraySum(ProductTotalSums),
 ProductTotalSums Array(Float64)
) ENGINE = MergeTree()
PARTITION BY toYYYYMMDD(CreateDate)
ORDER BY CreateDate
;
Если заменить массив ProductTotalSums на поле вложеной структуры
CREATE TABLE table2 (
 CreateDate DateTime,
 TotalSum Float64 MATERIALIZED arraySum(Records.ProductTotalSums),
 Records Nested (
   ProductIds UInt64,
   ProductTotalSums Float64
 )
) ENGINE = MergeTree()
PARTITION BY toYYYYMMDD(CreateDate)
ORDER BY CreateDate
;
то если не использовать матеиализацию столбца TotalSum
то все работет корректно - столбец ProductTotalSums вложенной структуры  Records во всех запосах видится как массив с именем Records.ProductTotalSums

Но при попытке его материализовать выводится сообщение
Received exception from server (version 20.4.3):
Code: 47. DB::Exception: Received from localhost:9000. DB::Exception: Missing columns: 'Records.ProductTotalSums' while processing query: 'CAST(arraySum(Records.ProductTotalSums) AS TotalSum_tmp, 'Float64') AS TotalSum, TotalSum_tmp', required columns: 'Records.ProductTotalSums', source columns: 'Records' 'TotalSum' 'CreateDate': default expression and column type are incompatible.
видимо не доделано.

Nested -- это сахар который работает и имеет значение только в момент парсинга create table
вот это ровно тоже самое, просто без сахара

CREATE TABLE table2
(
   `CreateDate` DateTime,
   `TotalSum` Float64 MATERIALIZED arraySum(Records.ProductTotalSums),
   `Records.ProductIds` Array(UInt64),
   `Records.ProductTotalSums` Array(Float64)
)
ENGINE = MergeTree()
PARTITION BY toYYYYMMDD(CreateDate)
ORDER BY CreateDate




Records_ProductIds Array(UInt64), Records_ProductTotalSums Array(Float64)
не одно и тоже с
Records.ProductIds Array(UInt64), Records.ProductTotalSums Array(Float64)

из-за точки в имени поля "." insert проверяет что кол-во элементов в массивах совпадает
источник

AK

Alexey Kostarev in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
видимо не доделано.

Nested -- это сахар который работает и имеет значение только в момент парсинга create table
вот это ровно тоже самое, просто без сахара

CREATE TABLE table2
(
   `CreateDate` DateTime,
   `TotalSum` Float64 MATERIALIZED arraySum(Records.ProductTotalSums),
   `Records.ProductIds` Array(UInt64),
   `Records.ProductTotalSums` Array(Float64)
)
ENGINE = MergeTree()
PARTITION BY toYYYYMMDD(CreateDate)
ORDER BY CreateDate




Records_ProductIds Array(UInt64), Records_ProductTotalSums Array(Float64)
не одно и тоже с
Records.ProductIds Array(UInt64), Records.ProductTotalSums Array(Float64)

из-за точки в имени поля "." insert проверяет что кол-во элементов в массивах совпадает
Согласен
В даном случае  я рассматривал ситуацию с точки зрения UML
Использование Nested более "в духе" UML, когда элементы одного класса являются подэлементами другого  - композиция.
Жаль, что в нем (в Nested ) проблемы с материализацией.
Есть надежда, что поправят, если выложить проблему на github?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alexey Kostarev
Согласен
В даном случае  я рассматривал ситуацию с точки зрения UML
Использование Nested более "в духе" UML, когда элементы одного класса являются подэлементами другого  - композиция.
Жаль, что в нем (в Nested ) проблемы с материализацией.
Есть надежда, что поправят, если выложить проблему на github?
надежда всегда есть.

Nested очень кривая и протекающая абстракция, нельзя делать вложенные Nested, нельзя делать alter
источник

AK

Alexey Kostarev in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
надежда всегда есть.

Nested очень кривая и протекающая абстракция, нельзя делать вложенные Nested, нельзя делать alter
OK
Спасибо
источник

AK

Alexey Kostarev in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
надежда всегда есть.

Nested очень кривая и протекающая абстракция, нельзя делать вложенные Nested, нельзя делать alter
Кстати насчет вложенности
Вроде как в последних версиях Clickhouse многомерные массивы стали поддерживаться?  Или там тоже есть области "протечки"?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alexey Kostarev
Кстати насчет вложенности
Вроде как в последних версиях Clickhouse многомерные массивы стали поддерживаться?  Или там тоже есть области "протечки"?
вложенные массивы всегда поддерживались (года три  назад точно уже были).
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
ну т.е.  на самом деле никаких Nested в КХ нет, они существуют пока парсится create table
источник

AK

Alexey Kostarev in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
вложенные массивы всегда поддерживались (года три  назад точно уже были).
Возможно Вы правы. Плотно с массивами в ClickHouse я пока не работал...
источник

AK

Alexey Kostarev in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
ну т.е.  на самом деле никаких Nested в КХ нет, они существуют пока парсится create table
Что  тогда вложенность Nested в Nested не подержали 😊
Хотя, возможно. на это были свои причины...
источник

СЯ

Сергей Ярошенко... in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
ну т.е.  на самом деле никаких Nested в КХ нет, они существуют пока парсится create table
они существуют на моменте вставки данных в структуру. нельзя вставить в один массив одно число записей одной записи структуры,а в другой - другое. имена полей вложенных структур с точкой и тогда КХ контролирует объем вставки в связанные поля
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Сергей Ярошенко
они существуют на моменте вставки данных в структуру. нельзя вставить в один массив одно число записей одной записи структуры,а в другой - другое. имена полей вложенных структур с точкой и тогда КХ контролирует объем вставки в связанные поля
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
именя с точкой можно сделать и без nested
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
и нигде после create информация nested или не nested не хранится
источник

СЯ

Сергей Ярошенко... in ClickHouse не тормозит
информации нет, но контроль остается
источник

СЯ

Сергей Ярошенко... in ClickHouse не тормозит
так что я за то, что все же они есть... хоть немного и не в реальном виде
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
контроль задает точка в имени
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
можно массивами и точками создать такие структуры которые нельзя задать через Nested
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
на самом деле точки еще влияют и на мержи и array join
источник