Создаем OLAP куб. Часть 2

    OLAP

    Итак, продолжаем создавать куб.
    Напомню, что в предыдущей статье, мы создавали Data Warehouse для хранения голосов хабра-пользователей за хабра-топики. Для тех, кто хочет начать сразу создавать куб, я выложил скрипт, который создает и наполняет хранилище (на моей машине скрипт занял 10 минут и нагенерил 1866268 хабра-голосов).
    Для того, чтобы создать OLAP куб, нам понадобится:
    • SQL Server, на котором хранится наш HabraDW (подойдет любой);
    • Microsoft SQL Server, с запущенными Analysis Services (2005/2008);
    • Business Intelligence Studio, которая входит в пакет клиентских приложений для Microsoft SQL Server-а, и интегрируется с Visual Studio, если она у вас установлена (2005/2008);


    Начнем-с.



    Запускаем Business Intelligence Studio, меню File->New->Project, выбираем Analysis Services Project в закладке Business Intelligence Projects:

    New Project

    Называем проект (я назвал HabraCube).
    В созданном проекте, в Solution Explorer видим:

    Solution Explorer

    Что-то подсказывает, что надо просто «заполнять» папочки сверху вниз – и таки да, правый клик на папке Data Sources –> New Data Sources.
    В окне Data Source Wizard создаем connection к базе данных HabraDW, как видим – хранилищем может выступать все что угодно, лишь бы был драйвер, через который можно достать данные.

    Переходим на следующий уровень – правый клик на папочке Data Source Views –> New Data Source View.
    В окне Data Source View Wizard выбираем нами созданный connection к HabraDW (по умолчанию он у вас будет называться Habra DW), и на следующей странице видим таблички нашего хранилища.

    Data Source View

    Замечу, удобство кнопочки Add Related Tables — в случае, если ваше хранилище содержит очень много таблиц, иногда сложно выбрать именно те, которые будут нужны для куба. Кнопка Add Related Tables добавляет все таблицы, от которых зависит выбранная в данный момент, то есть, выбрав, например, таблицу фактов, можно за один клик перенести таблицы измерений, которые нужны для данных фактов.

    Итак, завершаем визард, видим знакомую схему таблиц и переходим на следующий уровень.

    Правый клик на папочке Cube -> New Cube (знаю-знаю, пока что все очень просто, но никто же и не говорил, что будет сложно ;-)).

    В окне Cube Wizard оставляем, выбранный по умолчанию, режим создания куба из Data Source-а, и Auto build, Create attributes and hierarchies. Далее, выбираем наш Habra DW data source view, созданный на предыдущем шаге, и после коротенького анализа студией метаданных хранилища, переходим к идентификации фактов и измерений.

    Identify Facts

    Как видим, за нас уже выбрали таблицу FactHabravote как таблицу фактов и все Dim* таблицы как таблицы измерений. Все что нам нужно указать самому – это измерение времени вверху. Помните, я как-то говорил, что времени в OLAP уделено особое значение, вот тут мы его и должны аккуратно определить. Заходим на следующую страницу визарда и маппим колонки из таблицы DimTime с логическими определениями времени (год, месяц, день, день недели и т.п.).
    Мой маппинг следующий:
    • Year -> CalendarYear
    • Month -> MonthName
    • Date -> FullDate
    • Day of Week -> DayNameOfWeek
    • Day of Month -> DayNumberOfMonth

    Следующая страница показывает нам те числовые данные (Measures), которые мы сможем анализировать в кубе – в нашем случае, оставляем выбранным меру Vote – это фактическое значение голоса, и Fact Habravote Count – это количество записей в таблице (эту меру можно сразу переименовать, например, в Votes Count).

    Далее, переходим на страницу Review New Dimensions, убеждаемся, что измерения выглядят так, как мы хотим, и удивляемся, что в измерении DimTime студия сама определила иерархию Calendar Year — Month Name — Full Date, состоящую из года, месяцев и дней.

    Review New Dimensions

    Замечу, что факт определения иерархии никак не связан с тем, что перед этим мы указали таблицу DimTime как измерение времени, то есть если бы у нас в данных, например, в таблице DimPost, была логическая иерархия, скажем Category->Blog->Post Title, то студия ее бы тоже определила и построила с большой вероятностью, проанализировав все или часть самих данных.

    Ну что же, на последнем странице, даем красивое название нашему кубу (например, HabraCube) и нажимаем кнопку Finish.

    Куб готов, и наш Solution Explorer теперь принимает следующий вид:

    Solution Explorer After

    Не вдаваясь пока в подробности того, что у нас в итоге сгенерилось (об этом в следующей статье), давайте запаблишим наш куб на сервер и подготовим его к работе.
    Правый клик на проекте HabraCube (да-да, тут почти все делается правым кликом) – выбираем Properties и на закладке Deployment, указываем Server, на котором запущены Analysis Services и имя базы данных куба (по умолчанию HabraCube – нам подходит).
    Итак, еще один правый клик на проекте HabraCube, выбираем Process..., и через несколько секунд – кнопочку Run…

    Если вы все сделали правильно, на сервере запущены сервисы и у вашего Windows — аккаунта есть туда доступ и права на создание многомерной базы данных, то вы получите радостное окошко и надпись Process succeeded.

    Process

    Мои поздравления!
    А что теперь? Ну… я бы оставил сам анализ куба для следующих постов, но кому очень нетерпится – после закрытия окон Process, перейдите на сааамую дальнюю закладку Browser в открытом окне редактирования куба (если вы ничего не трогали, то оно как раз должно быть открыто перед вами):

    Browser Bar

    Ну а дальше – полностью на вашу фантазию. Вот что, например, получилось у меня:

    Browser Result

    Заключение.



    И все же — насколько эффективно пользоваться визардами? Скажу так — для средней продакшин системы, после визардов еще достаточно много нужно «подпилить». Сами визарды созданы больше в презентационных целях, и очень помогают, если вы до этого о кубах знали только из курса школьной геометрии.
    Но, как и в любой другой сфере, только «вручную» можно в полной мере передать все тонкости и построить наиболее эффективную систему, поэтому, пользуясь визардом нужно обязательно знать, что именно он вам сгенерить, и где нужно будет подправить, то, что он сгенерит.

    Анонсы следующих серий:
    • Совсем немного XMLA (ой!), а также, разбираем и правим то, что нам нагенерили визарды;
    • Анализируем куб!
    • MDX

    (продолжение следует...)
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 34

      +1
      Спасибо.
      С вашей подачи я понял, что за OLAP будущее (т.е. это круто).
      Буду вникать дальше.

        +4
        Эхх… А я то думал будем самопальный OLAP сооружать, писать процедуры агрегации и все такое :) а нет, все таки Analysis Services, но все равно неплохо, держите плюсик :)
          +1
          Продолжайте, пожалуйста.
            +2
            Автор молодец, жаль что не написал эти статьи раньше, когда я сам был на этих этапах, кстати делюсь ссылкой на хорошие видео по OLAP да и MSSAL вцелом www.msdev.com/Directory/SearchResults.aspx?keyword=Analysis+Services,
            так вот, собственно к вопросу, 2Vitko поделись ссылками плз как взаимодействовать с созданными кубами web-приложению на .NET
              0
              Спасибо за ссылку. Там много полезного.
                0
                Спасибо за ссылку. По поводу программного доступа к OLAP — как раз собирался написать в «продолжении». Если очень по-быстрому, то нужно скачать библиотеку ADOMD отсюда: www.microsoft.com/downloads/details.aspx?FamilyID=790d631b-bff9-4f4a-b648-e9209e6ac8ad&displaylang=en
                А пример есть тут: msdn.microsoft.com/en-us/library/bb283232.aspx
                  0
                  а без IE не светит, да?
                    +1
                    Можно и без IE, все зависит как ты реализуешь взаимодействие с OLAP. В конце-концов это обычное веб-приложение будет. вот пример готового компонента для Visual Studio:
                    demos3.dundas.com/OlapDemo62/
                      0
                      Не не, я про видеоуроки, просит IE
                        0
                        Там разделение роликов по типам: IE требуют VirtualLabs, Web Seminars смотрю в последнем FF.
                  +1
                  Спасибо, пишите еще, пожалуйста. OLAP у микрософта действительно круто сделан (особенно начиная с 2005 AS).
                    0
                    опять не понимаю в чём крутость этих кубов. можно ли пояснить пожалуйста вкратце?
                      0
                      Анализ) как минимум 3х сторонний
                        +2
                        Не самый удачный пример, но всё же:
                        Есть график. Оси X,Y. То есть две меры, например есть время и температура.
                        На графике получается кривая зависимости температуры от времени.
                        Добавляем ось Z, например давление. Кривая становиться 3-х мерной, в объеме,
                        так как зависит сразу от трех карактеристик.

                        А теперь представь себе что осей может быть N штук.
                        То есть можно построить N-мерную зависимость. А смотреть на срезы любых осей можно в кросс-таблице или как то иначе.
                        Суть «куба» в сведении зависимой информации.
                        Ещё нужно учитывать детализацию измерений и агрегаты на этих измерениях.

                        «Куб» здесь не стоит воспринимать как кубик-рубика, то есть в обычном геометрическом смысле.
                        Правильнее назвать «Гиперкуб» или «N-мерное информационное простанство».

                        Я потратил 2 года на изучение и анализ этой темы, в результате получилась неплохая софтина и диплом в универе.
                          0
                          очень и очень большое спасибо. однако чтобы понимать всю прелесть гиперкубов, необходимо понимать как данные можно представить в таком виде и что пытаешься получить. однако думаю это не все. в любом случае тему необходимо глубоко капнуть, чтобы почувствовать мощь (я так понимаю она присутствует).
                            +1
                            Если копнуть глубже, то от расширения сознания возникает понимание, что Эдгар Кодд был божественным гением чтобы придумать такую гениальную вещь…
                        +2
                        Автор, огромная просьба не пользуйтесь ifolder.ru
                        Я понимаю, что кроме Москвы нигде жизни нет :) но пять минут лазить по рекламным сайтам чтобы скачать 4к скрипта… :)

                        Вот для исходников есть
                        pastebin.com
                          0
                            0
                            Спасибо.

                            Правда я скачал еще когда коментарий писал :) Просто пришлось походить по рекламе :)
                            Так как
                            «иностранный трафик для данного файла превысил российский» :)
                              0
                              Там не суть важно иностранный или Российский, из Питера(думаю как и из Москвы) точно так же почти всегда реклама
                            0
                            Замечание принято :) — исправлюсь.
                            +2
                            click-click-click
                            • НЛО прилетело и опубликовало эту надпись здесь
                                0
                                Опенсурсный Mondrian OLAP Server
                                +1
                                Большое спасибо.
                                Раньше страшно было вникать в OLAP.
                                Сейчас понял, что при желании их можно прикрутить даже к 1С =)
                                  +1
                                  Радует что кто-то обращает внимание на OLAP, а то обычный среднестатистический разработчик даже не знает что это такое. Правда ИМХО OLAP это удел спецов по базам, а не рядовых разработчиков.

                                  Ммм, есть соблазн начать такую же серию по BizTalk…
                                    0
                                    С удовольствием почитал бы о BizTalk, пишите, пожалуйста.
                                      0
                                      Я на самом деле до того как посты про OLAP появились сам думал о нем писать. В частности про то, как DSL на F# может конвертироваться в MDX.

                                      На самом деле, ИМХО, если говорить про data mining то начинать нужно со статистики — корреляции, регрессии, медиаторы, и все такое.
                                    +1
                                    ну где же продолжение, уже не терпится=)
                                      0
                                      ага, я тоже хочу. автор, где ты? ;)
                                        0
                                        Статья на подходе — скоро будет ;)
                                        0
                                        когда?:)
                                        0
                                        Пожалуйста, Vitko перезалейте картинки. Ваша статья, еще актуальна и сейчас.

                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                        Самое читаемое