Гость
Map
Форумы / Microsoft SQL Server [закрыт для гостей] / Что делать с кучей данных из разных источников? / 25 сообщений из 36, страница 1 из 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
Форумы / Microsoft SQL Server [закрыт для гостей] / Что делать с кучей данных из разных источников? / 25 сообщений из 36, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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