|
|
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
Коллеги, тут вопрос возник - а создавать измерение по полю datetime - жуткий изврат или нет? А то данные даты-времени по всем объектам - это поля datetime. Соответственно, пока основная мысль - выделить date из datetime в отдельные поля и по ним стандартное измерение даты построить, а оригинальные поля datetime сохранить как дополнительные атрибуты в измерениях объектов. Есть вторая мысль - переводим datetime в целое число секунд, прошедших с 01.01.1970, и получаем доп. измерение "SecCount int, ObjectDateTime datetime". Ясен Хаос, что миллисекунды отбрасываются. Но сама такая мысль мне не нравится, так как тут и заморочки с вычислением годов, месяцев года, и т.п., и число строк вырастает очень сильно по сравнению с обычным измерением даты, и измерение становится постоянно пополняемым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 09:51 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
DaniilSeryi, вопрос не том изврат, или нет, а нужно оно бизнесу или нет пару раз создавал детализацию до часа, но чтобы до секундно? может им прямой отчет нужен, а не аналитический куб? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 12:19 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
DaniilSeryi и измерение становится постоянно пополняемым. можно отдельно создать измерения "часы", "минуты", "секунды" и тогда их не надо пополнять вообще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 12:21 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
StarikNavy DaniilSeryi, вопрос не том изврат, или нет, а нужно оно бизнесу или нет пару раз создавал детализацию до часа, но чтобы до секундно? может им прямой отчет нужен, а не аналитический куб? Сначала речь шла о прямом отчёте, потом заговорили о кубе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 14:40 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
StarikNavy DaniilSeryi и измерение становится постоянно пополняемым. можно отдельно создать измерения "часы", "минуты", "секунды" и тогда их не надо пополнять вообще Крайне интересно. И решает кучу вопросов и проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 14:43 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
DaniilSeryi, Все проекты, которые я видел, делались на дате cконвертированной в INT. 20191231 В OLAP есть KeyField, NameField, DataField, SortField -- все могут быть разными. Обычно дату как дату кладут в DataField. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 15:44 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
a_voronin, +1, только я не видел, а так и делаю. кроме того измерение сделано заранее на месяц или год вперед (в разных проектах) поэтому дополнять часто не надо. в сверх-оперативном проекте, дата на месяц вперед, время отдельно (в одном измерении, а не разных) и в допобработках не нуждается, так же как и дата, приведена к типу int. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 16:51 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
a_voronin, ShIgor Слепое следование рекомендациям двадцатилетней давности. Давно уже есть "короткий" тип date. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 18:46 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
Критик, +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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 22:25 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
p.s. по факту даже те-же в отсталом технологическом цикле легаси меняют каждые лет 20-30, а уж о большинстве организаций так миграция практически нескончаемая каждые лет 5.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 22:27 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
полный диапазон 4х байтного int (4 млрд.) вполне умещается в 150 лет посекундно. а 2х байтного smallint (-32К~+32К или 2^16 >> 65536) хватает на почти на 180 лет для date но не вмещает полный посекундный день если лениво делать всё отдельно (часы/минуты/дни-годы) то получaтся те-же 4 байта 1B(tinyint)+1B(tinyint)+2B(smallint), причём в различных ключах (т.е. дороже) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 22:42 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
п.п.с. у меня в табличных моделях (с учётом In-Memory, на одну модель сервера от 32GB, хотя есть и по 16GB, но фокус на CPU уже больше) в последнее время в измерениях по ключу счёт уже пошел на десятки миллионов (до сотни не дотягиваем) с учётом возможности партиционирования табличной модели - в принципе по стресс-тестам на латентность (от выстрела запроса в сессию, до получения полного result/dataset на клиенте) работает вполне приемлемо (по крайней мере для наших целей). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 22:56 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
Критик, vikkiv вроде взрослые люди.. какой короткий тип (про биты вообще молчу).. мы про SSAS, а не про SQL. нет в нем никаких других типов даты, и все 20 с лишним лет не менялся никогда. причем даже прямого соответствия SQL типу нет. В SSAS Datetime это OLE-шный date с внутренним хранением в типе double (8!!! байт). да и рекомендации никуда не делись - int самый быстрый для SSAS тип ключа. я про MD, если че... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 23:19 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
Я так понял, что выше несколько отошли от темы - включили в обсуждение и само хранилище. В нем я сейчас делаю только date и перевожу старые таблицы на него, если бизнес-требования это позволяют. При процессинге MD-проектов, наверное, лучше конвертить в такой int, благо, затраты cpu на это невелики, но тесты я не проводил. Если у кого есть результаты хотя бы по изменению объему куба, то было бы интересно ознакомиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2020, 23:58 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 06:55 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
a_voronin DaniilSeryi, Все проекты, которые я видел, делались на дате cконвертированной в INT. 20191231 В OLAP есть KeyField, NameField, DataField, SortField -- все могут быть разными. Обычно дату как дату кладут в DataField. Проблема не с датами, а с временем. Пока руки мыл, оформилась окончательно мысль отдельное измерение для времени создать. Если только часы и минуты хранить, то получаем 24*60=1440 записей, что вполне приемлемо, imho. С секундами 24*60*60=86400 записей, но к чему нужна такая точность? Не космические корабли запускаем, и вообще не запускаем, а фиксируем, и даже не фиксируем, а отчётность на основе чужих данных строим, и есть предположение, что будет востребовано заказчиками только измерение дат. Получаем в итоге отдельно измерение даты и отдельно измерение времени, что даёт возможность гибко настраивать кучу самых разных выгрузок и отчётов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 10:09 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
Всем огромная искренняя благодарность за идеи и их обсуждения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 10:16 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
DaniilSeryi, еще пара хинтов: в измерении времени кроме часов удобно бывает сделать еще атрибуты с интервалами в 5-10-15-30 минут например, данные снимаются и/или записываются нерегулярно, где-то чаще, где-то реже и в отчетах поминутно получаются дыры, а по часам слишком большой интервал. агрегация данных более крупными частями чем минута помогает в таких случаях. и/или второй вариант еще одно измерение и группа мер: интервалы с начала суток + связи M2M с группами мер реальных данных очень сильно помогает в случаях когда нужен накопительный итог на любую точку в конкретной дате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 14:10 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
ShIgor, Интересная идея, надо будет обдумать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 17:03 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
DaniilSeryi, Смотря для чего вам это нужно, возможно, устроит простая разбивка на рабочее и нерабочее время ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 17:05 |
|
||
|
Измерение по полю datetime - жуткий изврат или нет?
|
|||
|---|---|---|---|
|
#18+
Критик DaniilSeryi, Смотря для чего вам это нужно, возможно, устроит простая разбивка на рабочее и нерабочее время Тут из переписки выяснилось, что у заказчиков даже секунды/миллисекунды могут решать, м-да. Придётся оригинальные поля datetime сохранить как дополнительные атрибуты в измерениях объектов, как, впрочем, и планировалось. С другой стороны, эти нюансы уже не имеют отношения ни к оригинальному ТЗ отчёта, ни к кубу на его основе. А нового ТЗ до сих пор нет. И самое забавное - до сих пор непонятно, какие вообще меры в кубе будут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2020, 17:21 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=39928252&tid=1857369]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 367ms |

| 0 / 0 |

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.