184 похожих чатов

А тут, если без структуры как равномерно развернуть все массивы

в строки, когда это понадобится?

17 ответов

8 просмотров

могу написать пример или дать ссылку, если вы предоставите create table из трех полей, + insert, + и что нужно на выходе

Ekaterina- Автор вопроса
Denny [Altinity]
могу написать пример или дать ссылку, если вы пред...

У меня, вроде, получилось, как мне надо без Nested, просто поля SimpleFunction(grouparrayarray). И select выдал, что нужно, завтра всю структуру замучу с мат вью. Если будут еще вопросы, предоставлю пример. Спасибо!)

Ekaterina- Автор вопроса
Denny [Altinity]
могу написать пример или дать ссылку, если вы пред...

ver 21.11.4.14 ; --таблица источник для мат. вью - компании CREATE OR REPLACE TABLE Test.Company ( concern String, branch Int32, company String, inn String ) ENGINE = MergeTree ORDER BY (concern, branch) ; --таблица, аггрегирующая данные компаний по концернам и веткам во вложенную структуру CREATE OR REPLACE TABLE Test.Concern ( concern String, branch Int32, company SimpleAggregateFunction(groupArrayArray, Array(String)), inn SimpleAggregateFunction(groupArrayArray, Array(String)) ) ENGINE = AggregatingMergeTree ORDER BY (concern, branch) ; INSERT INTO Test.Company (concern, branch, company, inn) VALUES('concern1', 1, 'company1', '1234') ; INSERT INTO Test.Company (concern, branch, company, inn) VALUES('concern1', 1, 'company2', '2345') ; --при прямой вставке данных в аггрегирующую таблицу Test.Company из Test.Company массивы заполняются, как надо INSERT INTO Test.Concern (concern, branch, company, inn) SELECT concern, branch, array(company), array(inn) FROM Test.Company ; concern branch company inn concern1 1 ['company1','company2'] ['1234','2345'] ; SELECT concern, branch, company, inn FROM Test.Company ; SELECT concern, branch, company, inn FROM Test.Concern ; SELECT concern, branch, company, inn, inn_dif FROM Test.Concern ARRAY JOIN inn as inn_dif ; DROP TABLE Test.mv_Concern ; ------ИСПОЛЬЗОВАНИЕ МАТ. ВЬЮ --мат. вью вариант 1 CREATE MATERIALIZED VIEW Test.mv_Concern TO Test.Concern AS SELECT concern, branch, array(company), array(inn) FROM Test.Company ; --мат. вью вариант 2 CREATE MATERIALIZED VIEW Test.mv_Concern TO Test.Concern AS SELECT concern, branch, groupArray(company), groupArray(inn) FROM Test.Company GROUP BY concern, branch ; -- при вставке данных в таблицу - источник для мат. вью Test.Company, массивы в Test.Concern пустые concern branch company inn concern1 1 [] [] concern1 1 [] []

Ekaterina- Автор вопроса
Denny [Altinity]
могу написать пример или дать ссылку, если вы пред...

в общем, с мат.вью, почему-то не получилось, в коде выше все описано

Ekaterina
в общем, с мат.вью, почему-то не получилось, в код...

Я бы сказал, что это ожидаемое поведение. И почему это не выходит на первом слайде https://www.youtube.com/watch?v=1LVJ_WcLgF8&list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597s

Ekaterina- Автор вопроса
Константин
Я бы сказал, что это ожидаемое поведение. И почему...

я понимаю, что вставляются в указанную в мат.вью не из таблицы источника, а вставляется блок и в целевую таблицу и в мат. вью, но он же содержит нужные данные, но я, все равно не поняла, почему он эти данные не может превратить в массив, можно для идиотов на пальцах? о_О и, есть ли, все-таки, вариант накапливать данные во вложенных структурах внутри Clickhouse, без работы внешних сервисов?

Ekaterina
я понимаю, что вставляются в указанную в мат.вью н...

Ещё раз посмотрите видео, вы не поняли. Каждая вставка разбивается на несколько десятков потоков, и каждый поток отдельно обрабатывает MV

Ekaterina- Автор вопроса
Ekaterina
ver 21.11.4.14 ; --таблица источник для мат. вью -...

я идиота кусок, дело в алиасах в запросе в мат. вью, вопрос снимается, но если есть предложения сделать это лучше, буду рада!

Ekaterina
я идиота кусок, дело в алиасах в запросе в мат. вь...

лучше не сделать. вариант мат вью без групбай вставляет больше строк, но optimize_on_insert включен по дефолту поэтому это не важно, AggregatingMergeTree само сделает групбай в момент инсерта. вариант мат вью с групбай вставляет меньше строк, но ест больше памяти. наверное надо тестировать какой вариант быстрее

Ekaterina- Автор вопроса
Denny [Altinity]
лучше не сделать. вариант мат вью без групбай вст...

понял, я просто еще думала, может с Nested удасться это провернуть, чтобы потом в select делать array join с одним полем - вложенная структура, а не с каждым, которое просто массив

Ekaterina- Автор вопроса
Denny [Altinity]
лучше не сделать. вариант мат вью без групбай вст...

в любом случае, спасибо, буду тестировать оба варианта мат.вью

Ekaterina
понял, я просто еще думала, может с Nested удаст...

чтож вы все никак не хотите понять про синтаксический сахар. Там же просто колонки в таблице надо с точкой назвать типа A.a, A.b это тоже самое что и A Nested (a .., b..)

Ekaterina- Автор вопроса
Denny [Altinity]
чтож вы все никак не хотите понять про синтаксичес...

у меня таблица с названиями с точкой f.concern, f.branch не создается - ошибка

Ekaterina
у меня таблица с названиями с точкой f.concern, f....

мне из канады не видно ошибку, очень далеко. подозреваю что вы не указываете кавычки вокруг имен, либо двойные ", либо бэктики ` типа `A.a` Int64, `A.b` String

Ekaterina- Автор вопроса
Denny [Altinity]
мне из канады не видно ошибку, очень далеко. подо...

CREATE OR REPLACE TABLE Test.Concern ( concern String, branch Int32, f.company SimpleAggregateFunction(groupArrayArray, Array(String)), f.inn SimpleAggregateFunction(groupArrayArray, Array(String)) ) ENGINE = AggregatingMergeTree ORDER BY (concern, branch) Code: 62. DB::Exception: Syntax error: failed at position 237 ('.') (line 6, col 3): .company SimpleAggregateFunction(groupArrayArray, Array(String)), f.inn SimpleAggregateFunction(groupArrayArray, Array(String)) ) ENGINE = AggregatingMer. Expected one of: nested table, ALIAS, identifier, DEFAULT, data type, MATERIALIZED. (SYNTAX_ERROR) (version 21.11.4.14 (official build))

Ekaterina- Автор вопроса
Denny [Altinity]
мне из канады не видно ошибку, очень далеко. подо...

все, через "" получилось, и работает, спасибо!

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
Карта сайта