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

Добрый вечер. Подскажите, пожалуйста, как вытянуть данные для функций типа

covarPop/corr, если эти данные хранятся в строках, а не в столбцах? Допустим, что есть таблица, в которой лежат unique_instrument_id, date, measurement. Хочется вычислить коэффициент корреляции между значениями measurement для нескольких пар инструментов в заданном диапазоне дат. То есть на вход подаётся что-то вроде массива инструментов [("A, "B"), ("C", "D"), ...] и две даты. На выходе хотелось бы получить таблицу с двумя колонками, в первой — пара инструментов, во второй — посчитанный коэффициент.

6 ответов

9 просмотров
Viacheslav-Chernyshev Автор вопроса

Доброе утро, по вот этому вопросу кто-нибудь может подсказать?

Viacheslav Chernyshev
Доброе утро, по вот этому вопросу кто-нибудь может...

С функциями типа covarPop/corr мало кто работал. Покажите ддл, чтобы было видно в какок формате у вас сейчас данные и напишите в каком формате их хотите получить.

Viacheslav-Chernyshev Автор вопроса
Vladimir Goncharov
С функциями типа covarPop/corr мало кто работал. П...

Предположим, что вот такая таблица: CREATE TABLE data_set (instrument_id UUID, date Date, measurement Float64) ENGINE = MergeTree() PARTITION BY toYYYYMM(date) ORDER BY tuple() Схема упрощённая, но для понимания проблемы подходит. Положить instrument_id в колонки я не смогу, так как заранее они неизвестны. Теоретически можно посчитать ковариацию для пары массивов при помощи, например, SELECT covarSampArray([1, 2, 3], [1, 2, 6]). То есть последовательность измерений для одного инструмента я могу преобразовать в массив при помощи groupArray(measurement). Но как это всё вместе связать у меня пока что идей нет.

Viacheslav Chernyshev
Предположим, что вот такая таблица: CREATE TABLE ...

всё равно ничерта не понятно :) и боюсь, что не только мне одному. у вас есть таблицаdata_set с каким-то неизвестным полем instrument_id и вы хотите применить к нему несуществующую функцию covarSampArray. я очень сомневаюсь, что кто-то сможет разобраться в этой каше. вы изначально задавали вопрос: >как вытянуть данные для функций типа covarPop/corr, если эти данные хранятся в строках, а не в столбцах? вот и акцентируйте внимание на том в каком виде у вас лежат ланные, а потом, что их нужно привести к формату func(x, y). мне сдаётся, что у вас элементарная проблема, но вы не можете её внятно описать. как говорится "правильно заданный вопрос - уже половина ответа". в этом чатике помогали решить проблемы посложнее "перевода столбцов в колонки". если тыкать пальце в небо, то вам для конвертации строк в столбцы вам нужны функции arrayJoin и arrayMap, можете поискать их использование в этом чатике, с их помощью можно творить чудеса конвертации

Viacheslav-Chernyshev Автор вопроса
Vladimir Goncharov
всё равно ничерта не понятно :) и боюсь, что не то...

Я, если честно, не понимаю, что в моём вопросе такого архинепонятного и где там каша. Объясняю ещё раз. covarSamp/corr/etc. очень легко использовать, когда данные лежат в колонках: create table columnar_data_set(column_a Float64, column_b Float64) engine = Memory(); insert into columnar_data_set values (1, 1), (2, 2), (3, 6); select * from columnar_data_set format PrettySpace; column_a column_b 1 1 2 2 3 6 select covarSamp(column_a, column_b) from columnar_data_set format PrettySpace; covarSamp(column_a, column_b) 2.5 Как мне сделать то же самое, когда все данные находятся в одной колонке, но два диапазона можно определить по ключу? create table data_set(column_name String, measurement Float64) engine = Memory(); insert into data_set values ('column_a', 1), ('column_a', 2), ('column_a', 3), ('column_b', 1), ('column_b', 2), ('column_b', 6); select * from data_set format PrettySpace; column_name measurement column_a 1 column_a 2 column_a 3 column_b 1 column_b 2 column_b 6

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта