powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Измерение по полю datetime - жуткий изврат или нет?
21 сообщений из 21, страница 1 из 1
Измерение по полю datetime - жуткий изврат или нет?
    #39927785
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, тут вопрос возник - а создавать измерение по полю datetime - жуткий изврат или нет? А то данные даты-времени по всем объектам - это поля datetime.
Соответственно, пока основная мысль - выделить date из datetime в отдельные поля и по ним стандартное измерение даты построить, а оригинальные поля datetime сохранить как дополнительные атрибуты в измерениях объектов.
Есть вторая мысль - переводим datetime в целое число секунд, прошедших с 01.01.1970, и получаем доп. измерение "SecCount int, ObjectDateTime datetime". Ясен Хаос, что миллисекунды отбрасываются. Но сама такая мысль мне не нравится, так как тут и заморочки с вычислением годов, месяцев года, и т.п., и число строк вырастает очень сильно по сравнению с обычным измерением даты, и измерение становится постоянно пополняемым.
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39927899
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi,

вопрос не том изврат, или нет, а нужно оно бизнесу или нет
пару раз создавал детализацию до часа, но чтобы до секундно?
может им прямой отчет нужен, а не аналитический куб?
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39927900
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi
и измерение становится постоянно пополняемым.

можно отдельно создать измерения "часы", "минуты", "секунды" и тогда их не надо пополнять вообще
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39927990
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarikNavy
DaniilSeryi,

вопрос не том изврат, или нет, а нужно оно бизнесу или нет
пару раз создавал детализацию до часа, но чтобы до секундно?
может им прямой отчет нужен, а не аналитический куб?


Сначала речь шла о прямом отчёте, потом заговорили о кубе.
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39927992
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarikNavy
DaniilSeryi
и измерение становится постоянно пополняемым.

можно отдельно создать измерения "часы", "минуты", "секунды" и тогда их не надо пополнять вообще


Крайне интересно. И решает кучу вопросов и проблем.
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928042
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi,

Все проекты, которые я видел, делались на дате cконвертированной в INT. 20191231

В OLAP есть KeyField, NameField, DataField, SortField -- все могут быть разными. Обычно дату как дату кладут в DataField.
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928086
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin,

+1, только я не видел, а так и делаю. кроме того измерение сделано заранее на месяц или год вперед (в разных проектах)
поэтому дополнять часто не надо.
в сверх-оперативном проекте, дата на месяц вперед, время отдельно (в одном измерении, а не разных) и в допобработках не нуждается, так же как и дата, приведена к типу int.
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928143
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin, ShIgor

Слепое следование рекомендациям двадцатилетней давности. Давно уже есть "короткий" тип date.
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928210
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик,

+1
это наверное который трёх-байтный (date) или 4-х байтный (smalldatetime, ближе к вопросу ТСа) против 4x байтного int - вполне хватает для реальных бизнес диапазонов компаниям не торгующим с дореволюционных времён
https://docs.microsoft.com/en-us/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql?view=sql-server-ver15
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928211
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p.s. по факту даже те-же в отсталом технологическом цикле легаси меняют каждые лет 20-30,
а уж о большинстве организаций так миграция практически нескончаемая каждые лет 5..
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928215
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полный диапазон 4х байтного int (4 млрд.) вполне умещается в 150 лет посекундно.
а 2х байтного smallint (-32К~+32К или 2^16 >> 65536) хватает на почти на 180 лет для date но не вмещает полный посекундный день
если лениво делать всё отдельно (часы/минуты/дни-годы) то получaтся те-же 4 байта 1B(tinyint)+1B(tinyint)+2B(smallint), причём в различных ключах (т.е. дороже)
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928222
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
п.п.с.
у меня в табличных моделях (с учётом In-Memory, на одну модель сервера от 32GB, хотя есть и по 16GB, но фокус на CPU уже больше)
в последнее время в измерениях по ключу счёт уже пошел на десятки миллионов (до сотни не дотягиваем)
с учётом возможности партиционирования табличной модели - в принципе по стресс-тестам на латентность
(от выстрела запроса в сессию, до получения полного result/dataset на клиенте)
работает вполне приемлемо (по крайней мере для наших целей).
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928225
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик, vikkiv

вроде взрослые люди.. какой короткий тип (про биты вообще молчу).. мы про SSAS, а не про SQL. нет в нем никаких других типов даты, и все 20 с лишним лет не менялся никогда. причем даже прямого соответствия SQL типу нет. В SSAS Datetime это OLE-шный date с внутренним хранением в типе double (8!!! байт).
да и рекомендации никуда не делись - int самый быстрый для SSAS тип ключа.

я про MD, если че...
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928229
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял, что выше несколько отошли от темы - включили в обсуждение и само хранилище. В нем я сейчас делаю только date и перевожу старые таблицы на него, если бизнес-требования это позволяют.

При процессинге MD-проектов, наверное, лучше конвертить в такой int, благо, затраты cpu на это невелики, но тесты я не проводил. Если у кого есть результаты хотя бы по изменению объему куба, то было бы интересно ознакомиться.
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928252
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgor,

ну да, немного унесло, так-то если в пределах MD оставаться то получается выбор
8 байтов (BigInt,Currency,Date,Double), 4 байта (Integer, Single), 2 байта (SmallInt) и 1 байт (TinyInt)
А если только ключами измерения мерить то и того меньше по типам (но то-же по байтам)
Для сценария с единственным измерением получается подходят типы только начиная с 4х байтных
(в 2х байтные даже год посекундно не поместишь)
покрывают требования до 136 лет, но 4х миллиардно-ключевое измерение железо навряд-ли нормально потянет,
и скажем на 3 года посекундно полным измерением без пропусков нужно будет
почти 100 млн. строк ключа уместить в измерении, т.е. довольно проблематично
однако реально с учётом не полного дня и рабочего цикла/плотности событий там за 3 года максимум
2-3% из ключей потребуется, т.е. на миллиона три вполне вероятно придётся измерение делать (по млн. на год)

Несколькими сообщениями выше указанный сценарий разбивать на несколько измерений
(два с date/time, или три/4 до часы/минуты/до экстрима:секунды {role-playing с минутами})
- то больше ключей в факты на партиции
т.е. +нагрузка на storage engine, но при этом для In-Memory измерений жизнь намного легче получается.
так что как оптимально сбалансировать разбиение между измерениями/типами данных - зависит от плотности событий в бизнес-процессах компании
но не под все сценарии навигации решения подойдёт, т.к. часто разными измерениями пользоваться будет сильно проблематично
напр. для выбора диапазона событий с 27/12/2019 04:45 ~ до 14/02/2020 17:04
придётся на клиенте/front-end поднапрячься чтобы ненароком не исключить остальные дни по времени
(с датами просто, с измерением часы/минуты - не нужные заморочки, но если в требованиях нет фильтрации часов/минут а только вывод нужен - то проблемы нет)

https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/olap-physical/data-types-in-analysis-services?view=asallproducts-allversions

https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/data-sources-and-bindings-ssas-multidimensional?view=asallproducts-allversions

https://docs.microsoft.com/en-us/analysis-services/tabular-models/data-types-supported-ssas-tabular?view=asallproducts-allversions

TypeBytesBigInt8Currency8Date8Double8Integer4Single4Smallint2Tinyint1
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928300
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin
DaniilSeryi,

Все проекты, которые я видел, делались на дате cконвертированной в INT. 20191231

В OLAP есть KeyField, NameField, DataField, SortField -- все могут быть разными. Обычно дату как дату кладут в DataField.


Проблема не с датами, а с временем.
Пока руки мыл, оформилась окончательно мысль отдельное измерение для времени создать. Если только часы и минуты хранить, то получаем 24*60=1440 записей, что вполне приемлемо, imho. С секундами 24*60*60=86400 записей, но к чему нужна такая точность? Не космические корабли запускаем, и вообще не запускаем, а фиксируем, и даже не фиксируем, а отчётность на основе чужих данных строим, и есть предположение, что будет востребовано заказчиками только измерение дат.
Получаем в итоге отдельно измерение даты и отдельно измерение времени, что даёт возможность гибко настраивать кучу самых разных выгрузок и отчётов.
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928303
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем огромная искренняя благодарность за идеи и их обсуждения.
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928437
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi,

еще пара хинтов:

в измерении времени кроме часов удобно бывает сделать еще атрибуты с интервалами в 5-10-15-30 минут
например, данные снимаются и/или записываются нерегулярно, где-то чаще, где-то реже и в отчетах поминутно получаются дыры, а по часам слишком большой интервал. агрегация данных более крупными частями чем минута помогает в таких случаях.

и/или второй вариант
еще одно измерение и группа мер: интервалы с начала суток + связи M2M с группами мер реальных данных
очень сильно помогает в случаях когда нужен накопительный итог на любую точку в конкретной дате.
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928562
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgor,

Интересная идея, надо будет обдумать.
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928565
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi,

Смотря для чего вам это нужно, возможно, устроит простая разбивка на рабочее и нерабочее время
...
Рейтинг: 0 / 0
Измерение по полю datetime - жуткий изврат или нет?
    #39928577
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критик
DaniilSeryi,

Смотря для чего вам это нужно, возможно, устроит простая разбивка на рабочее и нерабочее время


Тут из переписки выяснилось, что у заказчиков даже секунды/миллисекунды могут решать, м-да.
Придётся оригинальные поля datetime сохранить как дополнительные атрибуты в измерениях объектов, как, впрочем, и планировалось.
С другой стороны, эти нюансы уже не имеют отношения ни к оригинальному ТЗ отчёта, ни к кубу на его основе. А нового ТЗ до сих пор нет. И самое забавное - до сих пор непонятно, какие вообще меры в кубе будут.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Измерение по полю datetime - жуткий изврат или нет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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