| 
 | 
| 
 
Измерение по полю 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=39928211&tid=1857369]:  | 
    0ms | 
get settings:  | 
    8ms | 
get forum list:  | 
    14ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    64ms | 
get topic data:  | 
    11ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    53ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 237ms | 
| total: | 400ms | 

| 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...