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

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

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

17 ответов

17 просмотров

могу написать пример или дать ссылку, если вы предоставите 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]
мне из канады не видно ошибку, очень далеко. подо...

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

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта