|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Есть несколько источников, с которых с разной периодичностью берутся показатели. Показатель, в общем-то, один, просто число. Источники разных типов. 1. Простой. Один замер - один показатель. 2. Двойной. Один замер - два показателя. 3. Сложный. Один замер - от 4 до 20 показателей. Как их хранить? На данный момент есть источники с 1, 2 и 4 показателями. Все хранятся в одной таблице, каждый со своим айдишником (для этого и был нужен пивот). Но вот предстоит добавить источник с 13 показателями. Хочется создать для него таблицу, но это как-то неправильно. Но и пихать его в общую таблицу как-то некомильфо, потому что выборки, если будут использовать этот источник, скорее всего, все 13 показателей и возьмут. И будут их разворачивать пивотом. Плюс еще непонятно, как формировать выборки по желанию пользователя. Тут или динамический код, или трехзвенка. Вообще жесть. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2022, 14:00 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Когда брался за эту задачу, думал: "А, неделя делов." А если все по-уму делать, 1С придется с нуля написать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2022, 14:01 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Может, понаделать таблиц с 1, 2, 4, 5, 6 итд столбцами? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2022, 15:22 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Когда брался за эту задачу, думал: "А, неделя делов." А если все по-уму делать, 1С придется с нуля написать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2022, 15:33 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Скажем так, ТЗ есть, но плохо сформулировано. В процессе, такскать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2022, 15:43 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
А сколько места я в базе потеряю, если будет таблица на 20 smallmoney, из которых 60% будет null? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2022, 15:44 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Есть несколько источников, с которых с разной периодичностью берутся показатели. Показатель, в общем-то, один, просто число. Источники разных типов. 1. Простой. Один замер - один показатель. 2. Двойной. Один замер - два показателя. 3. Сложный. Один замер - от 4 до 20 показателей. Как их хранить? На данный момент есть источники с 1, 2 и 4 показателями. Все хранятся в одной таблице, каждый со своим айдишником (для этого и был нужен пивот). Но вот предстоит добавить источник с 13 показателями. Хочется создать для него таблицу, но это как-то неправильно. Но и пихать его в общую таблицу как-то некомильфо, потому что выборки, если будут использовать этот источник, скорее всего, все 13 показателей и возьмут. И будут их разворачивать пивотом. Плюс еще непонятно, как формировать выборки по желанию пользователя. Тут или динамический код, или трехзвенка. Вообще жесть. Можно много таблиц делать . Там по идеее нужно время иметь. Сколько показаний в сутки, в год, новых сыплется в систему? ... |
|||
:
Изменено: 11.07.2022, 18:33 - Sparrow
Нравится:
Не нравится:
|
|||
11.07.2022, 18:31 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Яб сделал Табличку: Тип источника, Тип замера, Тип показателя Время ввода, Значение А отчеты и отображение дело вторичное. ... |
|||
:
Изменено: 11.07.2022, 18:45 - Sparrow
Нравится:
Не нравится:
|
|||
11.07.2022, 18:42 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Пивот, это дело клиента, эксел и любая отчетная система умеют делать пивот. И 1с ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2022, 18:59 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Сколько показаний в сутки, в год, новых сыплется в систему? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2022, 19:30 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
А отчеты и отображение дело вторичное. Пивот, это дело клиента, эксел и любая отчетная система умеют делать пивот. И 1с ... |
|||
:
Изменено: 11.07.2022, 19:32 - Просто Трёп
Нравится:
Не нравится:
|
|||
11.07.2022, 19:31 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Можно по принципу 1С пойти, сделать типа регистра, где сводные данные иметь. А например, годовой давности данные убирать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2022, 19:32 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Можно по принципу 1С пойти, сделать типа регистра, где сводные данные иметь. А например, годовой давности данные убирать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2022, 19:33 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Пока что решил сделать одну таблицу с 20 колонками смоллмани и пусть будет полупустой. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2022, 19:34 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Пока что решил сделать одну таблицу с 20 колонками смоллмани и пусть будет полупустой. Причем очень эффективно. Есть пивот в верси. 2008, но там изврат. А хорший есть толи в 2016 толи в 2018. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2022, 20:06 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Пока что решил сделать одну таблицу с 20 колонками смоллмани и пусть будет полупустой. Лень всё минусы расписывать - просто не делай так. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2022, 12:44 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Пока что решил сделать одну таблицу с 20 колонками смоллмани и пусть будет полупустой. Лень всё минусы расписывать - просто не делай так. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2022, 13:48 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Да и нагрузка на сервер... 20 инсертов или 1. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2022, 13:49 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Пока что решил сделать одну таблицу с 20 колонками смоллмани и пусть будет полупустой. Причем очень эффективно. Есть пивот в верси. 2008, но там изврат. А хорший есть толи в 2016 толи в 2018. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2022, 16:48 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Пока что решил сделать одну таблицу с 20 колонками смоллмани и пусть будет полупустой. Лень всё минусы расписывать - просто не делай так. А потом тебе надо добавить ещё 3 поля и доработать весь код. В вертикальной таблице такой проблемы не будет. Всё будет лаконично. Кубы сами отлично работают с таким форматом. Это стандарт. ... |
|||
:
Изменено: 16.07.2022, 01:42 - Deff
Нравится:
Не нравится:
|
|||
16.07.2022, 01:41 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Да и нагрузка на сервер... 20 инсертов или 1. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2022, 01:44 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Данные тебе в любом случае понадобятся как в вертикальном виде, так и в горизонтальном. Из опыта считаю из вертикального перевернуть в горизонтальное проще pivot, чем наоборот unpivot. И по удобству, и по скорости. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2022, 01:54 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Пока что решил сделать одну таблицу с 20 колонками смоллмани и пусть будет полупустой. Причем очень эффективно. Есть пивот в верси. 2008, но там изврат. А хорший есть толи в 2016 толи в 2018. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2022, 01:55 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
У меня получилось 4 таблицы Код: SQL 1. 2. 3. 4. 5. 6. 7.
У каждого источника есть свое количество замеров Каждый замер - единичное событие Код: SQL 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: SQL 1. 2. 3. 4. 5. 6. 7. 8. 9.
Поэтому нужен словарь Код: SQL 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Изменено: 19.07.2022, 18:45 - cat2
Нравится:
Не нравится:
|
|||
19.07.2022, 18:43 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Обвязку недолго сделать. Главный вопрос, что делать с группами, когда берутся единовременно 20 замеров. Подготовил пару запросиков, данные как раз набежали, завтра посмотрим, какой вариант быстрее. Самый медленный - явно с джойнами. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2022, 20:08 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Данных мало. всего 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.
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.... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2022, 10:37 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Есть несколько источников, с которых с разной периодичностью берутся показатели. Показатель, в общем-то, один, просто число. Источники разных типов. 1. Простой. Один замер - один показатель. 2. Двойной. Один замер - два показателя. 3. Сложный. Один замер - от 4 до 20 показателей. Как их хранить? На данный момент есть источники с 1, 2 и 4 показателями. Все хранятся в одной таблице, каждый со своим айдишником (для этого и был нужен пивот). Но вот предстоит добавить источник с 13 показателями. Хочется создать для него таблицу, но это как-то неправильно. Но и пихать его в общую таблицу как-то некомильфо, потому что выборки, если будут использовать этот источник, скорее всего, все 13 показателей и возьмут. И будут их разворачивать пивотом. Плюс еще непонятно, как формировать выборки по желанию пользователя. Тут или динамический код, или трехзвенка. Вообще жесть. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2022, 16:34 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Есть несколько источников, с которых с разной периодичностью берутся показатели. Показатель, в общем-то, один, просто число. Источники разных типов. 1. Простой. Один замер - один показатель. 2. Двойной. Один замер - два показателя. 3. Сложный. Один замер - от 4 до 20 показателей. Как их хранить? На данный момент есть источники с 1, 2 и 4 показателями. Все хранятся в одной таблице, каждый со своим айдишником (для этого и был нужен пивот). Но вот предстоит добавить источник с 13 показателями. Хочется создать для него таблицу, но это как-то неправильно. Но и пихать его в общую таблицу как-то некомильфо, потому что выборки, если будут использовать этот источник, скорее всего, все 13 показателей и возьмут. И будут их разворачивать пивотом. Плюс еще непонятно, как формировать выборки по желанию пользователя. Тут или динамический код, или трехзвенка. Вообще жесть. Это понятно, что в единую БД. Сколько столбцов делать в таблице? Все в один столбец, а потом разворачивать пивотом (или кейсами), или все-таки для групп замеров, которые делаются единомоментно, и будут выбираться потом все скопом, делать много столбцов? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2022, 16:49 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Есть несколько источников, с которых с разной периодичностью берутся показатели. Показатель, в общем-то, один, просто число. Источники разных типов. 1. Простой. Один замер - один показатель. 2. Двойной. Один замер - два показателя. 3. Сложный. Один замер - от 4 до 20 показателей. Как их хранить? На данный момент есть источники с 1, 2 и 4 показателями. Все хранятся в одной таблице, каждый со своим айдишником (для этого и был нужен пивот). Но вот предстоит добавить источник с 13 показателями. Хочется создать для него таблицу, но это как-то неправильно. Но и пихать его в общую таблицу как-то некомильфо, потому что выборки, если будут использовать этот источник, скорее всего, все 13 показателей и возьмут. И будут их разворачивать пивотом. Плюс еще непонятно, как формировать выборки по желанию пользователя. Тут или динамический код, или трехзвенка. Вообще жесть. Это понятно, что в единую БД. Сколько столбцов делать в таблице? Все в один столбец, а потом разворачивать пивотом (или кейсами), или все-таки для групп замеров, которые делаются единомоментно, и будут выбираться потом все скопом, делать много столбцов? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2022, 18:23 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Продолжайте жрать кактус ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2022, 13:33 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Продолжайте жрать кактус Код: SQL 1.
У тебя нет мысли, что лучше все-таки сделать таблицу с 20-ю столбцами, чем хранить все в одном столбце? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2022, 14:51 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2022, 14:52 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Я бы подумал таблицу для исходных данных и таблицу для сводных, наподобие регистра. В принципе, сделать три таблицы, Первая это список показателей. Вторая это измерение, но без чисел Третья это само измерение, с типом показателя(первая таблица), номером измерения(вторая таблица) и измеренным числом Тогда одно измерение будет одна запись во второй таблице и сколько там измерений в третьей. ... |
|||
:
Изменено: 21.07.2022, 14:58 - IT-Христ
Нравится:
Не нравится:
|
|||
21.07.2022, 14:57 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Есть несколько источников, с которых с разной периодичностью берутся показатели. Показатель, в общем-то, один, просто число. Источники разных типов. 1. Простой. Один замер - один показатель. 2. Двойной. Один замер - два показателя. 3. Сложный. Один замер - от 4 до 20 показателей. Как их хранить? На данный момент есть источники с 1, 2 и 4 показателями. Все хранятся в одной таблице, каждый со своим айдишником (для этого и был нужен пивот). Но вот предстоит добавить источник с 13 показателями. Хочется создать для него таблицу, но это как-то неправильно. Но и пихать его в общую таблицу как-то некомильфо, потому что выборки, если будут использовать этот источник, скорее всего, все 13 показателей и возьмут. И будут их разворачивать пивотом. Плюс еще непонятно, как формировать выборки по желанию пользователя. Тут или динамический код, или трехзвенка. Вообще жесть. Это понятно, что в единую БД. Сколько столбцов делать в таблице? Все в один столбец, а потом разворачивать пивотом (или кейсами), или все-таки для групп замеров, которые делаются единомоментно, и будут выбираться потом все скопом, делать много столбцов? id bigint identity primary key, dt datetime default getdate(), counter_id int/smallint value float/numeric думаю в эту структуру набор измерений можно запихать весь ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2022, 17:46 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Ну и.... наверное для этой таблицы можно въебенить колоночный кластерный индекс. 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 здесь в куче этой шляпы колоночный кластерный индекс хорошо влазит - быстрая агрегация будет да и каждое поле проиндексировано, и места мизер будет на диске - очень высокая компрессия. колоночные индексы апдейты не любят, а инсерты отлично переносят, а селекты вашпе бонба, и лярды записей будут вылетать ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2022, 17:51 |
|
Что делать с кучей данных из разных источников?
|
|||
---|---|---|---|
#18+
Продолжайте жрать кактус Код: SQL 1.
У тебя нет мысли, что лучше все-таки сделать таблицу с 20-ю столбцами, чем хранить все в одном столбце? Вы же упорно пытаетесь оптимизировать работу безграмотно построенной базы. Лучше один раз напрячься и переделать базу, чем годами тащить унаследованные ошибки проектирования ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2022, 18:41 |
|
|
start [/forum/topic.php?all=1&fid=17&tid=2996]: |
0ms |
get settings: |
23ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
2339ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 2444ms |
0 / 0 |