Гость
Map
Форумы / Microsoft SQL Server [закрыт для гостей] / Что делать с кучей данных из разных источников? / 36 сообщений из 36, показаны все 2 страниц
11.07.2022, 14:00
    #84682
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Есть несколько источников, с которых с разной периодичностью берутся показатели. Показатель, в общем-то, один, просто число.
Источники разных типов.
1. Простой. Один замер - один показатель.
2. Двойной. Один замер - два показателя.
3. Сложный. Один замер - от 4 до 20 показателей.

Как их хранить? На данный момент есть источники с 1, 2 и 4 показателями. Все хранятся в одной таблице, каждый со своим айдишником (для этого и был нужен пивот). Но вот предстоит добавить источник с 13 показателями. Хочется создать для него таблицу, но это как-то неправильно. Но и пихать его в общую таблицу как-то некомильфо, потому что выборки, если будут использовать этот источник, скорее всего, все 13 показателей и возьмут. И будут их разворачивать пивотом.

Плюс еще непонятно, как формировать выборки по желанию пользователя. Тут или динамический код, или трехзвенка. Вообще жесть.
...
Рейтинг: 0 / 0
11.07.2022, 14:01
    #84686
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Когда брался за эту задачу, думал: "А, неделя делов." А если все по-уму делать, 1С придется с нуля написать.
...
Рейтинг: 0 / 0
11.07.2022, 15:22
    #84733
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Может, понаделать таблиц с 1, 2, 4, 5, 6 итд столбцами?
...
Рейтинг: 0 / 0
11.07.2022, 15:33
    #84751
IT-Христ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Просто Трёп  11.07.2022, 14:01
[игнорируется]
Когда брался за эту задачу, думал: "А, неделя делов." А если все по-уму делать, 1С придется с нуля написать.
У тебя ТЗ нету, в этом твои мучения . Сложно делать не знаю что не знаю зачем.
...
Рейтинг: 0 / 0
11.07.2022, 15:43
    #84768
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
IT-Христ  11.07.2022, 15:33
[игнорируется]
Просто Трёп  11.07.2022, 14:01
[игнорируется]
Когда брался за эту задачу, думал: "А, неделя делов." А если все по-уму делать, 1С придется с нуля написать.
У тебя ТЗ нету, в этом твои мучения . Сложно делать не знаю что не знаю зачем.
Скажем так, ТЗ есть, но плохо сформулировано. В процессе, такскать.
...
Рейтинг: 0 / 0
11.07.2022, 15:44
    #84771
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
А сколько места я в базе потеряю, если будет таблица на 20 smallmoney, из которых 60% будет null?
...
Рейтинг: 0 / 0
11.07.2022, 18:31
    #84905
Sparrow
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Просто Трёп  11.07.2022, 14:00
[игнорируется]
Есть несколько источников, с которых с разной периодичностью берутся показатели. Показатель, в общем-то, один, просто число.
Источники разных типов.
1. Простой. Один замер - один показатель.
2. Двойной. Один замер - два показателя.
3. Сложный. Один замер - от 4 до 20 показателей.

Как их хранить? На данный момент есть источники с 1, 2 и 4 показателями. Все хранятся в одной таблице, каждый со своим айдишником (для этого и был нужен пивот). Но вот предстоит добавить источник с 13 показателями. Хочется создать для него таблицу, но это как-то неправильно. Но и пихать его в общую таблицу как-то некомильфо, потому что выборки, если будут использовать этот источник, скорее всего, все 13 показателей и возьмут. И будут их разворачивать пивотом.

Плюс еще непонятно, как формировать выборки по желанию пользователя. Тут или динамический код, или трехзвенка. Вообще жесть.
Просматриваются типы замеров, типы источников. Можно в одной разреженной таблице хранить.
Можно много таблиц делать .

Там по идеее нужно время иметь.

Сколько показаний в сутки, в год, новых сыплется в систему?
...
Изменено: 11.07.2022, 18:33 - Sparrow
Рейтинг: 0 / 0
11.07.2022, 18:42
    #84916
Sparrow
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Яб сделал
Табличку:
Тип источника,
Тип замера,
Тип показателя
Время ввода,
Значение

А отчеты и отображение дело вторичное.
...
Изменено: 11.07.2022, 18:45 - Sparrow
Рейтинг: 0 / 0
11.07.2022, 18:59
    #84924
Sparrow
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Пивот, это дело клиента, эксел и любая отчетная система умеют делать пивот. И 1с
...
Рейтинг: 0 / 0
11.07.2022, 19:30
    #84939
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Sparrow  11.07.2022, 18:31
[игнорируется]
Сколько показаний в сутки, в год, новых сыплется в систему?
Где-то каждые 30 секунд, где-то раз в 15 минут. Ну и хранить, сколько дисков хватит.
...
Рейтинг: 0 / 0
11.07.2022, 19:31
    #84941
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Sparrow  11.07.2022, 18:42
[игнорируется]
А отчеты и отображение дело вторичное.
Sparrow  11.07.2022, 18:59
[игнорируется]
Пивот, это дело клиента, эксел и любая отчетная система умеют делать пивот. И 1с
Это гемор, изначально заложенный в систему. Тот, кто будет потом тянуть эти данные, будет меня проклинать.
...
Изменено: 11.07.2022, 19:32 - Просто Трёп
Рейтинг: 0 / 0
11.07.2022, 19:32
    #84942
IT-Христ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Просто Трёп  11.07.2022, 19:30
[игнорируется]
Sparrow  11.07.2022, 18:31
[игнорируется]
Сколько показаний в сутки, в год, новых сыплется в систему?
Где-то каждые 30 секунд, где-то раз в 15 минут. Ну и хранить, сколько дисков хватит.
Можно по принципу 1С пойти, сделать типа регистра, где сводные данные иметь. А например, годовой давности данные убирать.
...
Рейтинг: 0 / 0
11.07.2022, 19:33
    #84944
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
IT-Христ  11.07.2022, 19:32
[игнорируется]
Просто Трёп  11.07.2022, 19:30
[игнорируется]
Sparrow  11.07.2022, 18:31
[игнорируется]
Сколько показаний в сутки, в год, новых сыплется в систему?
Где-то каждые 30 секунд, где-то раз в 15 минут. Ну и хранить, сколько дисков хватит.
Можно по принципу 1С пойти, сделать типа регистра, где сводные данные иметь. А например, годовой давности данные убирать.
А закончится все трехзвенкой. Хотелось бы обойтись базешкой и веб-мордой.
...
Рейтинг: 0 / 0
11.07.2022, 19:34
    #84947
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Пока что решил сделать одну таблицу с 20 колонками смоллмани и пусть будет полупустой.
...
Рейтинг: 0 / 0
11.07.2022, 20:06
    #85009
Sparrow
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Просто Трёп  11.07.2022, 19:34
[игнорируется]
Пока что решил сделать одну таблицу с 20 колонками смоллмани и пусть будет полупустой.
Технически пивот в вашем случае в любой версии ms sql реализуется запросом из 20 left join.
Причем очень эффективно.

Есть пивот в верси. 2008, но там изврат.
А хорший есть толи в 2016 толи в 2018.
...
Рейтинг: 0 / 0
14.07.2022, 12:44
    #87580
Deff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Просто Трёп  11.07.2022, 19:34
[игнорируется]
Пока что решил сделать одну таблицу с 20 колонками смоллмани и пусть будет полупустой.
По мне так очень плохая идея. Pivot не страшно. С unpivot потом замучаешься.
Лень всё минусы расписывать - просто не делай так.
...
Рейтинг: 0 / 0
14.07.2022, 13:48
    #87625
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Deff  14.07.2022, 12:44
[игнорируется]
Просто Трёп  11.07.2022, 19:34
[игнорируется]
Пока что решил сделать одну таблицу с 20 колонками смоллмани и пусть будет полупустой.
По мне так очень плохая идея. Pivot не страшно. С unpivot потом замучаешься.
Лень всё минусы расписывать - просто не делай так.
А ты не ленись. Я как представлю что у меня в таблице будет 20 одинаковых datetime вместо одного, мне грустно становится.
...
Рейтинг: 0 / 0
14.07.2022, 13:49
    #87626
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Да и нагрузка на сервер... 20 инсертов или 1.
...
Рейтинг: 0 / 0
14.07.2022, 16:48
    #87822
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Sparrow  11.07.2022, 20:06
[игнорируется]
Просто Трёп  11.07.2022, 19:34
[игнорируется]
Пока что решил сделать одну таблицу с 20 колонками смоллмани и пусть будет полупустой.
Технически пивот в вашем случае в любой версии ms sql реализуется запросом из 20 left join.
Причем очень эффективно.

Есть пивот в верси. 2008, но там изврат.
А хорший есть толи в 2016 толи в 2018.
Пытаюсь сделать лефт джойны без дубликатов и фиктивных агрегаций, что-то не получается.
...
Рейтинг: 0 / 0
16.07.2022, 01:41
    #89492
Deff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Просто Трёп  14.07.2022, 13:48
[игнорируется]
Deff  14.07.2022, 12:44
[игнорируется]
Просто Трёп  11.07.2022, 19:34
[игнорируется]
Пока что решил сделать одну таблицу с 20 колонками смоллмани и пусть будет полупустой.
По мне так очень плохая идея. Pivot не страшно. С unpivot потом замучаешься.
Лень всё минусы расписывать - просто не делай так.
А ты не ленись. Я как представлю что у меня в таблице будет 20 одинаковых datetime вместо одного, мне грустно становится.
у тебя в таблице 20 полей, и весь код по обслуживанию этих 20 полей надо написать. Много кода, и ты его написал.
А потом тебе надо добавить ещё 3 поля и доработать весь код.
В вертикальной таблице такой проблемы не будет. Всё будет лаконично. Кубы сами отлично работают с таким форматом. Это стандарт.
...
Изменено: 16.07.2022, 01:42 - Deff
Рейтинг: 0 / 0
16.07.2022, 01:44
    #89497
Deff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Просто Трёп  14.07.2022, 13:49
[игнорируется]
Да и нагрузка на сервер... 20 инсертов или 1.
Делай в одной транзакции 20 инсертов, и будет по скорости так же.
...
Рейтинг: 0 / 0
16.07.2022, 01:54
    #89505
Deff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Данные тебе в любом случае понадобятся как в вертикальном виде, так и в горизонтальном. Из опыта считаю из вертикального перевернуть в горизонтальное проще pivot, чем наоборот unpivot. И по удобству, и по скорости.
...
Рейтинг: 0 / 0
16.07.2022, 01:55
    #89507
Deff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Просто Трёп  14.07.2022, 16:48
[игнорируется]
Sparrow  11.07.2022, 20:06
[игнорируется]
Просто Трёп  11.07.2022, 19:34
[игнорируется]
Пока что решил сделать одну таблицу с 20 колонками смоллмани и пусть будет полупустой.
Технически пивот в вашем случае в любой версии ms sql реализуется запросом из 20 left join.
Причем очень эффективно.

Есть пивот в верси. 2008, но там изврат.
А хорший есть толи в 2016 толи в 2018.
Пытаюсь сделать лефт джойны без дубликатов и фиктивных агрегаций, что-то не получается.
Это по скорости не очень.
...
Рейтинг: 0 / 0
19.07.2022, 18:43
    #93313
cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Что делать с кучей данных из разных источников?
У меня получилось 4 таблицы
Код: SQL
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE Источник (
    ИсточникКод              INTEGER  PRIMARY KEY AUTOINCREMENT,
    ИсточникИмя              VARCHAR,
    КоличествоЗамеров        INTEGER,
    ДатаВводаВЭксплуатацию   DATETIME,
    ДатаВыводаИзЭксплуатации DATETIME
);
Даты важны, что бы при случае отбрехаться, от: "Почему нет данных за 1990-ый год?"
У каждого источника есть свое количество замеров

Каждый замер - единичное событие
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE Замер (
    ИсточникКод    INTEGER,
    ЗамерКод       INTEGER  PRIMARY KEY AUTOINCREMENT,
    ЗамерДатаВремя DATETIME
);
CREATE UNIQUE INDEX Инд_ИсточникЗамер ON Замер (
    ИсточникКод,
    ЗамерКод
);
В единичном замере много показателей
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE Показатель (
    ЗамерКод        INTEGER,
    ПоказательНомер INTEGER,
    Показатель      DECIMAL,
    PRIMARY KEY (
        ЗамерКод,
        ПоказательНомер
    )
);
Человек не обязан запоминать, что там означает "показатель№1" у источник "Фигатор"
Поэтому нужен словарь
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE ПоказательОписание (
    ИсточникКод        INTEGER,
    ПоказательНомер    INTEGER,
    ПоказательОписание VARCHAR,
    PRIMARY KEY (
        ИсточникКод,
        ПоказательНомер
    )
);
...
Изменено: 19.07.2022, 18:45 - cat2
Рейтинг: 0 / 0
19.07.2022, 20:08
    #93470
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Обвязку недолго сделать. Главный вопрос, что делать с группами, когда берутся единовременно 20 замеров. Подготовил пару запросиков, данные как раз набежали, завтра посмотрим, какой вариант быстрее. Самый медленный - явно с джойнами.
...
Рейтинг: 0 / 0
20.07.2022, 10:37
    #93819
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Данных мало. всего 2700 строк в результирующей таблице.
Первый запрос - чисто посмотреть на время выполнения селекта из таблицы с одним столбцом, там в 4 раза больше строк.
Последний - селект из таблицы с четырьмя столбцами.
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
---------------------------------------------------------------------------------------------------------------------------------------
print 'simple in -----------------------------------------------------'
set statistics time on

select adt, s_id, tem from tlog
where s_id in (5, 6, 7, 8) and adt > '2022-07-14 10:55:23.400'
order by 1 asc

set statistics time off
---------------------------------------------------------------------------------------------------------------------------------------
print 'joins -----------------------------------------------------'
set statistics time on

select distinct t.adt, t1.tem v1, t2.tem v2, t3.tem v3, t4.tem v4
from tlog t
  left join tlog t1 on t.adt = t1.adt and t1.s_id = 5
  left join tlog t2 on t.adt = t2.adt and t2.s_id = 6
  left join tlog t3 on t.adt = t3.adt and t3.s_id = 7
  left join tlog t4 on t.adt = t4.adt and t4.s_id = 8
where t.adt > '2022-07-14 10:55:23.400' and t.s_id in (5, 6, 7, 8)
order by 1

set statistics time off
---------------------------------------------------------------------------------------------------------------------------------------
print 'pivot with fake aggr -----------------------------------------------------'
set statistics time on

  ;with t as (
  select adt, s_id, tem from tlog where s_id in (5, 6, 7, 8) and adt > '2022-07-14 10:55:23.400'
  )
  select adt adt, [5] v1, [6] v2, [7] v3, [8] v4 from t pivot (max(tem) for s_id in ([5], [6], [7], [8])) P

set statistics time off
---------------------------------------------------------------------------------------------------------------------------------------
print 'case with fake aggr -----------------------------------------------------'
set statistics time on

;with t as (
select adt
  ,case when s_id = 5 then tem end v1
  ,case when s_id = 6 then tem end v2
  ,case when s_id = 7 then tem end v3
  ,case when s_id = 8 then tem end v4
from tlog where adt > '2022-07-14 10:55:23.400' and s_id in (5, 6, 7, 8))
select adt, max(v1), max(v2), max(v3), max(v4) from t
group by adt
order by 1

set statistics time off
---------------------------------------------------------------------------------------------------------------------------------------
print 'optimal -----------------------------------------------------'
set statistics time on

select adt, v1, v2, v3, v4 from l_val4 where adt > '2022-07-14 10:55:23.400' and g_id = 1

set statistics time off
---------------------------------------------------------------------------------------------------------------------------------------
simple in ----------------------------------------------------- (11088 row(s) affected) SQL Server Execution Times: CPU time = 0 ms, elapsed time = 12 ms. joins ----------------------------------------------------- (2772 row(s) affected) SQL Server Execution Times: CPU time = 31 ms, elapsed time = 33 ms. pivot with fake aggr ----------------------------------------------------- (2772 row(s) affected) SQL Server Execution Times: CPU time = 16 ms, elapsed time = 11 ms. case with fake aggr ----------------------------------------------------- (2772 row(s) affected) SQL Server Execution Times: CPU time = 0 ms, elapsed time = 12 ms. optimal ----------------------------------------------------- (2773 row(s) affected) SQL Server Execution Times: CPU time = 0 ms, elapsed time = 6 ms.
Получается, нет ничего быстрее таблицы с количеством столбцов, соответствующим количеству замеров в группе. Но case с фиктивными аггрегациями тоже неплох. А pivot тоже подгружает ЦП, но не так сильно, как join.
...
Рейтинг: 0 / 0
20.07.2022, 16:34
    #94228
Дед-Папыхтет
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Просто Трёп  11.07.2022, 14:00
[игнорируется]
Есть несколько источников, с которых с разной периодичностью берутся показатели. Показатель, в общем-то, один, просто число.
Источники разных типов.
1. Простой. Один замер - один показатель.
2. Двойной. Один замер - два показателя.
3. Сложный. Один замер - от 4 до 20 показателей.

Как их хранить? На данный момент есть источники с 1, 2 и 4 показателями. Все хранятся в одной таблице, каждый со своим айдишником (для этого и был нужен пивот). Но вот предстоит добавить источник с 13 показателями. Хочется создать для него таблицу, но это как-то неправильно. Но и пихать его в общую таблицу как-то некомильфо, потому что выборки, если будут использовать этот источник, скорее всего, все 13 показателей и возьмут. И будут их разворачивать пивотом.

Плюс еще непонятно, как формировать выборки по желанию пользователя. Тут или динамический код, или трехзвенка. Вообще жесть.
Типовая задача ETL - загружай из разных источников по расписанию свежие данные в единую БД
...
Рейтинг: 0 / 0
20.07.2022, 16:49
    #94234
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Дед-Папыхтет  20.07.2022, 16:34
[игнорируется]
Просто Трёп  11.07.2022, 14:00
[игнорируется]
Есть несколько источников, с которых с разной периодичностью берутся показатели. Показатель, в общем-то, один, просто число.
Источники разных типов.
1. Простой. Один замер - один показатель.
2. Двойной. Один замер - два показателя.
3. Сложный. Один замер - от 4 до 20 показателей.

Как их хранить? На данный момент есть источники с 1, 2 и 4 показателями. Все хранятся в одной таблице, каждый со своим айдишником (для этого и был нужен пивот). Но вот предстоит добавить источник с 13 показателями. Хочется создать для него таблицу, но это как-то неправильно. Но и пихать его в общую таблицу как-то некомильфо, потому что выборки, если будут использовать этот источник, скорее всего, все 13 показателей и возьмут. И будут их разворачивать пивотом.

Плюс еще непонятно, как формировать выборки по желанию пользователя. Тут или динамический код, или трехзвенка. Вообще жесть.
Типовая задача ETL - загружай из разных источников по расписанию свежие данные в единую БД
Привет! Рад видеть!
Это понятно, что в единую БД. Сколько столбцов делать в таблице?
Все в один столбец, а потом разворачивать пивотом (или кейсами), или все-таки для групп замеров, которые делаются единомоментно, и будут выбираться потом все скопом, делать много столбцов?
...
Рейтинг: 0 / 0
20.07.2022, 18:23
    #94272
PaNik
Участник
[игнорирует гостей]
[не активирован]
[неодобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Просто Трёп  20.07.2022, 16:49
[игнорируется]
Дед-Папыхтет  20.07.2022, 16:34
[игнорируется]
Просто Трёп  11.07.2022, 14:00
[игнорируется]
Есть несколько источников, с которых с разной периодичностью берутся показатели. Показатель, в общем-то, один, просто число.
Источники разных типов.
1. Простой. Один замер - один показатель.
2. Двойной. Один замер - два показателя.
3. Сложный. Один замер - от 4 до 20 показателей.

Как их хранить? На данный момент есть источники с 1, 2 и 4 показателями. Все хранятся в одной таблице, каждый со своим айдишником (для этого и был нужен пивот). Но вот предстоит добавить источник с 13 показателями. Хочется создать для него таблицу, но это как-то неправильно. Но и пихать его в общую таблицу как-то некомильфо, потому что выборки, если будут использовать этот источник, скорее всего, все 13 показателей и возьмут. И будут их разворачивать пивотом.

Плюс еще непонятно, как формировать выборки по желанию пользователя. Тут или динамический код, или трехзвенка. Вообще жесть.
Типовая задача ETL - загружай из разных источников по расписанию свежие данные в единую БД
Привет! Рад видеть!
Это понятно, что в единую БД. Сколько столбцов делать в таблице?
Все в один столбец, а потом разворачивать пивотом (или кейсами), или все-таки для групп замеров, которые делаются единомоментно, и будут выбираться потом все скопом, делать много столбцов?
Ставь опыты на данных порядка хотя бы несколько млн записей
...
Рейтинг: 0 / 0
21.07.2022, 13:33
    #94984
cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Что делать с кучей данных из разных источников?
Продолжайте жрать кактус
...
Рейтинг: 0 / 0
21.07.2022, 14:51
    #95069
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
cat2  21.07.2022, 13:33
[игнорируется]
Продолжайте жрать кактус
Костя, а че ты смеешься? Вот у тебя 20 замеров, сделанные единовременно. 90% селектов по этим замерам будут делаться так:
Код: SQL
1.
селект все 20 замеров где время битвин трам-пам-пам
Причем возвращаться будут тысячи строк. Остальные 10% - это возможно аналитика через курсоры. Хотя вряд-ли она будет на скуле, скорее в стороннем приложении.
У тебя нет мысли, что лучше все-таки сделать таблицу с 20-ю столбцами, чем хранить все в одном столбце?
...
Рейтинг: 0 / 0
21.07.2022, 14:52
    #95070
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
...
Рейтинг: 0 / 0
21.07.2022, 14:57
    #95073
IT-Христ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Я бы подумал таблицу для исходных данных и таблицу для сводных, наподобие регистра.
В принципе, сделать три таблицы,
Первая это список показателей.
Вторая это измерение, но без чисел
Третья это само измерение, с типом показателя(первая таблица), номером измерения(вторая таблица) и измеренным числом

Тогда одно измерение будет одна запись во второй таблице и сколько там измерений в третьей.
...
Изменено: 21.07.2022, 14:58 - IT-Христ
Рейтинг: 0 / 0
21.07.2022, 17:46
    #95347
Дед-Папыхтет
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Просто Трёп  20.07.2022, 16:49
[игнорируется]
Дед-Папыхтет  20.07.2022, 16:34
[игнорируется]
Просто Трёп  11.07.2022, 14:00
[игнорируется]
Есть несколько источников, с которых с разной периодичностью берутся показатели. Показатель, в общем-то, один, просто число.
Источники разных типов.
1. Простой. Один замер - один показатель.
2. Двойной. Один замер - два показателя.
3. Сложный. Один замер - от 4 до 20 показателей.

Как их хранить? На данный момент есть источники с 1, 2 и 4 показателями. Все хранятся в одной таблице, каждый со своим айдишником (для этого и был нужен пивот). Но вот предстоит добавить источник с 13 показателями. Хочется создать для него таблицу, но это как-то неправильно. Но и пихать его в общую таблицу как-то некомильфо, потому что выборки, если будут использовать этот источник, скорее всего, все 13 показателей и возьмут. И будут их разворачивать пивотом.

Плюс еще непонятно, как формировать выборки по желанию пользователя. Тут или динамический код, или трехзвенка. Вообще жесть.
Типовая задача ETL - загружай из разных источников по расписанию свежие данные в единую БД
Привет! Рад видеть!
Это понятно, что в единую БД. Сколько столбцов делать в таблице?
Все в один столбец, а потом разворачивать пивотом (или кейсами), или все-таки для групп замеров, которые делаются единомоментно, и будут выбираться потом все скопом, делать много столбцов?
Слушай ну замеры типовая структура может я что то у тебя не понимаю обычно

id bigint identity primary key,
dt datetime default getdate(),
counter_id int/smallint
value float/numeric

думаю в эту структуру набор измерений можно запихать весь
...
Рейтинг: 0 / 0
21.07.2022, 17:51
    #95350
Дед-Папыхтет
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что делать с кучей данных из разных источников?
Ну и.... наверное для этой таблицы можно въебенить колоночный кластерный индекс.

create table measures
(
id bigint not null identity, -- айди замера
counter_id int not null, -- айди прибора измерения, если приборов несколько типа и напряжение и ток, то у этого прибора два counter_id
dt datetime not null default getdate(),
val numeric(10,4) not null
)
create columnstore clustered index ix_measures on measures

здесь в куче этой шляпы колоночный кластерный индекс хорошо влазит - быстрая агрегация будет да и каждое поле проиндексировано, и места мизер будет на диске - очень высокая компрессия. колоночные индексы апдейты не любят, а инсерты отлично переносят, а селекты вашпе бонба, и лярды записей будут вылетать
...
Рейтинг: 0 / 0
21.07.2022, 18:41
    #95387
cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Что делать с кучей данных из разных источников?
Просто Трёп  21.07.2022, 14:51
[игнорируется]
cat2  21.07.2022, 13:33
[игнорируется]
Продолжайте жрать кактус
Костя, а че ты смеешься? Вот у тебя 20 замеров, сделанные единовременно. 90% селектов по этим замерам будут делаться так:
Код: SQL
1.
селект все 20 замеров где время битвин трам-пам-пам
Причем возвращаться будут тысячи строк. Остальные 10% - это возможно аналитика через курсоры. Хотя вряд-ли она будет на скуле, скорее в стороннем приложении.
У тебя нет мысли, что лучше все-таки сделать таблицу с 20-ю столбцами, чем хранить все в одном столбце?
Ну сделать в предлагаемой мною системе в таблице "Замер" индекс по полю "ЗамерДатаВремя" и все летать будет.
Вы же упорно пытаетесь оптимизировать работу безграмотно построенной базы.
Лучше один раз напрячься и переделать базу, чем годами тащить унаследованные ошибки проектирования
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [закрыт для гостей] / Что делать с кучей данных из разных источников? / 36 сообщений из 36, показаны все 2 страниц
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Игнорируют тему (1): erbol
Читали форум (1): Анонимы (1)
Пользователи онлайн (87): Анонимы (85), Yandex Bot, Tosh 4 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]