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

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

Плюс еще непонятно, как формировать выборки по желанию пользователя. Тут или динамический код, или трехзвенка. Вообще жесть.
...
Рейтинг: 0 / 0
Что делать с кучей данных из разных источников?
    #84686
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда брался за эту задачу, думал: "А, неделя делов." А если все по-уму делать, 1С придется с нуля написать.
...
Рейтинг: 0 / 0
Что делать с кучей данных из разных источников?
    #84733
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, понаделать таблиц с 1, 2, 4, 5, 6 итд столбцами?
...
Рейтинг: 0 / 0
Что делать с кучей данных из разных источников?
    #84751
IT-Христ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  11.07.2022, 14:01
[игнорируется]
Когда брался за эту задачу, думал: "А, неделя делов." А если все по-уму делать, 1С придется с нуля написать.
У тебя ТЗ нету, в этом твои мучения . Сложно делать не знаю что не знаю зачем.
...
Рейтинг: 0 / 0
Что делать с кучей данных из разных источников?
    #84768
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IT-Христ  11.07.2022, 15:33
[игнорируется]
Просто Трёп  11.07.2022, 14:01
[игнорируется]
Когда брался за эту задачу, думал: "А, неделя делов." А если все по-уму делать, 1С придется с нуля написать.
У тебя ТЗ нету, в этом твои мучения . Сложно делать не знаю что не знаю зачем.
Скажем так, ТЗ есть, но плохо сформулировано. В процессе, такскать.
...
Рейтинг: 0 / 0
Что делать с кучей данных из разных источников?
    #84771
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А сколько места я в базе потеряю, если будет таблица на 20 smallmoney, из которых 60% будет null?
...
Рейтинг: 0 / 0
Что делать с кучей данных из разных источников?
    #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
Что делать с кучей данных из разных источников?
    #84916
Sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Яб сделал
Табличку:
Тип источника,
Тип замера,
Тип показателя
Время ввода,
Значение

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

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

Есть пивот в верси. 2008, но там изврат.
А хорший есть толи в 2016 толи в 2018.
Пытаюсь сделать лефт джойны без дубликатов и фиктивных агрегаций, что-то не получается.
...
Рейтинг: 0 / 0
Что делать с кучей данных из разных источников?
    #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
Что делать с кучей данных из разных источников?
    #89497
Deff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  14.07.2022, 13:49
[игнорируется]
Да и нагрузка на сервер... 20 инсертов или 1.
Делай в одной транзакции 20 инсертов, и будет по скорости так же.
...
Рейтинг: 0 / 0
Что делать с кучей данных из разных источников?
    #89505
Deff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Данные тебе в любом случае понадобятся как в вертикальном виде, так и в горизонтальном. Из опыта считаю из вертикального перевернуть в горизонтальное проще pivot, чем наоборот unpivot. И по удобству, и по скорости.
...
Рейтинг: 0 / 0
Что делать с кучей данных из разных источников?
    #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
Что делать с кучей данных из разных источников?
    #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
Что делать с кучей данных из разных источников?
    #93470
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обвязку недолго сделать. Главный вопрос, что делать с группами, когда берутся единовременно 20 замеров. Подготовил пару запросиков, данные как раз набежали, завтра посмотрим, какой вариант быстрее. Самый медленный - явно с джойнами.
...
Рейтинг: 0 / 0
Что делать с кучей данных из разных источников?
    #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
Что делать с кучей данных из разных источников?
    #94228
Дед-Папыхтет
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто Трёп  11.07.2022, 14:00
[игнорируется]
Есть несколько источников, с которых с разной периодичностью берутся показатели. Показатель, в общем-то, один, просто число.
Источники разных типов.
1. Простой. Один замер - один показатель.
2. Двойной. Один замер - два показателя.
3. Сложный. Один замер - от 4 до 20 показателей.

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

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

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

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

Тогда одно измерение будет одна запись во второй таблице и сколько там измерений в третьей.
...
Изменено: 21.07.2022, 14:58 - IT-Христ
Рейтинг: 0 / 0
Что делать с кучей данных из разных источников?
    #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
Что делать с кучей данных из разных источников?
    #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
Что делать с кучей данных из разных источников?
    #95387
cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гесты и игнорируемые идут по CSS
Просто Трёп  21.07.2022, 14:51
[игнорируется]
cat2  21.07.2022, 13:33
[игнорируется]
Продолжайте жрать кактус
Костя, а че ты смеешься? Вот у тебя 20 замеров, сделанные единовременно. 90% селектов по этим замерам будут делаться так:
Код: SQL
1.
селект все 20 замеров где время битвин трам-пам-пам
Причем возвращаться будут тысячи строк. Остальные 10% - это возможно аналитика через курсоры. Хотя вряд-ли она будет на скуле, скорее в стороннем приложении.
У тебя нет мысли, что лучше все-таки сделать таблицу с 20-ю столбцами, чем хранить все в одном столбце?
Ну сделать в предлагаемой мною системе в таблице "Замер" индекс по полю "ЗамерДатаВремя" и все летать будет.
Вы же упорно пытаетесь оптимизировать работу безграмотно построенной базы.
Лучше один раз напрячься и переделать базу, чем годами тащить унаследованные ошибки проектирования
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / Microsoft SQL Server [закрыт для гостей] / Что делать с кучей данных из разных источников?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Игнорируют тему (1): erbol
Читали форум (2): Анонимы (2)
Пользователи онлайн (62): Анонимы (53), unique, Сталкер, Yandex Bot, IT-Клоп, anonymous 3 мин., Неуловимый Джо 6 мин., S Baltiki 7 мин., Просто Трёп 8 мин., Ветер 9 мин.
x
x
Закрыть


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